我有一个perl
脚本生成一个shell脚本,稍后将由iptables
加载到远程计算机上。 perl脚本的数据输入来自配置文件,我可以在其中为每个规则指定所有类型的参数。
问题在于验证,如果没有执行它的能力,您将如何验证整套规则?
我搜索了CPAN,最接近的解决方案是IPTables::Rule,但它只在生成规则时验证了一些限制。我不能使用IPTables :: IPv4,因为它直接与主机iptables交互。
答案 0 :(得分:1)
这不是直接可以实现的。 iptables
规则字符串语法部分由iptables(8)
解析,部分由加载的各个匹配或操作模块解析。在没有直接调用底层C模块的情况下,没有标准的方法来解析输入。
答案 1 :(得分:1)
查看fffuu,这是一款精美的正式防火墙通用信息。它是iptables防火墙规则集的静态分析器。该工具仍在积极开发中(截至2017年2月)尚未完全完成。但是,核心已经完全正式验证,因此,您可以信任它。
作为输入,它只需要iptables-save
的输出。对于您的方案,您可以在虚拟机上生成此输出。
您想验证什么?
fffuu可以:
免责声明:我是fffuu的作者,我的观点可能有偏见,fffuu还不完美(还)。但是,嘿,它是免费的,自由的,我希望它有所帮助。随意重用任何代码: - )
答案 2 :(得分:1)
这是我在sh脚本中测试规则的方法:
#!/bin/sh
/usr/sbin/iptables-restore --test < yourfileofrules
[ $? -ne 0 ] && {
echo File does NOT syntax check
exit 1
}
在perl中,您将以自己喜欢的任何方式执行iptables-restore命令,然后检查退出状态是否为“ 0”。
答案 3 :(得分:0)
检查以下sf.net项目http://sourceforge.net/projects/itval/