如何阻止 PHPMyAdmin 攻击?

Ton*_*vel 6 security brute-force-attacks

我们setup.php在访问日志中看到很多对不存在文件的请求(见下文)。对于我们的一些使用重写规则的客户端,这些请求中的每一个都会导致执行 PHP 脚本,从而导致服务器速度相当慢并产生不必要的流量。

是否可以快速拒绝此类请求?我正在考虑指定一个拒绝所有setup.php相关查询的通用拒绝规则,但这可能不是正确的方法。有什么建议?

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"
Run Code Online (Sandbox Code Playgroud)

mck*_*nzm 2

近 4 年后仍然具有现实意义。

由于大概 mod_rewrite 正在处理真正的流量,因此这些脚本不会增加更多的负载。但是,是的,它们可能会暂时造成滞后。一般来说,您无法完全阻止这些情况。

缓解这种情况的 mods 和插件倾向于在本地防火墙 (iptables) 阻止 IP 之前关注频率和速率。更好的方法应该包括签名,例如(正常使用中是伪造的)目录名称的片段。然后必须考虑这需要如何反应。人们可以修改“denyhosts”包(一种防止 SSH 密码登录出现类似问题的产品)的部分内容来读取日志并识别“签名”,以将 IP 地址添加到 /etc/hosts.deny。

一般来说,这些人不会从同一个主机回来,所以我们可能想要更快的东西。开源的美妙之处在于我们可以对其进行调整。mod_evasive 看起来不错,但是如果你的服务器被合法的脚本(curl、wget 等)查询怎么办?因此,不需要验证码,并且需要白名单或通过 POST 或 GET 参数重置。

对于那些担心攻击风险的人(OP 没有,OP 受到资源消耗的困扰),如果你确实有 phpmyadmin 那么:

使用每个目录指令。

ORDER DENY, ALLOW
DENY FROM ALL
ALLOW FROM *safe places*
Run Code Online (Sandbox Code Playgroud)

说真的,很少有人应该有权访问。除非他们是 DBA,否则有什么理由冒这个风险呢?在发生事件期间,Apache 可以根据需要重新配置,以从单个地址开门。如果您不在,则可以通过 VPN 连接到同一网络上的 VNC/RDP 桌面或使用代理。

他们的脚本仍然会出现 404 错误(以及至少一个 403 错误)。留下虚拟文件夹和配置代码让他们查找只会鼓励他们。我只是使用 grep -v 来过滤掉目录名称。