linux审核事件未传递给go-audit

我们正在尝试使用slack的go-audit工具来捕获/处理linux审计事件.更多信息:https://github.com/slackhq/go-audit

问题是linux审计是正确地拾取事件,但是这些事件没有通过go-audit来获取,或者没有通过go-audit正确输出.

示例go-audit配置文件已被修改为具有单个规则,用于捕获有关对文件/opt/secret.txt的访问的信息

rules:
- -a exit,always -F path=/opt/secret.txt -F perm=wra -k test_changes

完整的go-audit配置文件在这里:
https://gist.github.com/tom-chaoscube/fc2f14b448650ea4018620bbbf2c3345

运行go-audit后,我们可以看到此规则已成功部署:

# auditctl -l
-w /opt/secret.txt -p rwa -k test_changes

尝试访问该文件,并在审计日志文件中看到审计记录:

$cat secret.txt
# cat /var/log/audit/audit.log

type=SYSCALL msg=audit(1485357520.702:868): arch=c000003e syscall=2 success=yes exit=3 a0=7ffee46830dc a1=0 a2=1fffffffffff0000 a3=7ffee4681670 items=1 ppid=5199 pid=5469 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts5 ses=7 comm="cat" exe="/usr/bin/cat" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="test_changes"
type=CWD msg=audit(1485357520.702:868):  cwd="/opt"
type=PATH msg=audit(1485357520.702:868): item=0 name="secret.txt" inode=26244598 dev=ca:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:usr_t:s0 objtype=NORMAL

但是,在查看go-audit的输出时,不会记录任何事件.我们已经尝试将go-audit设置输出到stdout,也输出到文件.

在go-audit上运行一个strace,看起来它正在打开一个NETLINK套接字,我认为它是与auditd的连接.还可以看出,一些数据是通过套接字接收的,与audit.log中的定期条目一致,但是当审计文件访问审计条目由auditd写入时,似乎没有特别接收任何数据. (不一定能断言).

socket(PF_NETLINK, SOCK_RAW, 9)         = 4
bind(4, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
setsockopt(4, SOL_SOCKET, SO_RCVBUF, [16384], 4) = 0
getsockopt(4, SOL_SOCKET, SO_RCVBUF, [32768], [4]) = 0
... ...
... ...
write(1, "Started processing events\n", 26) = 26
recvfrom(4, "L\0\0\0\2\0\0\0\1\0\0\0\261\25\0\0\357\377\377\3778\0\0\0\351\3\5\0\1\0\0\0"..., 8970, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, [12]) = 76
futex(0xa0f1d0, FUTEX_WAIT, 0, NULL)    = 0

有任何建议:

>为什么去审计不接受事件?
>可以采取进一步的步骤来调查go-audit是否真的在套接字上接收事件信息. (即,确定他们不会在审计方面迷路)的步骤

编辑:我已经在Ubunutu 16.10(以及原来的Centos 7机器)上本地尝试过,并且具有相同的结果.

干杯.

解决方法:

解决.

这个问题的答案是auditd仍然在系统上运行.

只需停止审计并重新启动go-audit即可接收审计数据:

sudo service auditd stop
上一篇:数据库审计


下一篇:调整CPU频率