我们在访问日志中看到很多对不存在的setup.php文件的请求(见下文)。 对于一些使用重写规则的客户端,这些请求中的每一个都会导致PHP脚本执行,从而导致服务器出现相当大的减速并产生不必要的stream量。
有没有可能迅速否认这种要求? 我想指定一个拒绝所有setup.php相关查询的一般拒绝规则,但这可能不是正确的方法。 有什么build议么?
217.115.202.30 - - [17/Nov/2010:09:13:35 +0100] "GET /PHPMYADMIN/scripts/setup.php HTTP/1.1" 404 2452 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:13:35 +0100] "GET /PMA/scripts/setup.php HTTP/1.1" 404 2444 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:13:39 +0100] "GET /PMA2005/scripts/setup.php HTTP/1.1" 404 2449 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:13:47 +0100] "GET /SSLMySQLAdmin/scripts/setup.php HTTP/1.1" 404 2452 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:13:42 +0100] "GET /SQL/scripts/setup.php HTTP/1.1" 404 2446 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:13:49 +0100] "GET /admin/phpmyadmin/scripts/setup.php HTTP/1.1" 404 2448 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:13:58 +0100] "GET /admin/scripts/setup.php HTTP/1.1" 404 2442 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:14:00 +0100] "GET /bbs/data/scripts/setup.php HTTP/1.1" 404 2448 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:14:01 +0100] "GET /cpadmin/scripts/setup.php HTTP/1.1" 404 2447 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:14:03 +0100] "GET /cpadmindb/scripts/setup.php HTTP/1.1" 404 2447 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:13:53 +0100] "GET /admin/pma/scripts/setup.php HTTP/1.1" 404 2447 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:14:05 +0100] "GET /cpanelmysql/scripts/setup.php HTTP/1.1" 404 2450 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:14:11 +0100] "GET /cpanelphpmyadmin/scripts/setup.php HTTP/1.1" 404 2452 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:14:13 +0100] "GET /cpanelsql/scripts/setup.php HTTP/1.1" 404 2448 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:14:23 +0100] "GET /cpphpmyadmin/scripts/setup.php HTTP/1.1" 404 2449 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:14:25 +0100] "GET /db/scripts/setup.php HTTP/1.1" 404 2441 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:14:26 +0100] "GET /dbadmin/scripts/setup.php HTTP/1.1" 404 2445 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:14:28 +0100] "GET /myadmin/scripts/setup.php HTTP/1.1" 404 2445 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:14:29 +0100] "GET /mysql-admin/scripts/setup.php HTTP/1.1" 404 2449 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:14:32 +0100] "GET /mysql/scripts/setup.php HTTP/1.1" 404 2448 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:14:33 +0100] "GET /mysqladmin/scripts/setup.php HTTP/1.1" 404 2447 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:14:35 +0100] "GET /mysqladminconfig/scripts/setup.php HTTP/1.1" 404 2453 "-" "ZmEu" 217.115.202.30 - - [17/Nov/2010:09:14:36 +0100] "GET /mysqlmanager/scripts/setup.php HTTP/1.1" 404 2449 "-" "ZmEu"
几乎4年后依然相关。
由于大概mod_rewrite正在处理真正的stream量,这些脚本不会增加更多的负载。 但是,是的,他们可能会暂时导致滞后。 一般来说,你不能完全防止这些。
缓解这种情况的mods和插件往往把重点放在频率和速率上,然后在本地防火墙(iptables)上阻塞ip。 更好的方法应该包括签名,例如(正常使用中的假冒)目录名称的碎片。 那么必须考虑到这是如何反应的。 可以修改部分“denyhosts”软件包(用于保护SSH密码login的类似问题的产品)以读取日志后面的内容,并标识将“ip地址”添加到/etc/hosts.deny的“签名”。
通常这些人不会从同一个主机回来,所以我们可能需要更快一些。 开源的美妙之处在于我们可以调整它。 mod_evasive似乎没问题,但如果你的服务器被合法的脚本查询(curl,wget等等)呢? 因此没有CAPTCHA,需要白名单或通过POST或GET parms重置。
对于那些担心这种攻击风险的人来说(OP没有,OP被资源消耗困扰),如果你真的有phpmyadmin的话:
使用每个目录的指令。
ORDER DENY, ALLOW DENY FROM ALL ALLOW FROM *safe places*
认真地说,很less有人能够访问。 除非他们是DBA,否则certificate风险是正当的? 在事件发生期间,Apache可以根据需要重新configuration,从一个地址开门。 如果您不在,则可以将VPN连接到同一networking上的VNC / RDP桌面或使用代理。
他们的脚本仍然会打你404(至less有一个403)。 留下虚拟文件夹和configuration代码,他们发现只是鼓励他们。 我只是使用grep -v来过滤掉目录名称。
首先不从默认虚拟主机提供任何内容,所以只是基于IP地址而盲目攻击你的机器人提出请求的可能性就会降低,从而触发任何“重量级”操作。
那么你可以使用fail2ban并检查你的日志+从哪个盲扫描来的块的内容。
我现在正在使用@ mod_evasive @ ,这是一个很好的解决scheme。
确保PHPMyAdmin是最新的。 隐藏它,把它放在一个他们不会扫描的目录里,比如/padmin32 。