V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zjb861107
V2EX  ›  分享发现

赶紧检查你的 access.log,看看有没有被恶意解析

  •  
  •   zjb861107 · 2019-07-23 17:41:21 +08:00 · 3689 次点击
    这是一个创建于 1983 天前的主题,其中的信息可能已经有所发展或是发生改变。

    起因是我的腾讯云小鸡突然访问巨慢,今天登上去看了下发现磁盘空间满了,其中 nginx 的 access.log 就占了 33G。
    大量 log 都是类似下面这种:

    121.238.181.104 - - [23/Jul/2019:17:06:15 +0800] "GET /otsmobile/app/mgs/mgw.htm?operationType=com.cars.otsmobile.queryLeftTicket&requestData=%5B%7B%22train_date%22%3A%2220190728%22%2C%22purpose_codes%22%3A%2200%22%2C%22from_station%22%3A%22CZH%22%2C%22to_station%22%3A%22ZDN%22%2C%22station_train_code%22%3A%22%22%2C%22start_time_begin%22%3A%220000%22%2C%22start_time_end%22%3A%222400%22%2C%22train_headers%22%3A%22QB%23%22%2C%22train_flag%22%3A%22%22%2C%22seat_type%22%3A%22%22%2C%22seatBack_Type%22%3A%22%22%2C%22ticket_num%22%3A%22%22%2C%22dfpStr%22%3A%22Kkc-ypSI1MmN1-xm-shsDUoFhTpNRYwoDt4q0o7Zk6yal4RFOLPEZAlkgnKaxuVWMv1gm6vaJhCzOYwvXS_KxtVXYf7foWgHKybovOoVfeGnPNUrJK4GXuUXX-S2GxNE8z-Fmdr3aGNPwBWlpePKTibGpcEuA89D%22%2C%22baseDTO%22%3A%7B%22check_code%22%3A%2299976ef2a5f0c45ca0cba6957f5add03%22%2C%22device_no%22%3A%22XTWYw2mjkUQzMGMfFr5qoFiY%22%2C%22mobile_no%22%3A%22%22%2C%22os_type%22%3A%22a%22%2C%22time_str%22%3A%2220190723170615%22%2C%22user_name%22%3A%22%22%2C%22version_no%22%3A%224.2.10%22%7D%7D%5D&ts=1563872775032&sign=2f8b45dd42d0544d64a9f7af81b1f706 HTTP/1.1" 444 0 "-" "Go-http-client/1.1"
    110.218.205.25 - - [23/Jul/2019:17:06:15 +0800] "GET /otsmobile/app/mgs/mgw.htm?operationType=com.cars.otsmobile.queryLeftTicket&requestData=%5B%7B%22train_date%22%3A%2220190724%22%2C%22purpose_codes%22%3A%2200%22%2C%22from_station%22%3A%22ZYJ%22%2C%22to_station%22%3A%22LZJ%22%2C%22station_train_code%22%3A%22%22%2C%22start_time_begin%22%3A%220000%22%2C%22start_time_end%22%3A%222400%22%2C%22train_headers%22%3A%22QB%23%22%2C%22train_flag%22%3A%22%22%2C%22seat_type%22%3A%22%22%2C%22seatBack_Type%22%3A%22%22%2C%22ticket_num%22%3A%22%22%2C%22dfpStr%22%3A%22eXNvnG_dhMV52v1v7hCA8Ny47hOWo89M7Hoxg1n45OyJJ8VqnBs2AiD0lUcJSiUzEimLKNWtIYeVYr06VX2tsUA6mfgpUyNrFWaDouCRYGzmn_r138y27EC4oa-v8yK6dZHsGVGZ2F5ji4-ax4plmpGKyJGjFwvo%22%2C%22baseDTO%22%3A%7B%22check_code%22%3A%224e3333eb814f961347a92b05457a25e3%22%2C%22device_no%22%3A%22XTWYwANleQwzMHXUqoMlBfdk%22%2C%22mobile_no%22%3A%22%22%2C%22os_type%22%3A%22a%22%2C%22time_str%22%3A%2220190723170615%22%2C%22user_name%22%3A%22%22%2C%22version_no%22%3A%224.2.10%22%7D%7D%5D&ts=1563872775144&sign=9caf0e8903ead8174a45e6532f8f7404 HTTP/1.1" 444 0 "-" "Go-http-client/1.1"
    

    所有的请求都指向/otsmobile/app/mgs/mgw.htm

    借助搜索引擎,我发现了有文章介绍类似情况: http://niliu.me/articles/367.html

    参照此文我在 nginx 的配置中添加了:

    server {
         listen 443 default_server;
         server_name _;
         ssl on;
         return 444;
    }
    

    瞬间服务器就变得流畅了。
    ps:确定 444 生效以后,我又添加了access_log off;,防止 log 过大。

    9 条回复    2019-07-24 10:49:08 +08:00
    VD
        1
    VD  
       2019-07-23 19:21:08 +08:00
    你确定,443 端口下,没有证书,这个能返回 444 生效?
    GM
        2
    GM  
       2019-07-23 19:43:08 +08:00
    @VD 用 443 提供 http 服务,没毛病。
    ruimz
        3
    ruimz  
       2019-07-23 19:47:10 +08:00 via Android
    就算 443 口不能提供 ssl 下的 444 返回,哪怕是错误,也完成了初始目标
    VD
        4
    VD  
       2019-07-23 20:33:42 +08:00
    @GM 你没看到他配置中的 ssl on ?

    @ruimz 楼主说,确定 444 生效了,所以有些不解。
    Vegetable
        5
    Vegetable  
       2019-07-23 20:46:45 +08:00   ❤️ 1
    你这是 12306 查询余票的参数,然后 ua 是 go-http-client。
    看起来是哪个抢票软件的请求发到你这里来了。
    sizhe
        6
    sizhe  
       2019-07-24 09:12:49 +08:00
    为啥不设置 404... 简单粗暴,迷惑性强

    不过被攻击真的无可奈何,把 log 关了也不太好啊。最好是在路由层直接堵了。
    zjb861107
        7
    zjb861107  
    OP
       2019-07-24 10:17:13 +08:00
    @VD 我没有放完整配置。另外还有个:
    server {
    listen 80 default_server;
    listen [::]:80 default_server;
    return 301 https://$host$request_uri;
    }


    这样是不是能说得通了?
    VD
        8
    VD  
       2019-07-24 10:32:49 +08:00
    @zjb861107 http 的 server_name 没写吧?
    然后 301 跳转到 https 后呢,没有 ssl,如何返回 444 ?你确定返回 444 了?
    chen90902
        9
    chen90902  
       2019-07-24 10:49:07 +08:00
    我是直接把 80 的访问给 ban 了,然后 443 的访问返回 444,只有通过域名才可以访问。
    域名有 DNS 商做防护,一般就不怕了~

    栗子:
    server {
    listen 443 ssl default_server;
    server_name _;
    ssl_certificate example.pem;
    ssl_certificate_key example_key.pem;
    return 444;
    }
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5333 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 498ms · UTC 07:54 · PVG 15:54 · LAX 23:54 · JFK 02:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.