日志是安全排查的第一手资料

系统层面的关键日志位置:

  • /var/log/auth.log(Debian/Ubuntu)或 journalctl -u sshd:登录与认证记录
  • /var/log/syslog / journalctl:系统级事件
  • /var/log/nginx/access.log:Web 访问记录
  • auditd 日志(/var/log/audit/audit.log):文件访问与系统调用审计

快速排查异常登录

# 查看最近登录成功记录
last -20

# 查看登录失败记录
sudo grep "Failed password" /var/log/auth.log | tail -50

# 统计失败登录来源 IP 排名
sudo grep "Failed password" /var/log/auth.log \
  | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head

使用 auditd 监控关键文件

sudo apt install auditd
sudo systemctl enable --now auditd

# 监控 /etc/passwd 的写入操作
sudo auditctl -w /etc/passwd -p wa -k passwd_changes

# 查询相关审计记录
sudo ausearch -k passwd_changes

规则可写入 /etc/audit/rules.d/audit.rules 实现持久化,重启后仍然生效。

轻量级入侵检测:AIDE

AIDE(Advanced Intrusion Detection Environment)通过文件完整性校验发现未授权变更:

sudo apt install aide
sudo aideinit
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db

# 定期检查
sudo aide --check

建议配合 cron 或 systemd timer 定期执行检查,并将结果发送到独立的日志收集系统,避免攻击者篡改本机日志后不留痕迹。

集中化日志的价值

单机日志容易被入侵者清除或篡改。对多台服务器场景,建议将日志实时转发到独立的日志服务器或云端日志服务(如通过 rsyslog 转发),确保即便主机被攻陷,审计记录依然可追溯。

# /etc/rsyslog.d/50-forward.conf
*.* @@log-server.internal:514

小结

日志审计的核心不在于工具本身,而在于是否建立了“定期检查 + 集中存储 + 关键指标告警”的闭环流程。auditd 与 AIDE 是入门级但足够实用的组合。