为什么要审计
出事的时候——比如服务器被入侵、有数据外泄、有人误删——你需要回答:
- 谁做的
- 什么时候做的
- 改了什么
没有审计 → 全靠猜。审计不会防止坏事,但让事后能定位。
auditd:内核级审计
Linux 自带的审计框架,由 auditd 服务收集事件到 /var/log/audit/audit.log。
# 装
sudo apt install auditd audispd-plugins # Debian/Ubuntu
sudo dnf install audit # RHEL 系
sudo systemctl enable --now auditd
监控关键文件
# 监控 /etc/passwd 的所有写入
sudo auditctl -w /etc/passwd -p wa -k passwd_change
# 监控 /etc/shadow
sudo auditctl -w /etc/shadow -p wa -k shadow_change
# 监控 sudoers
sudo auditctl -w /etc/sudoers -p wa -k sudoers_change
# 监控敏感目录读
sudo auditctl -w /etc/ssh -p rwa -k ssh_config
# 看当前规则
sudo auditctl -l
-p 后跟权限:r 读 / w 写 / x 执行 / a 属性。
持久化规则
写进 /etc/audit/rules.d/audit.rules:
# 关键配置文件
-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 ssh_config
# sudo 调用
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/sudo -k sudo_exec
# 用户 / 组管理命令
-w /usr/sbin/useradd -p x -k user_mgmt
-w /usr/sbin/userdel -p x -k user_mgmt
-w /usr/sbin/usermod -p x -k user_mgmt
sudo systemctl restart auditd
sudo auditctl -l # 验证
查询审计日志
# 看最近事件
sudo ausearch -ts recent
# 按 key 查(前面 -k 标记的)
sudo ausearch -k passwd_change
sudo ausearch -k sudo_exec --start today
# 按 UID 查
sudo ausearch -ui 1000
# 按命令查
sudo ausearch -x /usr/bin/passwd
# 按时间
sudo ausearch -ts "05/09/2026" --end "05/10/2026"
aureport:摘要报告
sudo aureport # 总览
sudo aureport --auth # 认证事件
sudo aureport --login # 登录事件
sudo aureport --failed # 失败事件
sudo aureport -f -i # 文件事件(含解释)
sudo aureport --summary # 系统级汇总
实战:检测 sudo 滥用
# 看谁 sudo 跑了啥
sudo ausearch -k sudo_exec --start today \
| grep -E 'comm|exe|uid'
系统日志同样重要
除了 auditd,正常系统日志也是事后追查的关键:
# 谁登过
last -F | head
last alice
# 失败的登录
lastb | head
# sudo 调用
sudo grep sudo /var/log/auth.log | tail
# SSH 连接
sudo grep sshd /var/log/auth.log | grep "Accepted" | tail
日志安全:防止被改
# 日志文件加 append-only 属性(除非清除属性,否则只能追加)
sudo chattr +a /var/log/auth.log
# 看属性
lsattr /var/log/auth.log
更彻底:日志发到独立服务器——攻击者拿下机器后改不了已发走的日志。
用 rsyslog 远程:
# /etc/rsyslog.d/50-remote.conf
*.* @@log-server.example.com:514
用 SIEM 集中管理
中大型环境用 SIEM(Security Information and Event Management):
- ELK Stack(Elasticsearch + Logstash + Kibana)
- Splunk
- Wazuh
- OSSIM / AlienVault
- Graylog
它们能:
- 聚合多机日志
- 实时关联告警
- 长期归档查询
- 可视化报表
合规视角
不同合规框架对审计的要求不一样,本文不解读条款——常见涉及:
- 等保 2.0 三级以上
- SOC 2 Trust Service Criteria
- PCI DSS
- GDPR / 个保法
具体要求咨询法务和审计师。工程层面,先把 auditd 开起来 + 日志远程留存——是绝大多数框架的最低要求。
下一篇起进入模块九:实战项目。