首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用大型IP黑名单拒绝访问web服务器的最佳方法?

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

Server Fault用户
提问于 2009-05-30 23:36:52
回答 5查看 4.8K关注 0票数 4

是否有有效和容易的方法使用IP黑名单(就像这个,但可能大2-3倍,不能简化为CIDR),以拒绝使用标准/用户空间软件(没有内核重新编译)访问web服务器(或者是lighttpd或Apache)?

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

EN

回答 5

Server Fault用户

发布于 2009-05-30 23:59:34

你可以尝试使用模块 (google还不能添加链接,新用户)。禁用所有下载的区块列表,并仅使用您生成的本地封锁列表。您可能需要将NFQUEUE (netlink queue)支持添加到内核中,但默认情况下它可能已经存在了。

一般的设置是:对于您想要过滤的端口上的所有SYN数据包,使用netfilter的NFQUEUE操作将它们推送到位于userspace中的moblock。Moblock进行有效的匹配,并将接收或删除响应发送回netlink。

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

我在其默认配置(下载的区块)中使用了moblock,其IP范围约为230000,并且没有观察到明显的性能命中(不过,只过滤SYN数据包对于保持内核/用户空间通信量很重要)。

一个警告:如果moblock没有运行,我相信NFQUEUE的默认操作是删除,从而导致拒绝您的应用程序服务。尽管如此,我已经连续运行的moblock没有任何问题超过6个月。不过,您可能希望设置一个监视探针,如果一个已知的好IP无法再连接到服务器上的:80,它会提醒您。您肯定不想使用moblock来过滤ssh,除非您已经在netfilter中使用了一些可信的in来恢复。

票数 9
EN

Server Fault用户

发布于 2009-05-31 04:44:23

AFAIK拒绝Apache配置中的规则,iptables具有线性查找时间。

说大也大吧。您可以在IPTables中使用链来拆分它,即简化的方法是为每个A类地址块(例如1.0.0.0/8、2.0.0.0/8等)设置一条链。以及链中该块的规则,显着地减少了查找时间(即,最坏的情况~200条规则评估,以得到A类规则,然后在该块中有许多规则)。您还可以使用"iptables -v -n“来查看哪些规则集被计算得最重,并将它们移到顶部。还有其他更好的方法可以做到这一点,iptables文档将介绍这一点。

票数 4
EN

Server Fault用户

发布于 2009-05-31 00:02:12

是的,在你的系统里,应该有一个/etc/hosts.allow。看看,它有一些非常容易的例子来锁定IP,即使是在每个服务的基础上。

简而言之,在/etc/hosts.allow中:

代码语言:javascript
复制
ALL : ALL : allow

httpd : /etc/hosts.httpd.deny : deny

sshd : /etc/hosts.sshd.deny : deny
票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/15931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档