免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7292 | 回复: 7
打印 上一主题 下一主题

[系统管理] 请教抓取所有用户的命令执行日志(带执行时间),类似history [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-10 23:05 |只看该作者 |倒序浏览
大家好,我想配置自动收集每个用户登录系统后的命令执行记录(带有命令执行时间格式的命令执行记录,直接运行history是只显示命令记录,没有命令执行的时间)
我在 /etc/profile 加入以下脚本:
export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] "
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
HISTDIR=/var/log/cmd_audit
if [ -z $USER_IP  ]
then
  USER_IP=`hostname`
fi
if [ ! -d $HISTDIR ]
then
   mkdir -p $HISTDIR
   chmod 755 $HISTDIR
fi
if [ ! -d $HISTDIR/${LOGNAME} ]
then
    mkdir -p $HISTDIR/${LOGNAME}
    chmod 644 $HISTDIR/${LOGNAME}
fi
export HISTFILESIZE=3000
export HISTSIZE=3000
DT=`date +%Y%m%d_%H%M%S`
export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.hist.$DT"
chmod 600 $HISTDIR/${LOGNAME}/*.hist* 2>/dev/null

之后,重登录系统后,发现执行history命令是可以显示带有执行时间格式的命令记录了,如下:
CA-SERVER:~ # history
    1  [2013-01-10 21:46:45] ls -ltr ls -ltr /var/log/cmd_audit/root/192.168.139.1.hist.20130110_211123
    2  [2013-01-10 21:46:53] ls -ltr /var/log/cmd_audit/root/192.168.139.1.hist.20130110_211123
    3  [2013-01-10 21:49:47] echo $HISTFILE
    4  [2013-01-10 21:52:47] history
但,执行history命令时,只会显示本次登录所操作的命令记录,不会包括之前登录操作的命令记录,而且
HISTFILE环境变量里指定的命令记录文件,如以上的 /var/log/cmd_audit/root/192.168.139.1.hist.20130110_211123 文件时
显示的都只有命令,是没有命令执行时间格式的,必须要在当前用户下再次执行 history 命令才会显示带有执行时间格式的命令记录,而且只会显示本次登录的
命令记录。具体你可以将以上脚本放在/etc/profile,重新登录测试一下。

如果要查看其它用户的命令执行记录,还要登录或su到其它用户中,再执行history命令才能显示,这样很不方便,也不现实。
我想实现的功能和以上类似,用户每次登录系统后,生成$HISTDIR/${LOGNAME}/${USER_IP}.hist.$DT 这样格式的命令记录文件,
但$HISTDIR/${LOGNAME}/${USER_IP}.hist.$DT这个文件是要直接包括用户本次登录系统操作的带有命令执行时间的命令记录,格式如下(命令执行时间         执行的命令):
[2013-01-10 21:46:45] ls -ltr /tmp
[2013-01-10 21:46:50] top
---
而不是要登录到各个用户下再运行history收集各个用户的命令执行记录,请问这具体具体该如何实现?

待复,感谢!

论坛徽章:
0
2 [报告]
发表于 2013-01-11 10:39 |只看该作者
有人愿意帮助一下吗?谢谢!

论坛徽章:
0
3 [报告]
发表于 2013-02-17 12:07 |只看该作者
直接修改bash,通过bash本身获取相关信息,在通过syslog发送到log服务器。
网上有这样的文章。

论坛徽章:
0
4 [报告]
发表于 2013-02-17 13:37 |只看该作者
export HISTTIMEFORMAT="%F %T `who am i | awk 'BEGIN{OFS=" ";}{print $1,$2,$5}' ` "
export HISTSIZE=4096

DT=`date "+%Y-%m-%d"`
export DT

HISTORY_FILE=/var/log/audit/$DT-${LOGNAME}.log
export PROMPT_COMMAND='history 1 | { read x cmd; echo "$cmd"; } >>$HISTORY_FILE'

论坛徽章:
0
5 [报告]
发表于 2014-10-16 20:06 |只看该作者
bashrc中加入下面的语句:
PROMPT_COMMAND='history -a >(tee -a ~/.bash_history | logger -t "$USER[$$] $SSH_CONNECTION")'

缺点:su - 用户名  后执行的语句不记录

论坛徽章:
0
6 [报告]
发表于 2015-04-29 22:36 |只看该作者
本帖最后由 hackvssec 于 2015-05-06 15:54 编辑

给你看一张图片,看看你要的是不是这种效果

用日志记录Linux用户执行的每一条命令(history)——问问云

工作中,需要把用户执行的每一个命令都记录下来,并发送到日志服务器的需求,为此我做了一个简单的解决方案。这个方案会实时记录用户所执行的每一个命令都发送给日志守护进程rsyslogd,你也可通过配置“/etc/rsyslog.conf”进一步将日志发送给日志服务器,

vi /etc/profile

#设置history格式
export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [`who am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`] "
#记录shell执行的每一条命令
export PROMPT_COMMAND='\
if [ -z "$OLD_PWD" ];then
    export OLD_PWD=$PWD;
fi;
if [ ! -z "$LAST_CMD" ] && [ "$(history 1)" != "$LAST_CMD" ]; then
    logger -t `whoami`_shell_cmd "[$OLD_PWD]$(history 1)";
fi ;
export LAST_CMD="$(history 1)";
export OLD_PWD=$PWD;'

第三步:把日志发送给远程主机(可选)
# vi /etc/rsyslog.conf
#增加如下行,IP自己换,也可以用域名,@表示用UDP协议,@@表示用TCP协议
*.*  @192.168.0.1

#service rsyslog restart

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-07-13 23:10:20IT运维版块每日发帖之星
日期:2015-07-30 09:40:01
7 [报告]
发表于 2015-08-28 17:27 |只看该作者
你好,大神,我现在也需要做到类似的需求,我怎么把这些输出在/var/log/messages下面的信息重新定义到一个新的文件里面去?
hackvssec 发表于 2015-04-29 22:36
给你看一张图片,看看你要的是不是这种效果

用日志记录Linux用户执行的每一条命令(history)——问问云

论坛徽章:
154
2022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:5720周年集字徽章-年
日期:2022-10-26 16:44:2015-16赛季CBA联赛之深圳
日期:2022-11-02 14:02:4515-16赛季CBA联赛之八一
日期:2022-11-28 12:07:4820周年集字徽章-20	
日期:2023-07-19 08:49:4515-16赛季CBA联赛之八一
日期:2023-11-04 19:23:5115-16赛季CBA联赛之广夏
日期:2023-12-13 18:09:34
8 [报告]
发表于 2015-08-28 23:50 |只看该作者
感觉你们是要做跳板机么,输入密码会不会很安全啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP