安装audit
audit包默认安装在 Centos8中。如果未安装,请使用以下命令添加:
代码语言:javascript复制[root@localhost ~]# yum -y install audit
审计配置文件 /etc/audit/auditd.conf
。该文件包含更改 auditd 守护程序行为的默认参数。
管理审计服务
配置 auditd 后,启动服务来收集审计信息:
代码语言:javascript复制# service auditd start
使用 service 命令而不是 systemctl 的唯一原因是正确记录用户 ID (UID) 值。
设置开机启动:
代码语言:javascript复制# systemctl enable auditd
定义审计规则
使用 auditctl 工具,可以在你想要的任何系统调用上添加审计规则。规则会按顺序执行。
下一步定义监视规则。此规则跟踪文件或目录是否由某些类型的访问触发,包括读取、写入、执行和属性更改。
定义规则的语法是:
代码语言:javascript复制auditctl -w path_to_file -p permissions -k key_name
如要审核用户创建操作,首先,向 /etc/passwd 文件添加监视以跟踪写入和属性更改访问,并添加自定义键以记录所有消息(此自定义键可用于过滤日志消息):
代码语言:javascript复制[root@localhost ~]# auditctl -w /etc/passwd -p wa -k user-modify
接下来,添加一个新用户。这样做会更改 /etc/passwd 文件:
代码语言:javascript复制[root@localhost ~]# useradd user01
最后,检查 auditd 是否记录了更改。默认情况下,auditd 将日志存储在 /var/log/audit/audit.log
文件中:
[root@localhost ~]# cat /var/log/audit/audit.log | grep user-modify
定义持久审计规则
要使audit规则在重新启动后保持不变,请将它们添加到/etc/audit/rules.d/audit.rules
文件中。
下面在 audit.rules 文件中定义持久性规则以监视 /etc/passwd 文件的更改。
代码语言:javascript复制-w /etc/passwd -p wa -k user-modify
保存文件,然后重新加载 auditd 守护程序以实现对规则文件中配置的更改:
代码语言:javascript复制[root@localhost ~]# service auditd reload
可以运行auditctl -l
列出规则:
[root@localhost ~]# auditctl -l
-w /etc/passwd -p wa -k user-modify
最后,添加新用户或更改 /etc/passwd 文件会出发审计。更改记录在 /var/log/audit/audit.log 中,即使系统重新启动,规则仍然存在。
搜索审计日志
使用ausearch
工具搜索审计日志。默认情况下,它搜索 /var/log/audit/audit.log 文件。
例如,要根据 key_name 搜索日志条目,搜索有关user-modify
相关的:
[root@localhost ~]# ausearch -i -k user-modify
创建审计报告
使用 aureport 工具根据审计日志查询和创建审计报告。
代码语言:javascript复制[root@localhost ~]# aureport
查看关于尝试身份验证的报告:
代码语言:javascript复制[root@localhost ~]# aureport -au
Authentication Report
============================================
# date time acct host term exe success event
============================================
1. 11/10/2021 23:42:19 root localhost.localdomain tty1 /usr/bin/login yes 81
2. 11/10/2021 23:44:08 root 192.168.43.1 ssh /usr/sbin/sshd yes 111
3. 11/10/2021 23:54:31 root 192.168.43.1 ssh /usr/sbin/sshd yes 76
4. 11/11/2021 00:44:30 root 192.168.43.1 ssh /usr/sbin/sshd yes 81
5. 11/11/2021 00:58:41 root 192.168.43.1 ssh /usr/sbin/sshd yes 131
6. 11/11/2021 01:13:12 root 192.168.43.1 ssh /usr/sbin/sshd no 156
其中no
代表验证失败。yes
代表验证成功。
总结
在本文中学习了如何使用auditctl 临时定义auditd 规则,并在audit.rules 文件中永久定义。最后分别使用 ausearch 和 aureport 命令搜索了审计日志并生成了审计报告。