随着企业更加期待采用软件定义网络(Software Defined Networking, SDN)的网络架构,其首要关心的问题就是安全。企业想要知道SDN如何为他们的应用、数据以及网络基础设施提供可靠的安全保障。通过引入SDN,需要引入新的网络安全通信策略。该篇文章将通过回顾在SDN架构中的攻击方法,分享一种SDN虚拟网络基础设施的安全强化方法。此外,该篇文章还将探讨目前正在研发的SDN安全部署方法。
1 SDN架构下的攻击方法
软件定义网络(Software Defined Networking , SDN)是一种从数据转发平面中分离控制平面以实现支持网络虚拟化的新技术。大多数SDN体系架构有三层:最底层是支持SDN功能的网络基础设施,中间层是具有网络核心控制权的SDN控制器,最上层包括SDN配置管理的应用程序和服务。尽管许多SDN架构相对较新,并且SDN仍处于早期探索的领域。但我们可以肯定,随着SDN技术的发展和更广泛地使用,它仍会成为攻击者的目标。
我们可以预见几种针对SDN架构的攻击方法。SDN架构较为常见网络安全问题包括对SDN架构中各层的攻击。让我们看看可能会在每一层上发生的攻击。下面以图1为例,简要说明攻击者可能从哪些地方发起攻击。
图 1 SDN架构下的攻击方法示意图
1.1 数据层的攻击
攻击者可能将来自网络本身的某个节点(例如,OF交换机,接入SDN交换机的主机)作为攻击目标。从理论上说,攻击者可以先获得未经网络访问的权限,然后尝试进行攻击运行状态不稳定的网络节点。这可能是一个拒绝服务攻击(Denial of Service , DoS),或者是对交换机等网络基础设施进行的Fuzzing攻击。
有许多南向接口协议用于控制器与数据层的交换机进行通信。这些SDN南向接口协议可以采用OpenFlow、Open vSwitch交换机配置管理协议(Open vSwitch Database Management Protocol, OVSDB)、路径计算单元的通信协议(Path Computation Element Communication Protocol,PCEP)、路由系统接口协议(Interface to the Routing System ,I2RS)、BGP-LS、OpenStack Neutron、开放管理基础设施(Open Management Infrastructure,OMI)、Puppet、 Chef、Diameter、Radius、NETCONF、可扩展通讯和表示协议(Extensible Messaging and Presence Protocol,XMPP)、名址分离网络协议(Locator/ID Separation Protocol, LISP)、简单网络管理协议(Simple Network Management Protocol,SNMP)、CLI、嵌入式事件管理器(Embedded Event Manager, EEM)、Cisco onePK、ACI,Opflex等等。每个协议虽然都有自己的安全通信机制。但因为这些协议都非常新,所以并没有能够实现综合安全部署的方法。
攻击者也可以利用这些协议的特性在OF交换机中添加新的流表项。之所以这么做,是因为攻击者试图将这些特定服务类型的数据流进行欺骗“拦截”,不允许其在网络中传输。攻击者有可能引入一个新的数据流,并且指导引入的数据流绕过防火墙,从而使攻击者取得数据流走向的控制权。攻击者也有可能利用这些能力来进行网络嗅探,甚至可能引发中间人攻击。
攻击者可以通过在网络中嗅探得知哪些数据流正在流动,哪些数据流被允许在网络中传输。攻击者可以对OF交换机与控制器之间的南向接口通信进行嗅探,嗅探所获得的信息可用于再次发起攻击或进行简单的网络扫描探测。
大多SDN系统部署在数据中心,并且数据中心会频繁的使用数据中心互联(Data Center Interconnect, DCI)协议。例如:使用GRE的网络虚拟化(Network Virtualization using GRE, NVGRE)、无状态传输通道(Stateless Transport Tunneling, STT)、虚拟可扩展LAN(Virtual Extensible LAN, VXLAN)、思科虚拟化覆盖传输(Overlay Transport Virtualization, OTV)、L2MP、TRILL-based、SPB等等。这些协议可能缺少加密和认证机制来保证数据包内容在传输过程中的安全。这些新的协议在设计之初或在满足供应商或客户需求实现这些协议的时候,不免有漏洞存在。攻击者可能目的很明确的创建一个具有欺骗性质的数据流,让其在DCI连接中传输,或者通过针对DCI连接发起一个拒绝服务攻击。
1.2 控制层的攻击
SDN控制器是个很明显的攻击目标。攻击者可能会为了不同的目的而把SDN控制器作为攻击目标。攻击者可能会向控制器发送伪装的南向/北向接口对话消息,如果控制器回复了攻击者发送的南向/北向接口对话消息,那么攻击者就有能力绕过控制器所部署的安全策略的检测。
攻击者可能会向控制器发起DoS或其他方式的资源消耗攻击,使得控制器处理Packet In消息变得非常缓慢。甚至可能导致整个网络崩溃。
SDN控制器通常运行在像Linux这样的操作系统上。如果控制器运行在通用操作系统上,那么操作系统中存在的漏洞将会成为控制器的安全漏洞。而控制器的启动和工作通常是使用默认密码并且没有任何其他安全配置。所以,SDN工程师通常很小心的工作,在生产配置过程中都不愿碰这些控制器,因为害怕搞坏如此脆弱的系统。
最糟糕的情况是:攻击者部署自己的控制器,并且欺骗那些OF交换机,让它们误以为攻击者控制的“伪装”控制器为主控制器。随后,攻击者可以向OF交换机的流表中下发流表项。此时,SDN工程师部署的控制器对这些数据流没有访问控制权限。在这种情况下,攻击者拥有了网络控制的最高权限。
1.3 应用层的攻击
攻击北向接口协议的行为也可以看做是一种攻击的方法。这些北向接口都由控制器管理。这些北向接口可以通过Python、Java、C、REST、XML、JSON等方式进行数据封装。如果攻击者利用了这些公开且没有任何认证机制的北向接口,那么攻击者就可以通过控制器来控制SDN网络的通信,并且可以制定自己的“业务策略”。
在现有几个较为著名的SDN开源项目中,他们将自己的北向接口通过REST API的形式向外暴露,并且这些北向接口所提供认证机制的较为少数。如果一个SDN系统部署时没有改善这种情况。那么攻击者就可以查询部署系统的配置,并且部署自己的网络设置。
2 SDN架构的安全强化
通过上述对SDN系统的介绍,亟需一种新的方法来保护控制平面的安全通信。在传统的IP网络中控制平面的安全性来自路由协议中所采用的安全措施,其具体包括在EIGRP、IS-IS或OSPFv2中使用MD5加密算法等等。一些实施者在部署传统IP网络时甚至没有遵循这些简单的规则。如果他们在设计部署SDN时同样不重视安全性,那么他们部署的系统极易产生漏洞并被攻击。让我们看看如何对SDN系统的三层进行安全强化,具体见上面的架构图。
2.1 数据平面的安全强化
典型的SDN系统都是基于x86的处理器,并且使用TLS(原SSL)协议来保障控制平面的安全。这些生存时间很长的HTTP会话可能会引发大范围的攻击,从而危及控制层面的完整性,这将导致使用云服务的租户被暴露。组织机构可能更愿意在网络设备代理和控制器之间使用TLS协议建立认证加密机制。倘若使用TLS协议,控制器和网络设备/SDN代理之间可以互相验证其身份,可以避免网络嗅探和南向接口的欺骗通信。
考虑到南向接口协议经常被使用,所以南向接口的通信安全必须被强化。一些协议可能会使用如之前所述的TLS会话机制,同样也可使用共享密钥密码或随机数的方式来防止再次发起的攻击。例如:SNMPv3协议的安全性比SNMPv2c和SSH协议高,更远比Telnet协议安全性高。其他的专有南向接口协议可能使用自己的方法来建立控制器和网络代理设备之间的加密认证通信机制,从而有效防止攻击者的网络嗅探和欺骗。
同样,由于考虑到DCI协议经常被使用到,所以可能会有可配置的选项进行隧道端点的验证和隧道的安全通信。然而,一些DCI协议并没有提供任何的安全配置功能。
机构可能相信一个专用网有其固有的安全性。随着机构拓展他们的虚拟网络、SDN云服务和远程数据中心,验证物理路径可能就没有那么容易了,使得防止未经授权的访问相比一个机构所控制的物理访问更容易。但随着网络的虚拟化,实际的物理路径变得有点“模糊”,很难保证你看不到什么。
2.2 控制层的安全强化
控制器是一个关键点攻击目标。因此,它的安全性必须被强化。控制器和网络节点的安全性最终归结于主机操作系统的安全性。强化所有公共的Linux服务器的安全性是最好的选择。这样,机构就可通过其控制器密切监控任何可疑行为。
机构也希望在SDN网络中防止未经授权的访问行为。SDN系统应该允许管理员通过安全认证来登陆SDN控制器。即使是基于角色访问控制(Role-Based Access Control, RBAC)策略,也必须要有控制器管理员的存在。日志记录和审计跟踪对于区别是管理员所做的配置还是入侵者所做的未经授权配置是非常有帮助的。
如果一个控制器遭受了DoS攻击,那么它必须拥有一个高可靠性(High-Availability, HA)的架构。采用冗余控制器的SDN可能会丧失主控制器的选举功能。如果攻击者对所有控制器进行DoS攻击,那么攻击的危害性大大提升。此外,攻击者的倘若采用隐形攻击,那么受攻击目标尤其不易被发现。
2.3 应用层的安全强化
另一个保护措施是使用带外数据(Out of Band,OOB)网络来控制流量传输。它在数据中心部署一个OOB网络,相比在企业广域网中部署成本更低更简单。使用一个OOB网络也可强化控制器的南/北向接口协议通信安全。
采用TLS、SSH协议或其他的方法来强化北向接口的通信和控制器的管控将是最佳选择。来自应用程序、服务间的请求或者来自控制器中的数据,都应该有相应的加密认证方式来确保数据及通信的安全。
给所有基于北向接口的应用程序进行请求SDN资源的安全编码非常有必要。安全编码不仅有利于因特网web程序的安全,而且也适用于SDN北向接口的安全强化。
有些SDN系统有能力根据OF交换机中的数据流验证控制器的策略。这种类型的检查(类似于FlowChecker)有助于评估控制器对攻击的防御效果。
3 总结
在SDN系统中,我们只能尝试预测攻击者可能将什么作为目标。由于在新的协议、新的控制器软件和新的部署方式下,SDN攻击的方式是未知的,故基于SDN架构,我们只可以预测攻击者最可能攻击的地方。如果我们把自己置身攻击者的角度,我们或许会发现架构的不足之处,然后我们就可以提前对架构中的不足之处进行安全强化。
在一个机构开始部署SDN项目时,他们应该在早期设计阶段完成系统安全规划,不要让系统的安全规划推迟到结项扫尾阶段。如果等到SDN系统运行时再去强化南北向接口的通信安全,那么有可会造成网络所提供的服务质量不稳定。和大多数新生事物一样,尽早的规划,企业可以在研发道路上少走许多弯路。
(南京晓庄学院 史煜凯,张家华,杨杨,张梦嘉 译)
SDNLAB语:鉴于互联网技术的发展经验,开发人员已经深刻地意识到,网络设计初期就应该考虑到安全问题。近年来,越来越多的技术团队也相继提出了关于SDN安全的需求分析及解决方案。据了解,参与该篇文章翻译的这支团队曾在“第一届全国高校软件定义网络(SDN)应用创新开发大赛”中脱颖而出,由南京晓庄学院张家华和杨种学两位老师指导,史煜凯和梅浩同学完成的《面向SDN架构的DDoS威胁识别与防护策略》作品获得总决赛三等奖。小编相信更多高校创新力量的引入,势必加速SDN的发展。 译自:http://www.computerworld.com.sg/blogs/guest-blogs/sdn-security-attack-vectors-and-sdn-hardening/page=1