服务器每天被无数无用 POST 请求,求一个读 nginx 日志拉黑 IP 的脚本 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
kaiki
V2EX    Linux

服务器每天被无数无用 POST 请求,求一个读 nginx 日志拉黑 IP 的脚本

  •  
  •   kaiki 2023-02-05 00:50:32 +08:00 4679 次点击
    这是一个创建于 981 天前的主题,其中的信息可能已经有所发展或是发生改变。

    日志文件 /home/www/xxx.log

    日志内容 (xxx 为自己服务器 IP ,就不需要 V 友帮我做压测了)

    182.149.161.215 - - [04/Feb/2023:23:18:55 +0800] " POST /u/k.php HTTP/1.1 " 403 548 " http://xxx.xxx.xxx.xxx/u/k.php " " Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 2Pac; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)" 182.149.161.215 - - [04/Feb/2023:23:18:55 +0800] " POST /u/k.php HTTP/1.1 " 403 548 " http://xxx.xxx.xxx.xxx/u/k.php " " Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 2Pac; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)" 

    攻击者会每秒 POST 请求 /u/k.php 数次,拉黑后过一段时间会切到其他 IP 继续攻击,我想能不能写个脚本来分析下日志,几分钟执行一次就行,如果开始攻击大概 100 行内就可以找到这种日志吧,不会写 sh 脚本,有会写的 V 友救一下吗?

    19 条回复    2023-06-30 10:53:55 +08:00
    HAWCat
        1
    HAWCat  
       2023-02-05 00:54:06 +08:00 via iPhone
    用 fail2ban
    realpg
        2
    realpg  
    PRO
       2023-02-05 01:13:31 +08:00
    流量一个月 50MB 顶天了
    CPU 等效占用 0.01%顶天了

    管他干啥
    kaiki
        3
    kaiki  
    OP
       2023-02-05 01:18:18 +08:00
    @realpg 我也不明白为什么会要这样攻击啊,服务器上并没有这个文件,他就是要请求,而且他也不在乎返回,单纯就是想请求,不怕贼偷就怕贼惦记
    yuzo555
        4
    yuzo555  
       2023-02-05 01:43:59 +08:00
    搜索这个 User-Agent ,没发现有价值的信息,只能发现攻击程序可能是易语言写的,IP 查了下也是家宽的 IP 。

    如果服务器压力不大的话,你干脆直接封 User-Agent 关键词,直接让 nginx 返回 403 就好,还不用浪费资源去跑 php
    FrankAdler
        5
    FrankAdler  
       2023-02-05 02:15:54 +08:00
    #!/bin/bash

    line=1000
    times=10
    cOnf=/opt/nginx/conf/blockip.conf

    tail /data/logs/nginx/access.log -n $line | \
    grep -E '("status":"404"|"status":"302")' | awk '{print $1}' | \
    sort | uniq -c | \
    awk '$1>$times{print "deny "$2 ";"}' >> $conf

    deny=$(sort $conf | uniq -c | awk '{print "deny "$3}')
    echo $deny | sed "s/; /;\n/g" > $conf

    /usr/local/sbin/nginx -t || exit
    /usr/bin/systemctl reload nginx

    大于 10 次,从最近 1000 条日志分析,nginx.con 自行 include 那个 blockip.conf
    FrankAdler
        6
    FrankAdler  
       2023-02-05 02:17:07 +08:00
    @FrankAdler grep -E 修改下
    #!/bin/bash

    line=1000
    times=10
    cOnf=/opt/nginx/conf/blockip.conf

    tail /data/logs/nginx/access.log -n $line | \
    grep -E '(" 404 "|"status":" 302 ")' | awk '{print $1}' | \
    sort | uniq -c | \
    awk '$1>$times{print "deny "$2 ";"}' >> $conf

    deny=$(sort $conf | uniq -c | awk '{print "deny "$3}')
    echo $deny | sed "s/; /;\n/g" > $conf

    /usr/local/sbin/nginx -t || exit
    /usr/bin/systemctl reload nginx
    FrankAdler
        7
    FrankAdler  
       2023-02-05 02:22:16 +08:00
    还是漏了一点,算了你自己稍微调整下吧,因为我的日志输出是 json
    eason1874
        8
    eason1874  
       2023-02-05 02:31:18 +08:00   2
    每秒几次,对 nginx 造不成压力,直接 444 无响应关闭连接好了

    location = /u/k.php {
    return 444;
    }
    raysonx
        9
    raysonx  
       2023-02-05 03:36:10 +08:00   1
    如果题主的正常用户是用域名访问的,可以配置 nginx 对所有未知域名(包括直接 IP 地址访问) return 444 。
    stabc
        10
    stabc  
       2023-02-05 08:09:45 +08:00
    nginx 自带 rate limit
    busier
        11
    busier  
       2023-02-05 12:53:32 +08:00   1
    这种 P 大的事也配称作“攻击”~~~~~~~~~
    HeyEvan
        12
    HeyEvan  
       2023-02-05 14:48:17 +08:00
    上 Cloudflare ,系统防火墙并限制 CF IP 段访问,Cloudflare 上限制国家访问,一年了就没见到这些请求
    lcy630409
        13
    lcy630409  
       2023-02-05 18:55:04 +08:00
    这种 P 大的事也配称作“攻击”~~~~~~~~~
    常规扫描而已
    qile11
        14
    qile11  
       2023-02-06 02:45:02 +08:00 via Android
    @HeyEvan cloudflare 上了国内访问速度特别慢有没有解决办法?
    TGl2aWQgZGUgZGll
        15
    TGl2aWQgZGUgZGll  
       2023-02-06 09:24:13 +08:00
    就是批量漏洞扫描工具而已,不用管他,对你完全没影响
    HeyEvan
        16
    HeyEvan  
       2023-02-06 09:34:56 +08:00
    @qile11 如果是自己访问的话可以试试 CloudflareSpeedTest 优选 IP ,稳定性就不清楚了。我自己的走代理
    xyjincan
        17
    xyjincan  
       2023-02-06 14:45:42 +08:00
    给 404 页面定义一个空页面返回,只给个响应头呗,对安全没有啥影响,
    libook
        18
    libook  
       2023-02-06 14:58:15 +08:00   1
    现在黑客都是机器人自动扫描 IP 段,发现在线主机后自动扫描端口,发现 Web 服务自动按照漏洞特征来扫描是否存在漏洞,发现漏洞自动攻击,或者把信息提供给黑客来人工攻击。攻击之后要么就是加密数据勒索,要么是用来挖矿,要么是用来当肉鸡部署机器人来对其他服务器进行扫描。

    一般企业的方案是用 Web 应用防火墙来防护,个人项目确保不会被扫描出漏洞的话也可以简单地用一些类似 fail2ban 的方案。
    AIyunfangyu
        19
    AIyunfangyu  
       2023-06-30 10:53:55 +08:00
    可以加我合作交流下防御 V:with--tea
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3000 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 00:33 PVG 08:33 LAX 17:33 JFK 20:33
    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