软件定义网络从低层数据包解耦,控制功能的转发帧智能地决定应用程序的流量应如何传输这一概念发展演化而来。控制面板从转发面板的分离使得网络为数据包处理提供了创新的方法,并为建立网络虚拟化提供了新的范式。SDN开辟了整个网络设计的新世界和创造性的网络方法。SDN也引发我们重新思考如何在网络上执行安全政策。
在OpenFlow的SDN模型中,网络交换机内的流量是通过OpenFlow控制器安置的。如果流量是不存在的(Table-miss项),然后切换到控制器寻求帮助,以确定数据包应该如何转发。OpenFlow技术规范规定,如果Table-miss项的流量入口在交换机中不存在,就没有任何规则将数据包发送到控制器,然后数据包就会被交换器丢弃。如果交换机将数据包发送到控制器,然后控制器处理数据包的消息,进而决定数据包的命运。然后控制器确定数据包是否应被转发或丢弃。这听起来像是SDN交换机执行的是类似防火墙的功能,执行的是将不包括在流量表中的流量数据包丢弃的标准的安全政策。这可以被认为是类似于默认的“错误保护状态”(Fail-Safe Stance) ,其也在由Elizabeth D. Zwicky、Simon Cooper和D. Brent Chapman联合编写的《建立互联网防火墙》一书中提到。乍一看,这听起来像一种非常好的新的安全担保形式,使SDN交换机每个端口看起来就像一个防火墙。
许多SDN交换机运行起来酷似一个标准的以太网交换机,以太网帧的所有端口的洪水般的数据流量发往广播,多播或未知的MAC地址。大多数的SDN交换机ARP流量通常就是像一个典型的基于硬件的以太网交换机。在大多数情况下,一个SDN交换机的默认行为就像一个以太网桥,或学习型交换机。然而,让一个SDN交换机成为一个明确的转发模式,只有被允许的流量或由控制器配置/推送的流量将被允许发送。
如果环境中的每一个以太网交换机都能够像传统的防火墙,那么,这将改变在网络环境下实现安全策略的方式。想象一下,如果每个以太网交换机是多端口的防火墙,则防火墙策略可以在网络上通过每次进入交换机端口和交换机之间的每一条链路上实施。这样,就对每一台服务器,台式机,每一条链路都设置了防火墙,而防火墙策略会通过一个控制器来实施,而控制器会对当前的应用程序流量现状有一个全局观并让获得允许的流量进行有效传输。在整个环境执行安全政策意味着安全边界的完整侵蚀。太多安全政策的实施及其手动执行可能会为您企业的安全管理带来噩梦。然而,利用控制器架构,该安全政策将只需创建一次,然后即可推广到每台网络设备执行了。
网络切分(network slicing)是SDN中非常常见的使用案例之一。一个网络在逻辑上可以划分为分隔的网络,而这些网络是覆盖在同一物理网络硬件上的。网络切分在大学里非常流行一种,因为大学里,他们希望将不同的部门分开(包括招生部门、财务部门、宿舍、计算机科学系等),以便使得各自成为一个自成一体的逻辑网络区域。SDN可以分隔网络,类似于虚拟路由和转发(VRF)的情况,可用于分隔第3层转发。这也可以通过在控制面板和数据面板之间添加一个切片层来实现,从而使安全策略得以能够针对特定的切片。在“流空间(Flowspace)”强制执行切片之间的强隔离意味着一个切片的行动不会影响另一片。想要了解更多信息,您可以参考Flowvisor和流空间防火墙(FSFW: Flowspace firewall)。这方面的一个例子就是思科的可扩展网络控制器(XNC)及网络分层应用程序。在这些方面,SDN可以提供“多类型防御体系”的概念,而这一概念在《构建网络防火墙》一书中也被提及。
使用SDN交换机作为防火墙的可行性的关键概念在于,其将维持应用程序流量的状态。访问控制列表(ACL)是无状态的,当连接开始或结束时并没有意识。即使有老式的思科ACL CLI参数,ACL也只是略显“带状态功能”。访问控制列表通常并不关注任何三向TCP握手(SYN、SYN-ACK和 ACK),也不关注FIN/ACK会话终止。另一方面,状态防火墙能够观察会话的建立和关闭过程,定向使用状态检测适用的政策。
那么,现代的SDN产品是否能够通过安全的实施部署,使其有可能运行起来像传统的防火墙呢?当涉及到思科的以应用程序为中心的基础设施(ACI)时,Nexus 9000交换机就能够以一个无状态的方式运行。应用程序网络配置文件(ANP)在应用程序策略基础设施控制器(APIC)中配置,并以无状态的方式被部署到交换机的ACI架构中。因此,一个ACI系统将不能够作为标准状态防火墙在同一安全级别上操作。这就是为什么ACI允许第4层到第7层的服务图形进行配置,并集成整合到ACI架构的原因了。
当涉及到Open vSwitch(OVS)时,其仅支持无状态匹配的政策。配置OVS政策以匹配TCP标签或使用一种 “学习”方法配置规则,以建立流量回归方法。然而,这些方法中没有一种是像一个传统状态检测防火墙那样的有状态的。Open vSwitch社区正在试图在这方面进行努力,以便让连接跟踪(Conntrack)允许OVS通知Netfilter(如iptables)连接跟踪,并保持现有会话状态表。
然而,Project Floodlight可以配置ACL,这运行起来也像一个无状态防火墙。Floodlight有一个防火墙应用程序模块,通过检查数据包执行ACL规则。这以一种反应方式,让第一个数据包为流量创建实例,基于优先级排序的决策规则集允许或拒绝。规则允许有重叠的流空间,但优先创建第一个匹配规则的行动,自上而下的操作政策。
VMware NSX能够在SDN环境配置安全策略。NSX的vSphere支持逻辑交换/路由、防火墙、负载均衡、和VPN功能。防火墙规则在vNIC强制执行,而当主机迁移时,防火墙策略与虚拟机相关联,其策略也随之移动。NSX分布式防火墙是一种可加载内核模块,提供有状态的L2/L3/L4双协议的防火墙,可以执行反欺骗。VMware NSX的防火墙策略运作起来就像一个有自反ACL的思科路由器。当涉及到等价多路径(ECMP)设计或高可用性(HA)时, NSX边缘服务网关的防火墙功能以无状态方式运行。换句话说,有状态的防火墙和负载均衡或NAT不支持边缘服务网关和高可用性或ECMP拓扑。
还有人正在尝试创建SDN系统以提供强大的安全策略。这方面的研究项目有诸如FlowGuard和一篇题为《基于OpenFlow原型的面向状态的SDN硬件防火墙》的文章,由北达科他大学的雅各伯·柯林斯所撰写,表明了在SDN网络设备建立获得状态功能的潜在可能性。
从上述的分析中,我们可以得出这样的结论:从控制器获取转发政策的SDN交换机不一定有状态。因此,这些SDN功能的交换机无法提供作为一个状态防火墙同样水平的保护。询问供应商关于他们SDN解决方案的防火墙功能的有状态细节,以及了解他们是如何运作的,是非常重要的。因为许多这些SDN系统可以以无状态的方式操作,如果您企业需要有状态防火墙的保护,那么您必须使用SDN政策引导流量与服务链的状态包,检测防火墙的网络功能虚拟化(NFV)。