我有一个简单的 Apache Web 服务器设置和用于开发服务器的基本 IP 表 (ufw)。在我的日志中,我看到如下行:
[Fri May 16 10:10:36.258369 2014] [:error] [pid 15926] [client 69.147.158.130:8396] script '/var/www/html/wp-login.php' not found or unable to stat
我根本没有运行 WordPress,我意识到这只是一次很小的黑客攻击(目前有更多针对 Apache 的复杂攻击)。但是我想自动(暂时)阻止此 IP 地址,而无需安装 Snort 等 IDS/IPS。
我只是在寻找一种简单的方法来阻止尝试连接到 wp-admin 或 wp-login 的地址。是否有可以处理此类问题的 Apache 模块?
答案1
虽然您明确要求提供阻止 IP 地址的解决方案,但我认为这不是一个好的解决方案。
原因是您看到的这些攻击来自多个 IP 地址,很可能由一个主系统控制。这就是当今 DDoS 和黑客攻击的本质。
相反,你应该考虑实施ModSecurity。这是一个充当 Web 服务级防火墙的 Apache 模块。它会分析进入您网站的所有 Web 流量,如果检测到已知的异常行为,则会通过“403:禁止访问”响应阻止访问。
现在稍微有点负面的是,MidSecurity 有几十个默认规则集,虽然效果很好,但可能会导致误报。因此,当你实施它时,你很可能需要在前几周对其进行调整。
但最终结果是,经过这个“了解你”的阶段后,你将拥有一个可以启发式地保护你的网站免受已知不良行为侵害的工具。而不仅仅是保留一个 IP 地址列表。
答案2
我不建议尝试自动执行此操作,我建议手动阻止 IP。我会做的唯一自动化系统是脚本或类似的东西,它可以解析您的日志以查找类似的错误。
使用 ufw 封锁 IP
sudo ufw deny from <ip address>
使用 iptables
sudo iptables -I INPUT -s <ip address> -j DROP
答案3
对我有用的解决方案是 fail2ban,正如 @ceejayoz 在评论中指出的那样
@iain——这实际上是重复的——谢谢你指出这一点。