Ubuntu日志中识别潜在风险的实用指南
一 核心日志与风险信号
| 日志来源 | 关键风险信号 | 快速命令示例 |
|---|---|---|
| /var/log/auth.log | 多次失败的 SSH 登录、对 root 的尝试、异常来源 IP、异常 sudo 使用 | grep "Failed password" /var/log/auth.log;grep "Accepted" /var/log/auth.log;grep "sudo.*session opened" /var/log/auth.log |
| journalctl(systemd) | 服务异常退出、崩溃重启、内核级错误 | journalctl -p err -b;journalctl -u ssh --since "2025-05-22 08:00" --until "10:00" |
| /var/log/syslog | 系统级 error/warning/failed、守护进程异常 | grep -i "error|fail|critical" /var/log/syslog |
| /var/log/kern.log、dmesg | 硬件故障、驱动报错、I/O 错误、内核安全告警 | `dmesg |
| /var/log/faillog、lastlog、wtmp | 账户被集中尝试、异常登录历史 | faillog;lastlog;last -a |
| /var/log/ufw.log | 被防火墙拒绝的连接、端口扫描迹象 | grep "UFW BLOCK" /var/log/ufw.log |
| /var/log/apache2/access.log、error.log 或 /var/log/nginx/access.log | 大量 404/403、可疑 User-Agent、SQL 注入特征、扫描路径 | `awk ‘$9==404 {print $1}’ /var/log/nginx/access.log |
| /var/log/mysql/error.log | 多次 access denied、异常连接 | grep "access denied" /var/log/mysql/error.log |
| /var/log/audit/audit.log(需 auditd) | 敏感文件访问(如 /etc/shadow)、提权行为 | sudo ausearch -f /etc/shadow;sudo ausearch -m USER_CMD,USER_AUTH |
| 以上路径与信号覆盖了 Ubuntu 上最常见的风险面,适合作为日常巡检与应急处置的清单化起点。 |
二 高频命令与快速筛查
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | headgrep "Accepted" /var/log/auth.loggrep "sudo.*session opened" /var/log/auth.logjournalctl -p err -bjournalctl -u ssh -p err --since todaydmesg | grep -i errorgrep -i "security" /var/log/kern.logfailloglast -aawk '$9==404 {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | headgrep -iE "select|union|insert|drop|sleep" /var/log/nginx/access.log | headgrep "UFW BLOCK" /var/log/ufw.log | awk '{print $8}' | sort | uniq -c | sort -nr | headgrep "access denied" /var/log/mysql/error.log
以上命令覆盖了认证、系统、内核、登录历史、Web、数据库与防火墙等维度的快速排查,可作为日常巡检脚本的基础片段。三 自动化监控与告警
sudo apt install fail2ban logwatch rsyslogsudo logwatch --output mail --mailto you@example.com --detail high/etc/logrotate.d/syslog 示例/var/log/syslog {
daily
rotate 7
compress
missingok
notifempty
}
四 事件响应与取证要点
journalctl --since "2025-05-22 08:00" --until "10:00" 或 grep "May 22 08" /var/log/syslog 聚焦事件时段,避免大海捞针。grep "Accepted" /var/log/auth.log 定位来源 IP/端口/用户。ausearch -m USER_CMD,USER_AUTH 还原关键命令;无审计则结合 journalctl -u ssh 与 bash 历史(注意可能被篡改)。