分享一个简单web防护策略精华
672
最近给一台服务器加了点简单防护,用的是nginx+fail2ban
思路也不复杂
nginx先做限流,比如限制单个ip的请求频率
如果某个ip一直触发限流,或者一直扫一些敏感路径,f2b就去看nginx日志
达到次数以后直接调用系统防火墙把这个ip封一段时间
nginx这边可以先这样限流nginx id="sample" limit_req_zone $binary_remote_addr zone=web_limit:10m rate=10r/s; location / { limit_req zone=web_limit burst=20 nodelay; }f2b再监控 Nginx 日志
[nginx-limit] enabled = true filter = nginx-limit logpath = /var/log/nginx/error.log findtime = 10m maxretry = 20 bantime = 1h比如同一个ip10分钟内连续触发20次,那就直接封1小时
另外f2b自带了几种常用策略,比如做阶梯封禁,第一次只封10分钟,第二次1小时,一直重复就继续往上加
封禁的时候也可以顺便跑自己的脚本,比如发通知等
当然他也不是万能的,因为是先看日志再封,所以请求其实已经到服务器了
比较适合处理那种单ip持续扫描,爆破,刷接口的情况,如果是很多不同ip分散着打,或者直接是ddos把带宽打满.那基本帮不上什么忙如果前面还有CDN或反向贷理等,一定要先把真实客户端 IP 配好,不然f2b看到的可能全是贷理节点ip,会把正常流量一起封了
整体思路:
nginx负责限速
fail2ban负责收拾那些一直搞事情的ip最后由 devsb 编辑于 2026-08-26 15:17- 8小时前
可以直接套个开源的项目 雷池WAF
@silver chariot #1 感谢,有项目在用,实际有版本有bug会导致磁盘卡死,并且较重