![如何使用 iptables 阻止 php 扫描](https://linux22.com/image/627606/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20iptables%20%E9%98%BB%E6%AD%A2%20php%20%E6%89%AB%E6%8F%8F.png)
虽然我不使用 php,但我的服务器上有很多针对 php 文件的扫描。我使用以下规则来阻止那些家伙 -
iptables -I INPUT -p tcp --dport 80 -m string --string 'php' --algo bm -j DROP
这条规则可以吗?当我使用没有 dport 的规则时,我最终丢失了管理员 URL,因为管理员 URL 页面在正文的某个地方有字符串 php。我只想扫描 URL,而不是正文。这该怎么做?当我对日志文件进行性能扫描时,失败的扫描会导致问题。例如,我有这些条目
. /phpMyAdmin/scripts/setup.php | 4,750 total ms | 475 avg ms | 584 max ms | 10 calls
. /myadmin/scripts/setup.php | 4,309 total ms | 478 avg ms | 698 max ms | 9 calls
答案1
忽略规则中扫描发往服务器 80 端口的每个数据包以查找字符串“php”这一事实 - 该规则没有问题。我建议改用字符串“.php”,这样匹配的内容就会更少。
事实是,要阻止这种实际上不会打扰您的流量,应该通过过滤前端代理或您的网络服务器来完成(如果可以的话)。
要明确的是,这不是 iptables 要解决的问题类型。
答案2
这可能最好由 apache / 无论您的 Web 服务器是什么来处理。
至于这是否是一条好的 iptables 规则:显然不是。看来您没有完全理解它在做什么/实施它的含义。如此广泛的规则很可能会破坏很多东西。
我们了解我们的流量并限制 TCP SYN,以防止恶意机器人扫描我们的网络基础设施。
最后:
解决此问题的正确方法是妥善保护和强化您运行的任何 Web 应用程序。扫描本身并不危险。扫描只会发现潜在的漏洞。将这些漏洞隐藏在防火墙后面并不是理想的解决方案。