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

前端之家收集整理的这篇文章主要介绍了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列入白名单以进行恢复.

猜你在找的Linux相关文章