备份我的自定义 iptables 规则(fail2ban 规则除外)

备份我的自定义 iptables 规则(fail2ban 规则除外)

我拥有的

我有一些自定义 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

相关内容