将 fwbuilder 规则导出到适合用 iptables-restore 读取的文件?

将 fwbuilder 规则导出到适合用 iptables-restore 读取的文件?

fwbuilder 似乎总是希望将防火墙规则直接写入将运行它们的设备,但是我想将它们写入规则文件,然后我可以通过配置管理(ansible)维护和更新设备。

澄清:希望以适合 iptables-restore 使用的格式写出规则。

这可能吗?

答案1

fwbuilder 不会生成开箱即用的“直接” iptables-restore 兼容脚本,但可以进行一些修改。它分为两部分:

首先,在防火墙设置对话框中的“脚本”选项卡中,勾选“使用 iptables-restore 激活策略”复选框。在同一选项卡中关闭生成的脚本的所有其他功能。

规则采用 iptables-restore 格式,但由于默认生成的脚本想要将它们发送到 iptables-restore 的标准输入,因此它们生成如下:

    (

    echo '*filter'
    # ================ Table 'filter', automatic rules
    echo :INPUT DROP [0:0]
    echo :FORWARD DROP [0:0]
    echo :OUTPUT DROP [0:0]
    # accept established sessions
    echo "-A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT "
    echo "-A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT "
    echo "-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT "
    # ================ Table 'filter', rule set Policy
    #
    # Rule  0 (global)
    echo ":Cid5468X36359.0 - [0:0]"

     . . . . . . . . 

    echo "-A POSTROUTING -o eth1   -s 10.0.18.0/24  -j SNAT --to-source 74.123.224.162 "
    echo "-A POSTROUTING -o eth1   -s 10.0.22.0/24  -j SNAT --to-source 74.123.224.162 "
    #
    echo COMMIT


    ) | $IPTABLES_RESTORE; IPTABLES_RESTORE_RES=$?

您可以用自己的实用程序替换真正的 iptables-restore,该实用程序将从 stdin 中获取这些规则并将它们存储在文件中,该文件将采用正确的 iptables-restore 格式(这是您想要的)。该实用程序可以是简单的,例如“tee 文件”。要接管 iptables-restore,请打开防火墙属性中的“主机操作系统设置”对话框,转到“路径”选项卡并更改 iptables-restore 的路径,将其替换为路径和实用程序或脚本的名称。

由于您没有使用 fwbuilder 期望的默认脚本格式,因此其内置的策略安装程序无论如何都无法工作。因此您需要做的是运行生成的脚本来生成正确的 iptables-restore 文件,然后将其安装在它所属的位置。后面的部分如何做取决于您。

您还可以更改生成脚本的格式以删除不需要的部分。生成的脚本是使用您可以修改的模板构建的。请参阅用户指南第 13 章“Configlets”。这个想法是“简化”生成的脚本以仅保留应该已经采用 iptables-restore 格式的 iptables 规则并删除其他所有内容。我认为规则仍将采用“echo -A INPUT ...”的形式,因此您需要实际运行生成的脚本以获取所需格式的规则。

相关内容