我使用该iptables
模块geoip
仅允许来自某些国家的流量并且fail2ban
通常阻止扫描。
我知道 fail2ban 本身管理着其规则的持久性。现在我还想让我的 geoip 规则具有持久性,使用iptables-persistent
。
我的(潜在)问题:当iptables-persistent
恢复规则时iptables-restore < /etc/iptables/rules.v4
没有使用-n
该选项,这意味着所有现有规则将被覆盖。
我现在担心系统启动时出现竞争条件,即在fail2ban
恢复其规则的过程中或完成后恢复其规则,然后iptables-restore
覆盖所有内容。
目前我已经把将被调用的-n
选项放进去了,但是修改包管理的一些脚本可能不是一个好主意,因为它可能会被更新覆盖。/usr/share/netfilter-persistent/plugins.d/15-ip4tables
iptables-persistent
有没有一种安全或标准的方法来恢复 iptables 规则,而不会与启动 fail2ban 服务产生潜在冲突?或者是否保证iptables-restore
在启动之前运行fail2ban
?
答案1
目前我已经把-n选项
当然,您可以使用iptables-restore --noflush ...
它来避免从 fail2ban(或其他服务)中删除规则。只需注意规则的顺序(fail2ban 会在 INPUT 链中的所有其他规则之前插入规则,因此如果您必须在此后预先插入其他规则,则必须使用服务依赖项来执行此操作)。
但修改包管理的一些脚本可能不是一个好主意,因为它可能会被更新覆盖。
好吧,通常情况下,每个提供 iptables 规则的服务都应该只操作自己创建的规则和链。如果某个服务在运行时完全刷新 iptables,我会说,这是设计上错误的概念(应该修复)。
或者是否保证 iptables-restore 会在 fail2ban 启动之前运行?
您必须添加 fail2ban 服务的依赖项来保证这一点。
或者您可以尝试使用实际表格切换到一些更好的网络过滤器(例如nftables
)。如果任何服务开始刷新整个列表(删除每个表格)并在两者之间执行此操作,您可能会遇到同样的问题。