V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
kaiki
V2EX  ›  Linux

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

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

    日志文件 /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  
       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   ·   实用小工具   ·   2962 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:08 · PVG 08:08 · LAX 16:08 · JFK 19:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.