据我所知,大多数路由器/防火墙都能够在网络级别阻止 IP 表。例如,IPtables 就非常有效。
但是,我想要一个应用层 IP 块。我有一个 HAproxy 负载均衡器,可将流量负载均衡到 4 个后端 apache/nginx Web 服务器。我有时会在我的网站上遇到抓取和 GET 请求 DDoS。我希望能够快速(手动)阻止应用层的 IP 地址。如何阻止 IP 地址、Apache 允许/拒绝、.httaccess?有没有更有效/更简单的方法来阻止 IP?如果我有一个很长的阻止列表怎么办?我也希望有一种阻止特定用户代理的方法。
答案1
看看这个:禁止失败
它会扫描 Apache 的日志文件并阻止有恶意请求的 IP。不过,我没有这方面的经验,也许值得一试!
您可以在配置中禁止某些用户代理,并加载一个名为的附加模块:mod_authz_host(http://httpd.apache.org/docs/2.2/howto/access.html)。这可能是个好办法。但攻击者可以轻松更改其用户代理。因此,上述解决方案可能更有帮助。
问候
塞缪尔
答案2
您应该尝试 Apache 的 mod_evasive 模块。它具有与 IPtables 交互的功能(如果您需要的话),您还可以设置白名单。
以下是一些关于它的文档: https://www.linode.com/docs/websites/apache-tips-and-tricks/modevasive-on-apache
更新:
要手动阻止或使用 list.txt 文件,您可以使用 iptables 工具和/或读取 list.txt 文件的 shell 命令,如下所示:
for i in `cat list.txt`; do iptables -A INPUT -p tcp -s $i -j DROP; done
在这种情况下,list.txt 每行包含 IP 地址。
有关 iptables 工具的更多信息: https://help.ubuntu.com/community/IptablesHowTo
答案3
您是否考虑过使用 GeoIP 模块?这些模块专门设计用于在应用程序级别高效处理大量 IP 列表并允许对其做出决定(例如允许、阻止、重定向等)。