Debian SSH日志如何查看和分析
小樊
37
2025-12-12 20:06:13
Debian SSH日志查看与分析
一 日志位置与查看方式
- 日志文件位置:Debian 系统的 SSH 认证日志默认写入 /var/log/auth.log(由 rsyslog 按 facility=auth 收集),使用 systemd 时也可通过 journalctl 查看 sshd 单元日志。
- 常用查看命令:
- 实时查看 auth.log:sudo tail -f /var/log/auth.log
- 查看 systemd 日志:sudo journalctl -u ssh -f(按 Ctrl+C 退出)
- 按时间过滤:sudo journalctl -u ssh --since -5m / -1h / -1d
- 兼容旧版或非 systemd:grep sshd /var/log/auth.log
- 日志轮转:历史日志可能以 auth.log.1、auth.log.2.gz 等形式存在,分析时需一并检查(必要时先解压 .gz 文件)。
二 关键日志与字段解读
- 常见成功与失败关键字:
- 成功:Accepted password / Accepted publickey
- 失败:Failed password / Failed publickey / invalid user
- 典型日志示例:
- 成功:Dec 21 23:25:34 server sshd[1234]: Accepted password for fly123 from 192.168.0.100 port 5031 ssh2
- 失败:Dec 21 13:35:34 server sshd[7632]: Failed password for invalid user fly123 from 192.168.0.100 port 5032 ssh2
- 字段含义与定位:
- 时间戳:如 Dec 21 23:25:34
- 进程:如 sshd[1234]
- 结果:如 Accepted / Failed
- 用户名:如 fly123(失败日志中也可能为 invalid user )
- 来源 IP:如 192.168.0.100(在常见 Debian 日志格式中通常位于倒数第 4 列)
- 端口与协议:如 port 5031 ssh2
- 辅助命令:
- 历史登录会话:last(含 SSH)、last -a | grep ssh
- 最近一次登录:lastlog
- 当前在线用户:w
三 常用分析命令速查
- 成功登录清单(含时间、用户、来源 IP):
- grep "Accepted " /var/log/auth.log | awk ‘{print $1,$2,$3,$9,$11}’
- 失败登录 Top N IP:
- grep "Failed " /var/log/auth.log | awk ‘{print $(NF-3)}’ | sort | uniq -c | sort -nr | head
- 失败登录 Top N 用户:
- grep "Failed " /var/log/auth.log | awk ‘{print $9}’ | sort | uniq -c | sort -nr | head
- 指定 IP 的所有尝试:
- grep “192.168.1.100” /var/log/auth.log
- 指定时间窗口(示例:12:00–18:00):
- awk ‘/sshd.*Failed password for root/ {print $1,$2,$3}’ /var/log/auth.log | awk ‘$2 >= “12:00:00” && $2 <= “18:00:00”’
- 统计某时段失败次数:
- grep “Failed password for root” /var/log/auth.log | awk ‘{print $1}’ | sort | uniq -c
- 归档日志一并分析(含 .gz):
- zcat /var/log/auth.log.*.gz | grep “Failed” | awk ‘{print $(NF-3)}’ | sort | uniq -c | sort -nr
- 实时跟踪失败尝试:
- tail -f /var/log/auth.log | grep --color=auto “Failed”
四 异常排查与安全加固
- 常见异常与日志线索:
- 用户不在白名单:User root from IP not allowed because not listed in AllowUsers
- 密钥算法不被支持:userauth_pubkey: unsupported public key algorithm: ssh-ed25519
- 连接被策略关闭:Connection closed by IP
- 无效用户尝试:input_userauth_request: invalid user root
- 快速处置思路:
- 核对 /etc/ssh/sshd_config 关键项:Port、PermitRootLogin、PasswordAuthentication、PubkeyAuthentication、AllowUsers/AllowGroups;修改后执行 sudo systemctl restart ssh
- 结合日志与网络状态排查:确认服务运行(sudo systemctl status ssh)、端口可达(nc -zv IP 22)、安全组/防火墙放行
- 加固建议:
- 使用 Fail2Ban 自动封禁反复失败的来源 IP:sudo apt install fail2ban
- 优先采用密钥登录并禁用密码:PasswordAuthentication no;必要时更改默认端口(Port 2222)
- 集中化日志:使用 ELK 或 Splunk 做可视化与告警