我添加了 200 条 iptable 规则,如下所示:
iptables -A INPUT -s 108.62.150.0/24 -j DROP
iptables -A INPUT -s 109.108.64.0/19 -j DROP
iptables -A INPUT -s 109.110.32.0/19 -j DROP
阻止俄罗斯和东欧 IP 访问我的服务器。
但是,对于属于这些范围内的许多 IP,我的 fail2ban 仍然有效。
我的规则集的开头如下所示:
Chain INPUT (policy DROP)
target prot opt source destination
DROP tcp -- 0.0.0.0/0 127.0.0.0/8
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
DROP all -- 224.0.0.0/4 0.0.0.0/0
PUB_IN all -- 0.0.0.0/0 0.0.0.0/0
PUB_IN all -- 0.0.0.0/0 0.0.0.0/0
PUB_IN all -- 0.0.0.0/0 0.0.0.0/0
PUB_IN all -- 0.0.0.0/0 0.0.0.0/0
PUB_IN all -- 0.0.0.0/0 0.0.0.0/0
DROP all -- 0.0.0.0/0 0.0.0.0/0
DROP all -- 108.62.150.0/24 0.0.0.0/0
DROP all -- 109.108.64.0/19 0.0.0.0/0
DROP all -- 109.110.32.0/19 0.0.0.0/0
DROP all -- 109.110.64.0/19 0.0.0.0/0
DROP all -- 109.111.176.0/20 0.0.0.0/0
为什么他们还能通过?
是 PUB_IN 语句吗?我的阻止(DROP)规则是否应出现在 PUB_IN 规则之前?
答案1
Netfilter 表中规则的顺序很重要。您应该将PUB_IN
和ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
规则移到 DROP 规则之后。带有的规则state RELATED,ESTABLISHED
应保留原位。
如果规则匹配互补流量,则应按前缀较大的顺序排列它们(例如,/4 应位于顶部,/32 位于底部)。如果它们重叠(它们可能匹配相同的数据包),则重新排序它们会改变语义,但如果它们是互补的,则重新排序它们是安全的。