登录日志审计筛查异常爆破账号及时拦截:登录日志审计

为什么需要筛查登录日志中的异常爆破账号

暴力破解(爆破)是服务器最常见的攻击方式之一。
攻击者通过脚本持续尝试不同的用户名和密码组合,试图登录你的服务器。
如果不及时发现并拦截,轻则资源占用,重则服务器被入侵。

通过分析系统的登录日志(Linux 一般为 /var/log/secure/var/log/auth.log),你可以快速找出短时间内大量登录失败的 IP 和账号,然后手动或自动封禁这些 IP。
下面我们按步骤来操作。

第一步:找到并查看登录日志文件

登录你的服务器(SSH),使用以下命令查看日志是否存在:

ls -lh /var/log/secure

如果文件不存在(多见于 Debian/Ubuntu 系统),路径通常是 /var/log/auth.log

ls -lh /var/log/auth.log
注意:你需要 root 权限或 sudo 才能读取这些文件。如果提示权限不足,在前面加上 sudo

第二步:筛选失败登录记录,找出爆破行为

使用 grep 命令从日志中过滤出含 "Failed password" 的行,示例:

sudo grep "Failed password" /var/log/secure | head -20

输出类似:

Feb 20 10:15:23 server sshd[1234]: Failed password for root from 192.168.1.100 port 54321 ssh2
Feb 20 10:15:24 server sshd[1234]: Failed password for root from 192.168.1.100 port 54321 ssh2

如果你只关心特定的登录名(比如 root 或 admin),可以进一步筛选:

sudo grep "Failed password for root" /var/log/secure

要统计每个 IP 的失败次数,可以这样:

sudo grep "Failed password" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -10

这条命令会列出失败次数最多的前 10 个 IP。
如果某个 IP 在短时间内(比如 5 分钟)出现几十甚至上百次失败,基本可以判定为爆破攻击。

第三步:临时封禁可疑 IP(手动方式)

一旦确认了攻击 IP,最直接的方法是使用 iptables 临时阻断(如果系统使用 firewalld 则命令略有不同)。

使用 iptables 封禁 IP

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

192.168.1.100 替换为实际攻击 IP。
此命令立即生效,但重启后失效。
如果你希望规则持久保存,需要安装 iptables-persistent 或使用 firewalld

使用 firewalld 封禁 IP(CentOS 7+/RHEL 7+)

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" drop'
sudo firewall-cmd --reload

如果使用宝塔面板

在宝塔后台左侧点击“安全”,进入“防火墙”页面,在“IP规则”中点击“添加规则”,输入攻击 IP,选择“禁止”,保存即可。

第四步:使用 fail2ban 实现自动封禁

手动封禁只适合临时处理,推荐安装 fail2ban 自动监控日志并封禁反复失败的 IP。
下面以 CentOS 为例:

sudo yum install epel-release -y
sudo yum install fail2ban -y

安装完成后,创建本地配置文件:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

编辑 jail.local,找到 [sshd] 模块,确保启用:

[sshd]
enabled = true
port    = ssh
filter  = sshd
logpath = /var/log/secure
maxretry = 5
bantime = 3600
  • maxretry:失败次数超过此值即封禁(建议 5 次)
  • bantime:封禁时间,单位秒,3600 = 1 小时

启动 fail2ban 并设置开机自启:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

查看拦截情况:

sudo fail2ban-client status sshd

输出会显示当前封禁的 IP 列表和总数。

避坑指南:日志轮转与误封处理

  • 日志轮转:系统每天或每周会轮转日志(如 /var/log/secure-YYYYMMDD),grep 时可以同时查旧文件:sudo grep "Failed password" /var/log/secure*
  • 误封自己的 IP:如果你自己在云服务器上操作,请确保你已经用其他方式(如云控制台 VNC)能连上。设置 fail2ban 时,可以先调大 maxretry 或把自己 IP 加入白名单。
  • 日志权限:部分系统禁止普通用户读取 /var/log/secure,必须使用 sudo。如果执行命令后无输出,先用 sudo -i 切换 root 再试。

效果验证:确认拦截生效

封禁后,
你可以从另一个 IP 尝试登录你的服务器,
输入错误密码超过 maxretry 次数后,
应该会收到类似 Permission denied (publickey) 或直接拒绝连接。

查看 fail2ban 封禁状态:

sudo fail2ban-client status sshd | grep "Banned IP list"

如果你看到之前攻击的 IP,说明已成功拦截。

另外,定期审查日志可以发现未封住的漏网之鱼。
养成每天查看一次 sudo grep "Failed password" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -5 的习惯,能帮你早发现问题。

常见问题 (FAQ)

Q: 日志文件太大,grep 很慢怎么办?
A: 使用 tail -n 10000 /var/log/secure | grep 'Failed password' 只查看最后 10000 行,或者用 head 只看新增部分。也可以启用日志轮转压缩。

Q: 误封了重要 IP 怎么解封?
A: fail2ban 解封:sudo fail2ban-client set sshd unbanip 192.168.1.100;iptables 解封:sudo iptables -D INPUT -s 192.168.1.100 -j DROP

Q: 我的服务器是 Windows 系统,怎么审计登录日志?
A: Windows 可以通过“事件查看器”->“Windows 日志”->“安全”筛选事件 ID 4625(登录失败)来找到爆破 IP。之后通过 Windows 防火墙或安全组手动封禁。

总结

通过以上步骤,你已经掌握登录日志审计的基本方法,能独立筛查异常爆破账号并及时拦截。
推荐在生产环境部署 fail2ban,实现自动化防护。
如果遇到更复杂的场景(如针对非标准端口的爆破),可在此基础上调整相关配置。

分享到:
上一篇
PHP错误日志批量排查网站白屏502故障的五个实战步骤
下一篇
企业微信消息推送服务器故障实时告警
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意