我正在使用旧的 iptables v1.4.7 与 fail2ban 结合使用。但是我在日志中看到“已被禁止”的消息,无法弄清楚为什么它们仍能到达我的服务器并且没有被阻止f2b-星号部分如下。乍一看,您是否看到了以下不起作用的原因?我查看了其他答案,但它们没有给出任何解释。以下是输出:
[root@server bin]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
f2b-ASTERISK udp -- anywhere anywhere udp dpt:sip
DROP udp -- anywhere anywhere udp dpt:sip STRING match "friendly-scanner" ALGO name bm TO 65535
DROP udp -- anywhere anywhere udp dpt:sip STRING match "VaxSIPUserAgent" ALGO name bm TO 65535
DROP udp -- anywhere anywhere udp dpt:sip STRING match "VaxIPUserAgent" ALGO name bm TO 65535
DROP udp -- anywhere anywhere udp dpt:sip STRING match "sundayddr" ALGO name bm TO 65535
DROP udp -- anywhere anywhere udp dpt:sip STRING match "sipsak" ALGO name bm TO 65535
DROP udp -- anywhere anywhere udp dpt:sip STRING match "sipvicious" ALGO name bm TO 65535
DROP udp -- anywhere anywhere udp dpt:sip STRING match "iWar" ALGO name bm TO 65535
...
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2346 flags:0x17/0x02 limit: avg 1/min burst 3
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2346 flags:0x17/0x02
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW
DROP all -f 0.0.0.0/0 0.0.0.0/0
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x3F
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x00
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 limit: avg 5/sec burst 5
DROP icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:5060
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:5060
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:4569
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpts:10000:20000
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 flags:0x17/0x02 limit: avg 100/sec burst 100
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 flags:0x17/0x02
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:5666
...
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain f2b-ASTERISK (1 references)
target prot opt source destination
DROP all -- ip16.ip-54-37-90.eu anywhere
DROP all -- 207.231.108.225 anywhere
...
fail2ban.log:
2023-04-23 09:50:30,881 fail2ban.actions [26615]: NOTICE [asterisk-iptables] 207.231.108.225 already banned
当我检查 IP 时,它列在 f2b-ASTERISK 中:
[root@server bin]# iptables -L -n | grep "193.32.162.159"
DROP all -- 207.231.108.225 0.0.0.0/0
答案1
根据您的规则,该f2b-ASTERISK
链仅用于过滤 UDP 端口 5060 上的数据包:
Chain INPUT (policy DROP)
target prot opt source destination
f2b-ASTERISK udp -- anywhere anywhere udp dpt:sip
但是,您的 fail2ban 日志实际上并没有表明 Asterisk 禁令是由这种流量触发的 - 它可能是由其他东西(例如不同的端口,或 SIP-over-TCP 等)。
答案2
问题是没有任何东西引用你的链。你需要有类似的东西
iptables -I 输入 1 -j f2b-ASTERISK
这将导致 iptables 读取这些规则。
我会在 fail2ban 中切换到 ipset 模式,这样你的 iptables 规则就不会被数千条丢弃规则堵塞。
fail2ban 将创建同名的集合 f2b-ASTERISK
然后你可以得到如下的东西:
iptables -I INPUT 1 -m set --match-set f2b-ASTERIK -j DROP
现在 IP 列表可以增长而不会堵塞 iptables。
检查你的列表:
ipset save f2b-ASTERIK
这将列出该组中的所有 IP 地址。