Apachelogging完整的URL而不是URI

我的Apache Web服务器logging了以下消息到access.log

 46.22.173.131 - - [23/Dec/2014:15:34:54 +0100] "GET http://pl.wikipedia.org/wiki/Special:Search?search=&go=Go HTTP/1.1" 302 482 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" 182.254.156.77 - - [23/Dec/2014:16:53:22 +0100] "GET http://www.ly.com/ HTTP/1.1" 302 433 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0"` 182.254.208.62 - - [23/Dec/2014:17:57:49 +0100] "GET http://www.ly.com/ HTTP/1.1" 302 433 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0" 

我有两个定义的ssl_access.log – 一个是端口80,它只是redirect到443 …和ssl_access.log端口443,它login到ssl_access.log

我不明白这些日志是什么意思? 有人试图通过我的networking服务器到达这些url吗?

请帮我理解这些日志。

大家圣诞快乐!

http://wiki.apache.org/httpd/ProxyAbuse

为什么我看到在我的日志文件中出现对外国网站的请求?

显示这种情况的access_log条目可能如下所示:

63.251.56.142 – – [25 / Jul / 2002:12:48:04 -0700]“GET http://www.yahoo.com/ HTTP / 1.0”200 1456
对于这个日志行,200代码(在这个例子中倒数第二个字段)表示请求是成功的 – 但是在这种情况下,请看下面的“成功”意思的解释。

这通常是恶意客户尝试利用开放代理服务器访问网站而不透露其真实位置的结果。 他们可能会这样做,以操纵按点击付费广告系统,添加评论或链接垃圾邮件到别人的网站,或只是做一些讨厌而不被发现。

防止您的服务器被用作开放代理来滥用其他网站是很重要的。

除了来自faker的优秀回答之外, 302响应代码还是因为您configuration了HTTPSredirect。

要通过HTTPSvalidation您是否容易受到相同的攻击,请运行以下命令[source] :

 openssl s_client -connect yourdomain.com:443 [wait for the connection to initialise] GET http://www.yahoo.com/ HTTP/1.1 Host: www.yahoo.com 

curl

 curl -H -x https://domain.name.here:443 www.google.de 

根据Apache文档 ,您不应该从yahoo.com接收内容,并且应该显示404或403响应。 如果发生这种情况,这些日志是没有什么可担心的,并且比机器人自动扫描更有可能。

正如@faker指出,configuration您的Web服务器是非常重要的,因此它不能用作公共代理。 这应该是默认的行为(即禁用代理),除非你已经明确地启用了一个或多个代理模块(查看你的httpd.conf中引用代理模块的LoadModule语句)并添加了相关的代理指令。 尽pipe如此,如果希望这样的请求被明确地阻止并logging下来,那么你可以做我所做的事情,并将这些行添加到你的httpd.conf的.htaccess文件中:

 # There is some seriously broken malware that attempts to proxy via our web # server to www.baidu.com, planeta.ru, etc. The proxy attempt per se isn't # broken (although we don't allow proxying via this web server). It's that # only the first request makes any sense. Subsequent requests mangle both the # HTTP_HOST and REQUEST_URI into nonsensical strings. Eventually the request # is so mangled Apache responds with a 403 status. # # So check the request line to see if it looks like an attempt to proxy via # our web server. Since we don't allow proxying nip the insanity in the bud. RewriteCond %{THE_REQUEST} ^GET\s+https?:// [NC] RewriteRule ^ blocked.php [NC,END,E=REASON:proxy-probe] 

我有一个“blocked.php”脚本,提供了一个自定义响应页面,包括REASON env var,但是你也可以用

 RewriteRule ^ - [NC,L,R=403]