0aa8fe6
这次没有正文改动。
这是 security/auditd 审计与日志集中.md 的改动记录。后台每次保存都会留一份快照,
这里显示的是快照之间的差异,不会混入其他文章的改动。
还没有后台修改记录。
下面是 Git 里的提交,可能包含其他文章的改动(因为一次提交会带上工作区所有变化)。
0aa8fe6
这次没有正文改动。
69302a9
@@ -0,0 +1,67 @@ +--- +tags: [auditd, 审计, 日志] +order: 20 +--- + +# auditd 审计与日志集中 + +## 场景 + +等保要求「审计记录保留 6 个月以上」,还要能查谁在什么时候改了关键文件。 + +## 前置条件 + +- 有独立日志盘或足够的空间 +- 有集中的日志服务器(可选但强烈建议) +- 知道要审计哪些文件:`/etc/passwd`、`/etc/sudoers`、应用配置 + +## 配置 + +```bash +# 审计规则 +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 +``` + +## 验证 + +```bash +auditctl -l +ausearch -k passwd_change -ts today +aureport --summary +tail -f /var/log/audit/audit.log +``` + +## 回滚 + +```bash +rm /etc/audit/rules.d/ops.rules +augenrules --load +``` + +## 坑 + +- **审计规则加太多**,`execve` 全量审计会把磁盘瞬间写满。 +- 审计日志和业务日志放同一块盘,谁写满都一起死。 +- rsyslog 转发没开 TLS,日志在路上可能被改。 +- 日志时间用 UTC,查的时候对不上本地时间。 +- 只在本机留日志,机器被入侵后日志也被清。 +- 改 `auditd.conf` 后 restart 才会生效,reload 不够。