首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache记录完整的URL而不是URI

Apache记录完整的URL而不是URI
EN

Server Fault用户
提问于 2014-12-24 10:16:06
回答 3查看 3.9K关注 0票数 1

我的Apache服务器将以下消息记录到access.log

代码语言:javascript
复制
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"

我有两个Virtualhosts定义-一个为端口80,它刚刚重定向到443 .以及端口443的Virtualhost,该端口登录到ssl_access.log

我不明白这些日志是什么意思?有人试图通过我的网络服务器访问这些URL吗?

请帮我理解那些日志。

大家圣诞快乐!

EN

回答 3

Server Fault用户

回答已采纳

发布于 2014-12-24 10:20:41

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

为什么我会在日志文件中看到对外国网站的请求?显示这种情况的access_log条目可能如下所示: 63.251.56.142 -- 25/2002:12:48:04 -0700 "GET http://www.yahoo.com/ HTTP/1.0“200 1456 用于此日志行,200段代码(本例中倒数第二个字段)表示请求成功--但是在这种情况下,有关”成功“的解释请参见下面。这通常是恶意客户端试图利用开放的代理服务器访问网站而不透露其真实位置的结果。他们这样做可能是为了操纵按点击付费的广告系统,给别人的网站添加评论或链接垃圾邮件,或者只是在不被发现的情况下做一些令人讨厌的事情。重要的是防止您的服务器被用作滥用其他站点的开放代理。

票数 7
EN

Server Fault用户

发布于 2014-12-24 10:29:51

除了来自faker的好答案外,302响应代码是因为您已经配置了HTTPS重定向。

要验证通过HTTPS是否容易受到相同的攻击,请运行以下命令[来源]

代码语言:javascript
复制
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

代码语言:javascript
复制
curl -H -x https://domain.name.here:443 www.google.de

根据Apache文档,您不应该接收来自yahoo.com的内容,并且应该显示一个404或403响应。如果发生这种情况,这些日志就没什么好担心的了,而且很可能是由机器人进行的自动扫描。

票数 1
EN

Server Fault用户

发布于 2014-12-28 04:33:41

正如@faker所指出的,重要的是配置web服务器,使其不能用作公共代理。这应该是默认行为(即禁用代理),除非您已经显式启用了一个或多个代理模块(查看引用代理模块的httpd.conf LoadModule语句)并添加了相关的代理指令。尽管如此,如果希望这样的请求被显式阻止和记录,那么您可以按照我所做的操作,将类似的行添加到httpd.conf of .htaccess文件中:

代码语言:javascript
复制
# 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“脚本,它提供了一个自定义响应页面,包括原因env,但是您也可以用

代码语言:javascript
复制
RewriteRule ^ - [NC,L,R=403]
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/654566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档