LINUX SB搜索关键词

分享一个简单web防护策略精华

672
  • devsb

    最近给一台服务器加了点简单防护,用的是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
  • silver chariot
    #1

    可以直接套个开源的项目 雷池WAF

  • devsb
    #2

    @silver chariot #1 感谢,有项目在用,实际有版本有bug会导致磁盘卡死,并且较重

发表回复

登录后回复