iptables,阻止大量 IP 地址

Twi*_*rim 6 performance firewall iptables centos

如果 IP 地址看起来是来自我们托管的网站的“屏幕抓取”内容,我希望以相对自动化的方式阻止这些 IP 地址。过去,这是通过一些巧妙的 perl 脚本和 OpenBSD 的 pf 实现的。pf 很棒,因为您可以为它提供漂亮的 IP 地址表,并且它将有效地处理基于它们的阻塞。然而,出于各种原因(在我之前),他们决定切换到 CentOS。iptables 本身并没有提供阻止大量地址的能力(我听说阻止 5000+ 并不罕见),而且我对将这么多规则添加到 iptable 中有点谨慎。

ipt_recent 这样做会很棒,而且它为严重减慢访问提供了很大的灵活性,但是 CentOS 内核中有一个错误阻止我使用它(已报告,但正在等待修复)。

使用 ipset 将需要编译比 CentOS 附带的更新版本的 iptables,虽然我完全有能力这样做,但从修补、安全性和一致性的角度来看,我宁愿不这样做。

除了这两个之外,看起来 nfblock 是一个合理的选择。有没有人知道实现这一目标的其他方法?我对 iptables 中的数千个 IP 地址的担忧是不是没有根据?

War*_*ner 4

iptables是用于操作 netfilter 的用户级工具。netfilter 是内核中处理数据包过滤的代码。从上下文来看,更改用户空间工具只会改变您的体验,而不会改变过滤的操作方式。

我在 Linux 中从未遇到过指定规则数​​量的限制,并且自从用户空间工具诞生以来我一直在使用 Linux 进行防火墙ipfwadm。值得注意的是,Netfilter 直到 2.4.x 内核才被引入 Linux,并且ipfwadm是 ipfw 的接口,而不是 netfilter。如果您可以在您的环境中继续使用 OpenBSD,那么它非常适合用作防火墙。

该限制可能是基于系统资源的物理限制,重点是可用 RAM 的数量。如果遇到问题,您可能需要调整 Linux 内核中的最大 ip 连接设置。在具有现代 Linux 发行版的现代硬件上,您不太可能遇到这两种情况。

如果您想讨论 netfilter 的更详细的细节,您最好在 netfilter 邮件列表上进一步讨论此对话,因为他们将是主题专家。

如果这不能回答您的问题,请随时澄清,我很乐意对其进行修改。

Netfilter 用户遇到内存限制测试 netfilter 限制