原子网络科技 原子网络科技

网站后台管理系统暴力破解防护:使用Fail2Ban进行自动封禁和异地登录提醒

a169kai 2026年11月12日 · 阅读约 2 分钟

后台入口被泄露之后,撞库、字典爆破和路径扫描就会很快把日志填满。只有用应用层验证码来提高门槛,并不能从系统的角度来阻止大量的恶意请求。Fail2Ban的作用就是把“日志特征—行为阈值—防火墙封禁—安全告警”这四个环节串联起来形成一个自动化的闭环,不需要人工监控。

防护链路

1. 日志识别

对Nginx/Apache访问日志、SSH认证日志以及业务自定义登录日志进行监控,从中找出401/403高频出现的情况、异常的User-Agent和敏感路径(如/admin、/login、xmlrpc)探测行为等。在反向代理的情况下要先设置好真实的客户端IP地址透传,否则会错误地封锁掉网关。

2. 自动封禁

用filter来设置failregex以及findtime窗口内失败的次数限制:

[admin-login]
enabled  = true
filter   = admin-login
logpath  = /var/log/nginx/access.log
maxretry = 5
findtime = 300
bantime  = 7200
port     = http,https
banaction = nftables-multiport

当超过一定数值时就会调用nftables或者iptables来封锁该IP地址,在时间一到之后会自动解除封锁;对于经常作案的人可以加上recidive监狱来进行逐步延长封锁的时间。

3. 异地登录提醒

登录成功的记录会单独写入日志中,根据IP地址和常用的属地基线来判断是否为“异地”,如果命中了异地的特征的话,并不会阻止用户的请求,但是会发送Webhook(飞书/企微/钉钉)或者邮件通知,包含时间、用户名、IP地址、所属地区以及用户代理等信息。

4. 白名单兜底

在办公网、跳板机和CDN回源节点上设置ignoreip,上线之前使用fail2ban-regex进行正则表达式检查,防止错误地阻止正常的运维操作。

落地要点

  • 业务日志要按格式输出“登录失败/成功”,方便Fail2Ban进行精确匹配
  • 封禁策略根据风险等级来划分:爆破接口严格限制,正常的登录比较宽松
  • 告警分为“封禁事件”、“可疑成功的登录”,后者优先级高
  • 封禁表开启持久化,重启不会丢失数据
  • 高流量的站点使用 journald 或者独立的日志文件来减少正则表达式匹配的时间

总结

Fail2Ban并不是用来取代WAF或者强密码策略的,而是把“试探成本”转嫁给攻击者:自动封禁可以抑制住高频次的暴力破解行为,异地登录告警则填补了“密码已经被泄露”的信息空白。两者结合之后,后台系统抵御撞库的能力以及异常响应的速度都会有所提高。

0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
最旧
最新 最多投票