audit简介
audit为linux内核安全体系的重要组成部分,用来记录内核的系统调用,文件修改等事件,用于审计目的。
- auditctl: 面向用户的工具,类似于iptables命令
- auditd: 负责将审计信息写入到/var/
启动auditd服务
auditd作为单独的服务运行在系统上,Redhat系统使用systemctl start auditd
启动服务,启动后通过 ps -ef | grep auditd
查看进程是否启动成功。
auditctl
查看auditd的运行状态1
2
3
4
5
6
7
8
9$ auditctl -s
enabled 1
failure 1
pid 638
rate_limit 0
backlog_limit 8192
lost 0
backlog 0
loginuid_immutable 0 unlocked
查看当前环境规则
1 | $ auditctl -l |
删除所有的audit规则1
2$ auditctl -D
No rules
实践
监控文件变化
- 执行 auditctl -w $file -p wa 来监控文件,比如监控内核参数 auditctl -w /proc/sys/net/ipv4/tcp_retries2 -p wa,其中-p指定了监控文件的行为,支持rwxa。
- 查看文件 cat /proc/sys/net/ipv4/tcp_retries2。
- 使用vim打开文件 vim /proc/sys/net/ipv4/tcp_retries2。
- 执行 ausearch -f /proc/sys/net/ipv4/tcp_retries2 命令查看,可以看到如下的日志
1 | $ ausearch -f /proc/sys/net/ipv4/tcp_retries1 |
监控文件夹变化
监控文件夹同样采用跟上述文件相同的方式,但有个问题是如果文件夹下内容较多,会一起监控,从而导致audit的log内容过多。
监控系统定期reboot
执行如下命令:
1 | auditctl -w /bin/systemctl -p rwxa -k systemd_call |
待系统重启后执行如下命令:
1 | ausearch -f reboot |