我拥有的
我有一些自定义 iptables 规则,用于阻止除我信任的 IP 地址之外的所有人使用端口。以下是我之前备份它们的方式:
iptables-save > /etc/iptables.conf
cat > /etc/network/if-up.d/iptables << EOF
#!/bin/sh
iptables-restore < /etc/iptables.conf
EOF
chmod +x /etc/network/if-up.d/iptables
然后我安装并配置了fail2ban。一切正常。
我想要的是
假设我添加了一条新的受信任 IP 地址规则。它出现在iptables-save
输出中,但是由于它已经运行了一段时间,因此还有 fail2ban 规则。
我需要以某种方式分离和备份我的自定义规则,并保留 fail2ban 规则/链/等,因为无论如何它们都会被恢复。
我尝试过
首先想到的是iptables-save
通过 grep 并过滤掉包含的每一行f2b-*
,但这看起来不干净或不优雅,而且我不确定它有多可靠。
这个答案建议创建一个新的链,但是iptables-save
不能局限于特定的链,只能局限于表, 以及那些显得有些矜持。
清理 fail2ban 规则在进行备份之前这样做似乎也不是一个好主意。
我被困住了,搜索了几个小时都没有结果,请帮忙。
答案1
这取决于(至少取决于您在 fail2ban 中使用的操作)。
您可以尝试以下操作:
iptables-save | grep -vP '^(?:(-A f2b-|:f2b-)|-A INPUT\b.* -j f2b-)'
它应该在一般情况下有效。
下面这个用来验证是否f2b
有带前缀的东西:
iptables-save | grep -vP '^(?:(-A f2b-|:f2b-)|-A INPUT\b.* -j f2b-)' | grep f2b