Linux 系统日志分析:SSH 暴力破解与异常登录检测方法

检查 SSH 失败登录记录

SSH 登录失败的日志通常记录在 /var/log/auth.log/var/log/secure 中,具体路径取决于发行版。使用以下命令筛选失败尝试:

grep "Failed password" /var/log/auth.log

输出会显示失败登录的 IP、用户名和时间戳,高频失败通常是暴力破解的特征。

统计可疑 IP 的失败次数

结合 awksort 统计失败次数最多的 IP:

grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr

结果中排名靠前的 IP 可能是攻击源。例如,某 IP 在短时间内出现数十次失败记录需重点关注。

识别成功登录的异常行为

成功登录记录可通过以下命令筛选:

grep "Accepted password" /var/log/auth.log

检查非工作时间(如凌晨)的成功登录,或非常用用户名(如 root)的登录,可能表明入侵成功。

使用工具自动化分析

工具如 fail2ban 可自动封禁暴力破解 IP。安装后配置 /etc/fail2ban/jail.conf 启用 SSH 保护:

[sshd]
enabled = true
maxretry = 3  # 允许的失败次数
bantime = 3600  # 封禁时长(秒)

检查历史登录会话

last 命令查看近期登录会话:

last

异常用户名、来源 IP 或未授权的登录时间需进一步调查。结合 lastb 查看失败会话记录。

监控实时登录活动

journalctl 实时监控 SSH 活动(Systemd 系统):

journalctl -u sshd -f

动态观察登录尝试,配合 awk 或脚本可实时告警。

加固 SSH 配置建议

修改 /etc/ssh/sshd_config 减少风险:

  • 禁用 root 登录:PermitRootLogin no
  • 限制用户:AllowUsers your_username
  • 更改默认端口:Port 2222
  • 启用密钥认证:PasswordAuthentication no
进阶分析:地理定位可疑 IP

通过 whois 或在线工具(如 ipinfo.io)查询高频攻击 IP 的地理位置,判断是否为已知恶意网络。

自动化脚本示例

以下脚本提取并告警高频失败 IP(需替换邮箱配置):

#!/bin/bash
LOG_FILE="/var/log/auth.log"
THRESHOLD=5
ALERT_EMAIL="admin@example.com"

grep "Failed password" "$LOG_FILE" | awk '{print $11}' | sort | uniq -c | awk -v limit="$THRESHOLD" '$1 > limit {print $2}' | while read IP; do
    echo "警报: IP $IP 超过 $THRESHOLD 次失败登录尝试" | mail -s "SSH 暴力破解警报" "$ALERT_EMAIL"
done

通过以上方法结合自动化工具,可有效识别并响应 SSH 暴力破解和异常登录行为。定期审计日志并更新防护规则是关键。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐