Iptables规则验证

时间:2012-09-06 23:04:30

标签: perl iptables

我有一个perl脚本生成一个shell脚本,稍后将由iptables加载到远程计算机上。 perl脚本的数据输入来自配置文件,我可以在其中为每个规则指定所有类型的参数。

问题在于验证,如果没有执行它的能力,您将如何验证整套规则?

我搜索了CPAN,最接近的解决方案是IPTables::Rule,但它只在生成规则时验证了一些限制。我不能使用IPTables :: IPv4,因为它直接与主机iptables交互。

4 个答案:

答案 0 :(得分:1)

这不是直接可以实现的。 iptables规则字符串语法部分由iptables(8)解析,部分由加载的各个匹配或操作模块解析。在没有直接调用底层C模块的情况下,没有标准的方法来解析输入。

答案 1 :(得分:1)

查看fffuu,这是一款精美的正式防火墙通用信息。它是iptables防火墙规则集的静态分析器。该工具仍在积极开发中(截至2017年2月)尚未完全完成。但是,核心已经完全正式验证,因此,您可以信任它。

作为输入,它只需要iptables-save的输出。对于您的方案,您可以在虚拟机上生成此输出。

您想验证什么?

fffuu可以:

  • 检查欺骗保护
  • 将防火墙翻译成简化版本,然后手动检查
  • 在整个IPv4和IPv6地址空间中可视化防火墙隐含的访问控制关系。默认情况下,它会检查目标端口22和80。

请注意,ITval存在错误,已在Verified iptables Firewall Analysis by Cornelius Diekmann, Julius Michaelis, Maximilian Haslbeck, and Georg Carle. In IFIP Networking 2016, Vienna, Austria, May 2016 (Section 2, paragraph 2)中报告。

免责声明:我是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/