CentOS系统内置的auditd审计服务可以完整记录系统中的各类操作行为,通过分析审计日志能够有效发现未经授权的访问、异常操作等安全隐患,是系统安全防护的重要工具。
审计服务基础配置
首先确认auditd服务是否已经安装并运行,CentOS系统默认会预装该服务,若未安装可以通过yum命令安装:
# 检查auditd服务状态 systemctl status auditd # 若未安装则执行安装 yum install -y audit # 启动并设置开机自启 systemctl start auditd systemctl enable auditd
设置关键审计规则
通过auditctl命令可以临时设置审计规则,若需要规则永久生效,需要将规则写入/etc/audit/rules.d/目录下的规则文件中,以下为常用的监测未授权访问的规则配置:
监测敏感文件访问
对/etc/passwd、/etc/shadow等存储用户信息的敏感文件设置读写审计规则,任何对这些文件的操作都会被记录:
# 临时规则,重启后失效 auditctl -w /etc/passwd -p rwxa -k passwd_change auditctl -w /etc/shadow -p rwxa -k shadow_change # 永久规则,写入/etc/audit/rules.d/audit.rules echo "-w /etc/passwd -p rwxa -k passwd_change" >> /etc/audit/rules.d/audit.rules echo "-w /etc/shadow -p rwxa -k shadow_change" >> /etc/audit/rules.d/audit.rules
上述规则中,-w指定要监测的文件路径,-p指定监测的权限类型,r表示读、w表示写、x表示执行、a表示属性修改,-k指定规则的关键字,方便后续筛选日志。
监测异常用户操作
监测su、sudo等提权操作的执行情况,以及root用户的登录行为:
# 监测su命令执行 auditctl -w /usr/bin/su -p x -k su_exec # 监测sudo命令执行 auditctl -w /usr/bin/sudo -p x -k sudo_exec # 监测root用户登录 auditctl -a always,exit -F arch=b64 -F euid=0 -S execve -k root_exec
审计日志查看与筛选
审计日志默认存储在/var/log/audit/audit.log文件中,直接查看内容较为杂乱,建议使用ausearch命令进行筛选查询:
按关键字筛选日志
查询之前设置的passwd_change关键字相关的日志,查看是否有未授权的/etc/passwd文件修改操作:
ausearch -k passwd_change
按时间范围筛选日志
查询最近1小时内的所有审计日志:
ausearch -ts recent
也可以指定具体的时间范围,例如查询2024年5月1日8点到10点的日志:
ausearch -ts 05/01/2024 08:00:00 -te 05/01/2024 10:00:00
按用户筛选日志
查询指定用户ID的操作日志,例如查询用户ID为1000的所有操作:
ausearch -ui 1000
未授权访问识别技巧
在审计日志中,若出现以下特征,大概率存在未经授权的访问行为:
- 非管理员用户对/etc/passwd、/etc/shadow等敏感文件有写操作记录
- 未授权的su、sudo提权操作记录,且操作时间不在正常运维时段
- root用户执行了未知的命令,或者命令路径不在常规系统命令目录中
- 大量失败的登录尝试记录,可能是暴力破解攻击
对于识别到的异常日志,可以进一步通过auseport命令查看详细的事件上下文,定位操作来源IP、进程信息等,及时采取封禁IP、修改密码等防护措施。
审计规则持久化与维护
临时设置的auditctl规则在系统重启后会失效,若需要规则永久生效,除了写入/etc/audit/rules.d/目录下的文件外,还需要重启auditd服务加载规则:
# 重启auditd服务加载新规则 systemctl restart auditd # 查看当前生效的所有审计规则 auditctl -l
定期清理过期的审计日志可以避免磁盘空间占用过高,系统默认会通过logrotate工具自动轮转审计日志,也可以手动调整/etc/logrotate.d/auditd配置文件中的轮转策略,根据系统实际情况设置日志保留时长。