Oamc

auditd 审计与日志集中

本页目录

场景

等保要求「审计记录保留 6 个月以上」,还要能查谁在什么时候改了关键文件。

前置条件

  • 有独立日志盘或足够的空间
  • 有集中的日志服务器(可选但强烈建议)
  • 知道要审计哪些文件:/etc/passwd、/etc/sudoers、应用配置

配置

# 审计规则
cat >/etc/audit/rules.d/ops.rules <<'EOF'
-w /etc/passwd -p wa -k passwd_change
-w /etc/shadow -p wa -k shadow_change
-w /etc/sudoers -p wa -k sudoers_change
-w /etc/ssh/sshd_config -p wa -k sshd_config
-a always,exit -F arch=b64 -S execve -k exec
EOF

augenrules --load
systemctl restart auditd

# 保留策略
sed -i 's/^max_log_file .*/max_log_file = 100/' /etc/audit/auditd.conf
sed -i 's/^num_logs .*/num_logs = 30/' /etc/audit/auditd.conf

# 集中转发
cat >/etc/rsyslog.d/50-audit.conf <<'EOF'
*.* @@log.corp.local:514
EOF
systemctl restart rsyslog

验证

auditctl -l
ausearch -k passwd_change -ts today
aureport --summary
tail -f /var/log/audit/audit.log

回滚

rm /etc/audit/rules.d/ops.rules
augenrules --load

坑

  • 审计规则加太多,execve 全量审计会把磁盘瞬间写满。
  • 审计日志和业务日志放同一块盘,谁写满都一起死。
  • rsyslog 转发没开 TLS,日志在路上可能被改。
  • 日志时间用 UTC,查的时候对不上本地时间。
  • 只在本机留日志,机器被入侵后日志也被清。
  • 改 auditd.conf 后 restart 才会生效,reload 不够。