今天检查nginx访问日志的时候发现奇怪的日志
[02/Nov/2017:13:35:46 +0800] "GET http://www.baidu.com/ HTTP/1.1" 200 8672 "http://www.baidu.com" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0" -
截图如下
这里取的只是百度的域名,还有好多其他的域名,这个应该是代理攻击
有没有发现GET后面用http://开头的,正常情况GET后面是用”/”开头,如下面的访问日志
[08/Nov/2017:21:54:15 +0800] "GET /2330.html HTTP/1.1" 200 8419 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36" -
这个问题在百度gogole的相关文章比较少,所以现在不清楚目前的处理方法是否正确,如果你要遇到了这个问题,可以尝试一下
目前处理的方法
#nginx中添加下面的配置,主要作用就是没有指定域名的返回444
server {
server_name _;
location / {
return 444;
}
}
server
{
listen 443 ssl http2;
server_name www.phpsong.com;
//...
#添加代码,主要作用如果域名不是www.phpsong.com的就返回444
if ($host !~ ^(phpsong.com|www.phpsong.com)$) {
return 444;
}
//...
}
设置之后,发现这种日志不存在了,因为不清楚模拟这种攻击,所以不清楚是否已经解决了,apache的解决方法可以看一下这个文章https://wiki.apache.org/httpd/ProxyAbuse