我注意到在 Web 服务器日志文件中,有些人实际上测试了我的服务器(可能还有其他服务器)上某些页面的存在。
因此,我设置了一个自定义 404 页面,并读出访客的身份。例如
ErrorDocument 404 /404.php
我得到了如下结果:
GATEWAY_INTERFACE CGI/1.1
SERVER_ADDR 62.75.xxx.xxx (my servers IP)
SERVER_NAME vps28680.vps.ovh.ca
SERVER_SOFTWARE Apache/2.2.22 (Debian)
SERVER_PROTOCOL HTTP/1.1
REQUEST_METHOD GET
REQUEST_TIME 1465225786
REQUEST_TIME_FLOAT 1465225786.731
DOCUMENT_ROOT /var/www
HTTP_HOST vps28680.vps.ovh.ca
HTTP_USER_AGENT Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0
REMOTE_ADDR 167.114.3.44
REMOTE_PORT 44685
SCRIPT_FILENAME /var/www/404.php
SERVER_PORT 80
SERVER_SIGNATURE Apache/2.2.22 (Debian) Server at vps28680.vps.ovh.ca Port 80
SCRIPT_NAME /404.php
REQUEST_URI HTTP://vps28680.vps.ovh.ca/judge/judge.php
在正常世界中服务器名称应该是请求 URI并且它应该解决远程地址。
就像在这种情况下:
$_SERVER(REQUEST_URI) = "HTTP://vps28680.vps.ovh.ca/judge/judge.php"
$_SERVER(SERVER_NAME) = "vps28680.vps.ovh.ca"
and
$_SERVER(SERVER_NAME) = "167.114.3.44"
我执行了“dig vps28680.vps.ovh.ca”,结果是 167.114.3.44。
好的,到目前为止一切顺利,但问题是 IP 和 URI 都不在我的服务器上。
根据文档,$_SERVER(REQUEST_URI) 是访问者在 Firefox 浏览器中输入并登陆我的服务器的 URI。访问结束后,我立即点击了链接,但它并没有带我进入我的邮箱。
好吧,我认为可能有人设置了一个名称服务器,用该域名指向我的机器,但他怎么能用假 IP 做到这一点呢?那么他为什么会登陆我的机器呢?
据我所知主机名应该显示我的域名,而不是他的域名。或者这些可能不是他的 IP 和他的域名。
有人能向我解释一下发生了什么事吗?
答案1
您可以在 HTTP HOST 标头中提供任何您想要的主机名,如果没有以此名称定义 vhost,则 Web 服务器通常会使用默认服务器来提供服务,而默认服务器通常只是定义的第一个服务器(这是 HTTP/1.1 的一个特性,使得仅使用一个 IP 地址就可以为多个域提供服务)。
因此,实际情况是,有人167.114.x.x
(很可能是被机器人感染)正在扫描网络主机,无论出于何种目的,并且只是在 HTTP 请求中提供自己的主机名。这样,他们就可以简单地遍历 IP 地址,而不需要有效的主机名。
换句话说:这里没什么可看的,只是网络上的普通一天。