SuperAPI AI 工具集

fail2ban

部署与运维

查看项目

更新于 10-15 20:33

技能介绍

用途:Fail2ban 读取 Nginx/FastAPI 日志,自动封禁产生过多 401、403 或 429 错误的 IP,与 Redis 限流互补,在 iptables/nftables 层面封禁,比在应用层拒绝更高效。

安装位置:在运行 Nginx 的节点上安装;内核级(iptables)封禁可在数据包到达 Nginx 前拒绝,更适合防护流量型攻击。

主要用法:在 Nginx 主机执行 apt-get install fail2ban。创建 /etc/fail2ban/jail.d/kyc-nginx.conf,配置 kyc-nginx-auth(port=443、filter=kyc-nginx-auth、logpath=/var/log/nginx/access.log、maxretry=10、findtime=300、bantime=86400)与 kyc-nginx-ratelimit(maxretry=20、findtime=60、bantime=3600)。创建过滤规则 /etc/fail2ban/filter.d/kyc-nginx-auth.conf,failregex = ^."status":40[13]."remote_addr":"<HOST>".$;429 的过滤规则为 ^."status":429."remote_addr":"<HOST>".$。执行 systemctl restart fail2ban 重启,用 fail2ban-client status kyc-nginx-auth 验证。用 ignoreip = 127.0.0.1/8 10.0.0.0/8 将内部与监控 IP 加入白名单。

适用场景:Nginx/FastAPI 节点防护暴力认证与滥用请求。

限制与注意事项:在 Kubernetes 中 Fail2ban 必须运行在 Nginx 所在节点(DaemonSet 或宿主机),不能作为 sidecar,因为它需要访问宿主机的 iptables。多节点间可通过 fail2ban-client 配合 Redis 或共享 ipset 同步封禁。建议采用渐进式封禁时长:首次 1 小时、第二次 24 小时、第三次永久。