求:一款 1 分钟(或指定时间内)请求次超过 x 次就将 ip 加入封禁的运维工具 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
herozzm
V2EX    问与答

求:一款 1 分钟(或指定时间内)请求次超过 x 次就将 ip 加入封禁的运维工具

  •  
  •   herozzm 2023-01-06 18:32:19 +08:00 1695 次点击
    这是一个创建于 1011 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Linux 服务器上用的,太多私人爬虫机器人了,变换着 ua 和使用着 ip 爬虫库爬,服务器都爬死了
    15 条回复    2023-01-06 23:51:14 +08:00
    ik
        1
    ik  
       2023-01-06 18:44:21 +08:00 via iPhone
    shell 写一个
    bjzhush
        2
    bjzhush  
       2023-01-06 18:49:13 +08:00
    我第一反应是 ngx_http_limit_req_module ,不过看了下你好像不是要限制频率,要直接封禁。
    我目前有一个在用的方案,稍微有点麻烦,不过也不复杂,用 filebeat 推 nginx log 到 redis 队列,然后自己解析后,需要封禁的 ip 加入 ip 黑名单池。Nginx 每个请求都会通过 lua 脚本读取黑名单池,在池子里面的直接 403 。
    也有个优点,就是可以自己定制封禁逻辑,比较灵活
    Puteulanus
        3
    Puteulanus  
       2023-01-06 18:56:57 +08:00
    永久 ban ip 误伤了运营商 NAT 的出口 IP 可能大范围打不开,前面加个 cf 之类的 cdn 吧
    herozzm
        4
    herozzm  
    OP
       2023-01-06 18:59:11 +08:00
    @Puteulanus 已经套了 cdn ,但是 cdn 的封锁措施有限
    zhailw
        5
    zhailw  
       2023-01-06 18:59:38 +08:00 via Android   1
    fail2ban 自己针对日志写配置文件,还是挺方便的
    datocp
        6
    datocp  
       2023-01-06 19:10:32 +08:00 via Android   1
    用 iptables recent hacker 搜索一下,
    现在都是配合 ipset 使用。
    israinbow
        7
    israinbow  
       2023-01-06 19:10:35 +08:00   1
    https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker

    配合 #5 说的 fail2ban 防御, 效果不错.
    Jirajine
        8
    Jirajine  
       2023-01-06 19:18:54 +08:00
    别永久 ban ,限流就行,而且只 ban /32 不要扩大 ban 子网的范围,动态 ip 太容易误伤。
    用的一些节点打开 Debian wiki 总是 403 ,一查整个 /24 段早就被拉黑了。
    herozzm
        9
    herozzm  
    OP
       2023-01-06 19:20:17 +08:00
    @Jirajine 比起拉黑动态 ip ,我更在乎是服务器被爬死,不在乎哪些被人利用的动态 ip 返回 403
    sky96111
        10
    sky96111  
       2023-01-06 19:28:14 +08:00 via Android
    @herozzm 他的意思是动态 IP ,过段时间这个 IP 就不是之前爬你网站的那个人的了。如果后来获取到这个被 ban IP 的无辜人是你网站的潜在用户,你很可能会失去他
    herozzm
        11
    herozzm  
    OP
       2023-01-06 19:35:07 +08:00
    @sky96111 设置一个时间段吧,封禁 1 周
    lower
        12
    lower  
       2023-01-06 19:45:54 +08:00
    不知道 限流工具或策略 对服务器性能影响大么?
    请求没进应用就返回结果了。。。应该对性能影响微乎其微吧
    billgong
        13
    billgong  
       2023-01-06 19:47:45 +08:00   1
    @zhailw f2b 正解 此类根据某种特征识别主机并 ban 掉的操作都是 f2b 能搞定的范畴

    如果你说的爬虫指的是爬 SSH 弱密码、爬 SMTP 中继的那类,规则可以设置的严格一些,我这边都是直接 ban 终身的

    有的时候并不需要在源头上 ban 一个 IP 。资源够的话可以先从应用层面 ban ,然后升级至防火墙 ban 端口,最后彻底 ban ,可以有效减少误杀的可能。
    psirnull
        14
    psirnull  
       2023-01-06 20:02:40 +08:00   1
    iptables 写一个

    1.编写脚本
    mkdir /root/bin
    vi /root/bin/dropip.sh
    #!/bin/bash
    /bin/netstat -nagrep ESTABLISHEDawk ‘{print $5}’awk -F: ‘{print $1}’sortuniq -csort -rnhead -10grep -v -E ’192.168127.0′awk ‘{if ($2!=null && $1>4) {print $2}}’>/tmp/dropip for i in $(cat /tmp/dropip) do /sbin/iptables -A INPUT -s $i -j DROP echo "$i kill at `date`">>/var/log/ddos done
    2.增加执行权限 chmod +x /root/bin/dropip.sh

    3.添加到计划任务,每分钟执行一次 crontab -e */1 * * * * /root/bin/dropip.sh 可以根据实际需要修改下。
    Dukec
        15
    Dukec  
       2023-01-06 23:51:14 +08:00
    Fail2ban
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     951 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 19:32 PVG 03:32 LAX 12:32 JFK 15:32
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86