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列入白名单以进行恢复.

相关文章

1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...
如何抑制stable_secret读取关键的“net.ipv6.conf.all.stabl...
1 删除0字节文件 find -type f -size 0 -exec rm -rf {} ...
## 步骤 1:安装必要的软件包 首先,需要确保系统已安装 `dh...