如何为 iptables 编写自动化测试?

Phi*_*ost 13 automated-testing iptables

我正在使用iptables. 我想为断言以下内容的配置编写验收测试:

  • 来自互联网上某个人的流量未被转发,并且
  • 从公司 LAN 上的主机转发到 DMZ 中 Web 服务器上的端口 80 的 TCP。

一个古老的 FAQ暗示了一个iptables -C选项,它允许人们提出类似这样的问题,“给定一个从 X 到 Y,在端口 Z 上的数据包,它会被接受还是被丢弃?” 尽管 FAQ 建议它是这样工作的,因为iptables(但可能不像ipchains它在示例中使用的那样)该-C选项似乎没有模拟运行所有规则的测试数据包,而是检查是否存在完全匹配的规则。这作为测试的价值不大。我想断言规则具有预期的效果,而不仅仅是它们存在。

我已经考虑过创建更多的测试 VM 和一个虚拟网络,然后使用诸如nmap效果之类的工具进行探索。但是,由于创建所有这些额外虚拟机的复杂性,我避免使用此解决方案,这对于生成一些测试流量来说确实是一种非常繁重的方法。拥有一种自动化测试方法也很好,它也可以在生产中的真实服务器上运行。

我还能如何解决这个问题?我是否可以使用某种机制来生成或模拟任意流量,然后知道它是否被(或将被)丢弃或接受iptables

Pat*_*Pat 0

专业人士在两家公司提供的硬件/软件的帮助下做到了这一点。

ixiacom.com

www.spirent.com

在第一种情况下,您可以使用 Ixia 400T 机箱 + Ixload 之类的东西。

在第二种情况下,Smartbits 或 Testcenter 及其相应的应用程序

这些设备(除其他外)可以模拟许多客户端在您选择的目标服务器上执行不同类型的请求。他们准备好测试您的服务器安全性,包括一组预定义的攻击测试,而且您始终可以定义自己的一组。它们还具有许多其他功能,例如负载压力测试等。

这不是一个便宜的选择。