1

在我的 apache 灌输中,我一直在我的访问日志中看到以下行:

"POST http://yourinfo.allrequestsallowed.net/ HTTP/1.1" 200

这真的把我吓坏了,因为这个网站没有托管在我的服务器上(我检查了 IP 只是为了 100% 确定)。我添加了一条“全部拒绝”行,因为该站点仍在开发中,现在 HTTP 200 响应更改为 403,就像该域托管在我的服务器上一样。

我非常困惑和害怕。有人知道发生了什么吗?我可以拒绝所有显然指向我的服务器的域吗?

4

2 回答 2

2

您可能需要检查以确保您没有ProxyRequests On在不应该设置的任何地方设置。通常,这样的请求是针对转发代理的,令人不安的是您返回的200响应可能表明请求已成功代理。

看看这个关于代理滥用的 wiki 页面

我的服务器已正确配置为不代理,那么为什么 Apache 返回 200(成功)状态代码?

该状态码表明 Apache 成功地向客户端发送了响应,但不一定表示该响应是从外部网站检索到的。

RFC2616 第 5.1.2 节要求 Apache 必须接受在请求 URI 中具有绝对 URL 的请求,即使对于非代理请求也是如此。这意味着即使关闭了代理,Apache 也会接受看起来像代理请求的请求。但是,Apache 不会从外部站点检索内容,而是会在您网站的相应位置提供内容。由于主机名可能与您网站的名称不匹配,Apache 将在您的默认主机上查找内容。

但是检查一下您是否没有代理可能是值得的。否则,这并不是什么大不了的事。

于 2013-04-22T06:22:41.900 回答
1

在乔恩·林(Jon Lin)指出我正确的方向之后,我想通了。

禁用 mod_proxy 并启用 mod_security 后,我将以下内容添加到我的虚拟主机配置中:

SecRuleEngine On
SecRule REQUEST_LINE "://" drop,phase:1

然后重新启动apache。它会退出连接并返回任意数量的数据,从而在蛮力和 DDOS 攻击期间使用更少的资源和带宽。

此外,它在访问日志中显示为 HTTP 404 响应。

编辑:我更新了规则以删除所有类型或代理(https、https、ftp)。我不知道这种方式可以使用多少协议,但我宁愿安全也不要后悔。

于 2013-04-22T08:56:42.570 回答