天天看点

Linux使用audit审计用户执行命令

注:本文基于CentOS 6.5编写

1、背景

audit作为审计组件,除了可以监控文件的修改,还可以监控系统调用的执行。受snoopy启发,通过audit监控execve(系统调用,同样可以实现用户操作的记录。

2、配置

audit作为基本组件会随着系统一起安装,就不再介绍安装方式了,反正也可以直接yum安装。

添加如下规则,让audit监控execve的调用记录,

[[email protected] /home]# auditctl -S execve -a exit,always
[[email protected] /home]# auditctl -l
-a always,exit -S execve
           

其中,-S指定监控的系统调用,-a表示添加一条审计规则,在系统调用结束时生成一条审计日志,也就是我们需要的操作日志。

对应,如果要删除该条规则,可如下操作,

[[email protected] /home]# auditctl -d  exit,always -S execve
[[email protected] /home]# auditctl -l
No rules
           

3、效果

配置好审计规则后,执行命令,/var/log/audit/audit.log中会有如下打印,

type=SYSCALL msg=audit(1545212248.965:20000): arch=c000003e syscall=59 success=yes exit=0 a0=1c2d780 a1=1bf2450 a2=1bf1670 a3=7fff0a65d200 items=2 ppid=15571 pid=24347 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts2 ses=127 comm="who" exe="/usr/bin/who" key=(null)
type=EXECVE msg=audit(1545212248.965:20000): argc=1 a0="who"
type=CWD msg=audit(1545212248.965:20000):  cwd="/home"
type=PATH msg=audit(1545212248.965:20000): item=0 name="/usr/bin/who" inode=1314149 dev=08:02 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL
type=PATH msg=audit(1545212248.965:20000): item=1 name=(null) inode=1046932 dev=08:02 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL
           

通过日志,我们便可以知道用户执行了who命令。

4、远程ssh执行命令

同样,audit也可以记录远程ssh执行命令,和snoopy类似,只不过autit日志中充斥了大量无用的一些打印。

...
type=EXECVE msg=audit(1545212408.278:20194): argc=2 a0="/usr/sbin/sshd" a1="-R"
...
type=EXECVE msg=audit(1545212408.365:20212): argc=3 a0="bash" a1="-c" a2="pwd"
           

继续阅读