编辑 iptables 配置文件与通过 iptables 命令添加规则有何优缺点

编辑 iptables 配置文件与通过 iptables 命令添加规则有何优缺点

我正在使用 CentOS 上的一个产品,偶尔需要自动在 iptables 配置中添加和删除规则。例如,在更新期间,我们希望明确拒绝入站服务流量,直到更新完成。目前,更新代码中使用的方法是使用sed其他文本处理实用程序注释掉配置文件中的相关行,iptables使用新配置文件重新启动服务,然后在更新结束时反转该过程,然后再次重新启动服务。

在我看来,更好的方法是iptables -D table rule-specification在进程开始时使用该命令,然后iptables -A table rule-specification在更新结束时使用该命令。

我看到自动操作配置文件的最大问题是脆弱性:有系统工具可以重写配置文件,并且可能重新排序参数等,可能会破坏文本解析(service iptables save是一个例子)。

从代码中进行此类系统配置更改的推荐方法是什么?为什么?

答案1

大多数遇到这种情况的人都会用一些抽象的方法来处理它。

例如。与其使用包含规则集的单个文件,为什么不构建包含规则的一组文件并将它们连接在一起。

例如,您可以将单独的规则添加到这样命名的文件中。

/etc/iptables-rules/00_flush_drop
/etc/iptables-rules/20_permitotherstuff
/etc/iptables-rules/10_permitssh
/etc/iptables-rules/99_drop

然后只需运行规则集即可run-parts /etc/iptables-rules。如果需要添加另一组规则,只需临时插入添加一个文件即可。然后根据需要删除。

您还应该强烈关注在配置中设置和使用 CHAINS。链有点像子例程。例如,您可以在防火墙的最顶部添加一条规则以跳入一条链。链有一个默认的 RETURN 策略。因此,当您需要添加临时规则时,只需将其插入该链中即可。当您不再需要它时,只需刷新该特定链条即可。

相关内容