长话短说我们最近有一个共享主机被盗用的帐户,问题已经解决,但受影响的帐户仍然被垃圾邮件,每天有超过一百万的请求到一个特定的文件。
由于泄密文件不存在,所有的请求都通过Apache的minimalistic 404页面实现,重约521字节。 问题是512bytes * 1M +的请求不仅对我们的服务器性能造成影响,而且是每天浪费带宽。
我们试着简单地使用一个RewriteRule,并禁止所有对evil.php的请求,但是这显示了一个被禁止的页面,使我们离开了我们开始的地方。
理想情况下,我们只需要将请求放到“evil.php”,不返回任何内容。 基本上停止响应Apache。 这是可能的和如何?
编辑
为了这个练习,假设没有shell访问,所有的解决scheme都必须通过类似cPanel的接口来实现。 虽然这不是这种情况,但是我们对服务器进行configuration更改的自由度比LAMP堆栈,DNS(绑定)和邮件configuration要小。
mod_security,操作“drop”。
[用于serverfault的填充字符]
如果你用一个零长度的文件replace“evil.php”怎么办? 至less在我安装的Apache 2.2中,只需要大约206个字节(HTTP标头)。 一个404占用大约500个字节。 那至less会把你的stream量减半。 对于更高级的黑名单,请查看:
http://perishablepress.com/press/2009/02/03/eight-ways-to-blacklist-with-apaches-mod_rewrite/
您可以创buildevil.php文件并将其托pipe在apache上,并返回空的内容(类似于Markus的build议)。 同时,您可以将请求的IP保存在文本文件中。 然后,这个文本文件可以通过脚本读取,将所有这些IP添加到iptables规则中,以放弃所有未来的请求。 这样你可以收集所有请求的IP并停止它们。