等保三级要求auditd服务必须启用且实现三权分立:auditd需active运行,审计管理员(auditadmin)仅能只读日志与查询,安全管理员(secadmin)专责规则配置,日志留存180天并防篡改。

auditd 服务是否启用且配置独立审计账户
等保三级要求审计行为必须由独立角色执行,不能由 root 或系统/安全管理员直接操作。如果 auditd 服务开着但所有日志读写权限仍集中在 root 手里,就只是“形似三权”,不满足制衡要求。
先确认服务状态:systemctl is-active auditd 必须返回 active;再检查进程归属:ps -eo user,comm | grep auditd 应显示为 root(服务本身需 root 启动),但关键在后续访问控制。
- 审计管理员账户(如
auditadmin)必须能执行ausearch、aureport、tail /var/log/audit/audit.log,但不能执行auditctl或修改/etc/audit/rules.d/ - 用
sudo -l -U auditadmin验证其可用命令是否严格限定在只读范围,例如只含/usr/sbin/ausearch、/usr/sbin/aureport、/bin/cat等,不含/sbin/auditctl、/usr/bin/audispd - 检查
/var/log/audit/目录权限:ls -ld /var/log/audit应为drwx------且属主是root:audit(不是root:root),组audit需包含auditadmin,且该组无写权限
审计规则是否由安全管理员配置、不可被审计员修改
审计策略(比如监控 chmod、usermod、sudo 的规则)必须由安全管理员(secadmin)通过 auditctl 或规则文件部署,审计管理员只能查、不能配——这是职责分离的硬边界。
常见错误是把所有规则写进 /etc/audit/rules.d/99-default.rules,然后给 auditadmin 加了 sudo 权限去编辑这个文件,等于变相允许其篡改审计策略。
- 运行
auditctl -l查看当前加载规则,确认规则来源是/etc/audit/rules.d/下的文件(而非临时命令行添加) - 检查规则文件属主:
ls -l /etc/audit/rules.d/*.rules应为root:secadmin或root:root,且auditadmin不在所属组中 -
secadmin的sudo权限应明确包含/sbin/auditctl和/bin/systemctl restart auditd,但禁止vi、sed、cp等可修改规则文件的命令
日志文件是否防篡改、留存满180天
审计日志可被删除或覆盖,就失去追溯价值。等保明确要求日志留存不少于180天,且不能被任何管理员(包括 auditadmin)删改。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
光靠 chattr +a 不够——它只防删,不防覆盖;chattr +i 又会让 auditd 写不进新日志。正确做法是组合使用日志轮转与属性锁定。
- 确认
logrotate配置:/etc/logrotate.d/auditd中应有rotate 180或更高值,并启用dateext,避免靠文件名计数出错 - 轮转后旧日志应设为不可修改:
postrotate段落里加chattr +a /var/log/audit/audit.log.*(注意是+a,不是+i) - 检查当前日志文件属性:
lsattr /var/log/audit/audit.log*,主日志(正在写的)应无属性,归档日志应带-----a-------e--标记 - 手动测试:
sudo -u auditadmin rm /var/log/audit/audit.log.20260901应失败;sudo -u auditadmin echo test >> /var/log/audit/audit.log.20260901也应失败(+a允许追加,但不允许覆盖写)
审计管理员能否查看全部操作记录但无法掩盖痕迹
这是最容易被忽略的点:审计员能查日志 ≠ 能查到所有事。如果某些关键操作(如 sudo su -、setenforce 0、systemctl stop auditd)没被规则捕获,或者日志路径不在其 sudo 白名单里,就会形成盲区。
典型陷阱是只给了 /usr/sbin/ausearch 权限,但没给 /usr/sbin/aureport,导致审计员无法生成汇总报告;或只放行 cat /var/log/audit/audit.log,却漏掉压缩归档日志(.gz 文件)。
- 用
sudo -u auditadmin aureport -ts yesterday -te now --key sudo测试是否能查到普通用户提权行为 - 确认
auditadmin的sudo权限包含:/usr/bin/zcat、/usr/bin/zless(用于查看.gz日志)、/usr/sbin/aureport、/usr/sbin/ausearch,且路径带完整参数限制(如/usr/bin/zcat /var/log/audit/audit.log.*.gz) - 检查是否有敏感命令未被审计:运行
auditctl -l | grep -E "(su|sudo|auditctl|systemctl.*stop.*audit)",缺失项需补入规则文件










