您需要配置auditd
以记录execve
事件。在RHEL5上的示例:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve
WARNING - 32/64 bit syscall mismatch, you should specify an arch
[root@ditirlns01 ~]#
我忽略了拱门警告,这似乎无关紧要,但是您可以根据需要使用-F arch=b64
或-F arch=b32
设置它。
上面的结果是:
[root@ditirlns01 ~]# ls /tmp/whatever
ls: /tmp/whatever: No such file or directory
[root@ditirlns01 ~]# grep whatever /var/log/audit/audit.log
type=EXECVE msg=audit(1386797915.232:5527206): argc=3 a0="ls" a1="--color=tty" a2="/tmp/whatever"
type=EXECVE msg=audit(1386797927.133:5527241): argc=3 a0="grep" a1="whatever" a2="/var/log/audit/audit.log"
[root@ditirlns01 ~]#
这显然是快速而肮脏的,但这是您如何做的基础。您需要确切执行的操作可能很大程度上取决于您要精确执行的操作。您可以使用auditctl
命令中的各种过滤器来减少审核流程,但是我不知道这些信息,因此也不知道要包括什么内容。如果您需要更具体的内容,建议您检查手册页或对此答案发表评论,我将对其进行更多更新。
希望能帮助您朝正确的方向前进。
编辑:
由于您的问题涉及查看特定用户,因此我可以向您展示:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F euid=16777216
WARNING - 32/64 bit syscall mismatch, you should specify an arch
与上述相同,但只有execve
使用有效用户ID运行的人员的16777216
才会被记录。如果您需要指定用户的loginuid
值(他们最初以谁身份登录到系统),则可以通过auid
以下方式过滤:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F auid=16777216
WARNING - 32/64 bit syscall mismatch, you should specify an arch
AUID / loginuid过滤器将很有用,例如,如果用户将执行“ a” su
或“ sudo
root”操作。在那种情况下,会有很多东西以root用户身份运行,但是您只关心那些有问题的用户启动的东西。auditctl
还可以让您堆叠过滤器,以便可以同时通过euid
和进行过滤auid
:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F auid=16777216 -F euid=0
WARNING - 32/64 bit syscall mismatch, you should specify an arch
[root@ditirlns01 ~]# ls /tmp/nashly -ltar
ls: /tmp/nashly: No such file or directory
[root@ditirlns01 ~]# grep nashly /var/log/audit/audit.log
type=EXECVE msg=audit(1386798635.199:5529285): argc=4 a0="ls" a1="--color=tty" a2="/tmp/nashly" a3="-ltar"
type=EXECVE msg=audit(1386798646.048:5529286): argc=3 a0="grep" a1="nashly" a2="/var/log/audit/audit.log"