最近,我们在一台 CentOS 7.3 服务器上启用了auditd,在查看一些基本报告时,我注意到有大量失败的事件,比如每天大约 10K:
# aureport -x --failed | grep 03/29 | wc -l
10454
我试图了解其中一些失败的事件,但我还没有走得太远。更常见的事件之一的示例,事件 8339524:
grep 8339524 audit.log
audit.log:node=hostname1.internal type=SYSCALL msg=audit(1490796601.096:8339524): arch=c000003e syscall=2 success=no exit=-6 a0=4a9037 a1=802 a2=6eb028 a3=7ffe761484d0 items=1 ppid=16090 pid=16094 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=301903 comm="sh" exe="/usr/bin/bash" subj=system_u:system_r:system_cronjob_t:s0-s0:c0.c1023 key="root"
audit.log:node=hostname1.internal type=PATH msg=audit(1490796601.096:8339524): item=0 name="/dev/tty" inode=1036 dev=00:05 mode=020666 ouid=0 ogid=5 rdev=05:00 obj=system_u:object_r:devtty_t:s0 objtype=NORMAL
我可以看到用户 root 执行了“sh”命令,但是到底启动了什么,即系统上发生了什么?我知道 ausearch 以人类可读的形式解释该事件,但这似乎并没有传达太多新的信息:
# ausearch --interpret -a 8339524
----
node=hostname1.internal type=PATH msg=audit(03/29/2017 16:10:01.096:8339524) : item=0 name=/dev/tty inode=1036 dev=00:05 mode=character,666 ouid=root ogid=tty rdev=05:00 obj=system_u:object_r:devtty_t:s0 objtype=NORMAL
node=hostname1.internal type=SYSCALL msg=audit(03/29/2017 16:10:01.096:8339524) : arch=x86_64 syscall=open success=no exit=ENXIO(No such device or address) a0=0x4a9037 a1=O_RDWR|O_NONBLOCK a2=0x6eb028 a3=0x7ffe761484d0 items=1 ppid=16090 pid=16094 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=(none) ses=301903 comm=sh exe=/usr/bin/bash subj=system_u:system_r:system_cronjob_t:s0-s0:c0.c1023 key=root
这是打开 /dev/tty 的问题吗?由于设备文件在那里并且看起来就像其他终端一样。另外, subj=system_u:system_r:system_cronjob_t 是否表明这是与 cron 作业相关的事情?服务器 crontab 中的唯一条目设置为每小时 */3 运行,因此它与事件的 16:10 时间戳不对应。