什么是audit?
linux audit子系统是一个用于收集记录系统、内核、用户进程发生的行为事件的一种安全审计系统。该系统可以可靠地收集有关上任何与安全相关(或与安全无关)事件的信息,它可以帮助跟踪在系统上执行过的一些操作。
使用
安装
好像高版本 os 都自带了,没有就 yum install -y audit
1 | systemctl status auditd.service |
例如追踪一个内核参数被谁修改
要注意的是 auditctl 只能临时生效,要想永久生效使用文件 audit.rules
基本信息查看
1 | # 查看状态 |
增加一个 rule
-w
选项增加一个 path 审计,-p
审计权限
1 | $ auditctl -w /proc/sys/net/ipv4/ip_forward -pw -k sysctl-exec |
监听日志:
1 | tailf /var/log/audit/audit.log | grep sysctl-exec |
另一个窗口写入触发审计日志记录
1 | echo 1 > /proc/sys/net/ipv4/ip_forward |
可以看到日志审计到了。
1 | type=SYSCALL msg=audit(1624344618.910:10909123): arch=c000003e syscall=2 success=yes exit=3 a0=166ec40 a1=241 a2=1b6 a3=fffffff0 items=2 ppid=6419 pid=6421 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts3 ses=61322 comm="bash" exe="/usr/bin/bash" key="sysctl-exec" |
使用 pstree 来查看进程树,也就是我另一个终端的 shell
1 | $ pstree -sp 6419 |
清空 rule
1 | auditctl -D |
持久化 rule
建议写到子配置文件里,某些系统主配置文件的内容是等于 子配置文件内容加起来后 > /etc/audit/audit.rules
1 | echo '-w /proc/sys/net/ipv4/ip_forward -p w -k sysctl-exec' > /etc/audit/rules.d/zgz.rules |
参考的一些rule
- kill:
auditctl -a exit,always -F arch=b64 -S kill -k audit_kill
- module:
auditctl -a always,exit -F arch=x86_64 -S delete_module -F key=module-unload