微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 使用大型IP黑名单拒绝访问Web服务器的最佳方法?

使用标准/用户空间软件拒绝访问Web服务器(lighttpd或Apache)是否有效且简单的方法来使用IP黑名单( like this one,但可能大2-3倍,不能简化为CIDR) Linux上没有内核重新编译?

Apache config和iptables中的AFAIK Deny规则具有线性查找时间.有些内核模块可以有效地处理大型IP列表,但是安装这些内核模块需要修补内核.

解决方法

您可以尝试使用 moblock(谷歌它 – 无法添加链接,新用户).禁用所有下载的阻止列表,并仅使用您生成的本地阻止列表.您可能需要向内核添加NFQUEUE(netlink queue)支持,但认情况下它可能已存在.

一般设置是:对于要过滤的端口上的所有SYN数据包,使用netfilter的NFQUEUE操作将它们推送到用户空间中的moblock. Moblock进行高效匹配,并向netlink发回ACCEPT或DROP响应.

moblock配置文件格式非常简单:在每一行上,给出一个名称一个IP范围,格式为123.123.123.42-123.123.124.56.当moblock加载范围时,它会构建一个有效的数据结构来匹配这些范围.当由于匹配而丢弃数据包时,将记录范围名称和实际源IP(如果禁用匹配记录,则不记录).

我已经在其认配置(下载的阻止列表)中使用了大约230000个IP范围的moblock,并且没有观察到任何可识别的性能损失(仅过滤SYN数据包对于保持内核/用户空间流量下降很重要).

一个警告:如果moblock没有运行,我相信NFQUEUE的认操作是DROP,导致应用程序的拒绝服务.也就是说,我已经让moblock连续运行了6个多月没有任何问题.尽管如此,您可能还需要设置一个监控探针,以便在已知良好的IP无法再连接到服务器上的80时向您发出警报.你肯定不想使用moblock来过滤ssh,除非你明确地将netfilter中的一些可信IP列入白名单以进行恢复.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐