我正在运行一个安装了FreePBX/Astrisk的linux盒。我用ip2location的名单屏蔽了中国和香港。com/blockvisitorsbycountry.aspx .网站。我的fail2ban就像每隔3-9分钟就有一个街区,现在我的尝试非常有限,通常每天8到10次。我想阻止更多,但我担心,如果我再增加10k的桌子,我可能会节流系统回到石器时代。你认为如何?
发布于 2015-08-16 12:06:05
iptables规则的主要问题是它们是按顺序执行的,如果规则集很大,则在数据包被授予访问权或拒绝之前,有相当多的规则必须进行解析。
沃布尔的回答已经解释了许多减少处理代价的策略,通过巧妙的排序规则,我认为最重要的策略是使用状态防火墙配置,其中只根据完整的规则集检查新的连接,并且一旦建立该连接的初始数据包被检查和批准,该连接中的所有后续数据包都被授予访问权。
假设您现在有许多阻止查看者的丢弃规则:
# Source: http://www.ip2location.com/free/visitor-blocker
iptables -A INPUT -s 1.0.1.0/24 -j DROP
iptables -A INPUT -s 1.0.2.0/23 -j DROP
iptables -A INPUT -s 1.1.0.0/24 -j DROP
iptables -A INPUT -s 1.1.2.0/23 -j DROP
iptables -A INPUT -s 1.1.8.0/21 -j DROP
iptables -A INPUT -s 119.15.136.0/21 -j DROP
iptables -A INPUT -s 119.16.0.0/16 -j DROP
iptables -A INPUT -s 119.18.192.0/20 -j DROP
iptables -A INPUT -s 119.18.208.0/21 -j DROP通过使用ipset实用程序,可以将这些规则简化为单个iptables规则。
IP集是由内核维护的网络地址和/或范围列表,与之匹配要比iptables中的顺序匹配规则快得多。
首先创建一个IP集( 手册为随机大小的网卡推荐hash:net类型):
ipset create blacklist-china hash:net hashsize 4096添加要阻止的CIDR范围:
ipset add blacklist-china 1.0.1.0/24
ipset add blacklist-china 1.0.2.0/23
ipset add blacklist-china 1.1.0.0/24
ipset add blacklist-china 1.1.2.0/23
ipset add blacklist-china 1.1.8.0/21
ipset add blacklist-china 119.15.136.0/21
ipset add blacklist-china 119.16.0.0/16
ipset add blacklist-china 119.18.192.0/20
ipset add blacklist-china 119.18.208.0/21您的防火墙配置现在简化为:
iptables -m set --match-set blacklist-china src -j DROP发布于 2015-08-16 16:58:40
还有一种方法是使用iptables的xt_geoip模块。虽然我还没有针对ipsets测试这方面的性能(如果我正确理解源代码,xt_geoip使用d&c二进制搜索,而ipsets使用散列)。这方面的优点可能很容易更新。
例如,在默认情况下,Ubuntu是在表。加载项.dkms中发布的。
https://serverfault.com/questions/714437
复制相似问题