同时使用 iptables-persistent 和 fail2ban 时可能出现竞争条件?

同时使用 iptables-persistent 和 fail2ban 时可能出现竞争条件?

我使用该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-ip4tablesiptables-persistent

有没有一种安全或标准的方法来恢复 iptables 规则,而不会与启动 fail2ban 服务产生潜在冲突?或者是否保证iptables-restore在启动之前运行fail2ban

答案1

目前我已经把-n选项

当然,您可以使用iptables-restore --noflush ...它来避免从 fail2ban(或其他服务)中删除规则。只需注意规则的顺序(fail2ban 会在 INPUT 链中的所有其他规则之前插入规则,因此如果您必须在此后预先插入其他规则,则必须使用服务依赖项来执行此操作)。

但修改包管理的一些脚本可能不是一个好主意,因为它可能会被更新覆盖。

好吧,通常情况下,每个提供 iptables 规则的服务都应该只操作自己创建的规则和链。如果某个服务在运行时完全刷新 iptables,我会说,这是设计上错误的概念(应该修复)。

或者是否保证 iptables-restore 会在 fail2ban 启动之前运行?

您必须添加 fail2ban 服务的依赖项来保证这一点。

或者您可以尝试使用实际表格切换到一些更好的网络过滤器(例如nftables)。如果任何服务开始刷新整个列表(删除每个表格)并在两者之间执行此操作,您可能会遇到同样的问题。

相关内容