在Linux系统中设置系统安全审计,核心是通过auditd服务实现系统操作的全程记录,方便后续安全排查和合规性检查。auditd是Linux内核自带的审计框架的用户态组件,能够捕获系统调用、文件访问、用户登录等各类事件,是服务器安全防护的重要工具。

安装并启动auditd服务
大多数主流Linux发行版默认已经预装了auditd,若未安装可通过对应包管理器手动安装。
不同发行版安装命令
- CentOS/RHEL系统:
yum install audit - Ubuntu/Debian系统:
apt-get install auditd
安装完成后需要启动服务并设置开机自启,避免服务重启后审计功能失效。
# 启动auditd服务 systemctl start auditd # 设置开机自启 systemctl enable auditd # 检查服务运行状态 systemctl status auditd
配置基础审计规则
auditd的审计规则分为临时规则和永久规则,临时规则重启后会失效,永久规则需要写入配置文件持久化保存。
临时规则配置
使用auditctl命令可以添加临时审计规则,以下是几个常用场景的示例。
# 监控/etc/passwd文件的读写和属性修改操作 auditctl -w /etc/passwd -p rwxa -k passwd_change # 监控所有用户的登录和注销操作,关联系统调用 auditctl -a always,exit -F arch=b64 -S login -S logout -k user_login # 监控sudo命令的执行操作 auditctl -a always,exit -F arch=b64 -S execve -F path=/usr/bin/sudo -k sudo_exec
规则中的参数说明:-w指定监控的文件路径,-p指定监控的权限类型(r读、w写、x执行、a属性修改),-k指定规则标签方便后续日志筛选,-a指定规则添加到对应队列,-F指定过滤条件,-S指定监控的系统调用。
永久规则配置
临时规则在系统重启后会丢失,需要将规则写入/etc/audit/rules.d/audit.rules文件实现持久化。以下是上述临时规则对应的永久配置内容。
# 监控/etc/passwd文件操作 -w /etc/passwd -p rwxa -k passwd_change # 监控用户登录注销 -a always,exit -F arch=b64 -S login -S logout -k user_login # 监控sudo执行 -a always,exit -F arch=b64 -S execve -F path=/usr/bin/sudo -k sudo_exec
写入完成后执行以下命令让规则生效:
# 重新加载审计规则 augenrules --load # 验证规则是否生效 auditctl -l
审计日志查看与分析
auditd的审计日志默认存储在/var/log/audit/audit.log文件中,直接查看原始日志可读性较差,可结合ausearch和aureport工具进行分析。
使用ausearch筛选日志
ausearch可以根据规则标签、时间、事件类型等条件筛选日志,以下是常用示例。
# 根据规则标签passwd_change筛选相关日志 ausearch -k passwd_change # 查看今天的所有审计日志 ausearch --start today # 查看指定用户的操作日志,uid替换为实际用户ID ausearch -ui 1000
使用aureport生成统计报告
aureport可以生成格式化的审计报告,方便快速了解系统审计概况。
# 生成所有事件的汇总报告 aureport # 生成用户登录相关的报告 aureport -l # 生成文件访问相关的报告 aureport -f
审计日志的日常维护
审计日志会持续增长,需要做好日志轮转和存储空间管理,避免日志占满磁盘影响系统运行。
Linux系统默认已经配置了audit.log的日志轮转规则,配置文件为/etc/logrotate.d/audit,可以根据实际需求调整轮转周期和保留份数。同时可以设置日志大小阈值,当日志达到指定大小时自动触发告警,方便管理员及时处理。
注意事项
- 审计规则不宜设置过多,否则会产生大量冗余日志,增加存储和分析压力,建议只监控关键文件和核心操作。
- 审计日志属于敏感数据,需要设置严格的文件权限,避免非授权用户查看或篡改。
- 定期备份审计日志,防止日志丢失导致安全事件无法追溯。