SDN是一种新型的网络体系结构,它是将网络控制和网络转发解耦并开放可编程的网络体系结构。它颠覆了传统的网络结构。SDN对网络进行抽象以屏蔽底层复杂度,为上层提供简单高效的配置与管理。SDN将网络进行数控分离,使网络层次大大简化,只有控制平面和转发平面,控制平面采用集中式控制器来控管不同的网络设备,主要负责决策调度,转发平面只负责转发数据。SDN将网络虚拟化成一个整体,并对网络进行整体的规划和调度,这使得网络资源的分配更灵活且个性化。
文/孙浩博 王海涛 南京审计大学金审学院
一、引言
2006年以斯坦福大学Nick McKeown教授为首的研究团队首次提出了Openflow的概念并用于校园网络的试验创新,基于Openflow带给网络的可编程特性,软件定义网络(Software Defined Network, SDN)的概念应运而生。SDN的最大特点是实现了对网络的灵活编程和控制。SDN是一种新型的网络体系结构,它是将网络控制和网络转发解耦并开放可编程的网络体系结构。它颠覆了传统的网络结构。SDN对网络进行抽象以屏蔽底层复杂度,为上层提供简单高效的配置与管理。SDN将网络进行数控分离,使网络层次大大简化,只有控制平面和转发平面,控制平面采用集中式控制器来控管不同的网络设备,主要负责决策调度,转发平面只负责转发数据。SDN将网络虚拟化成一个整体,并对网络进行整体的规划和调度,这使得网络资源的分配更灵活且个性化。
SDN的核心思想是解耦、抽象和可编程性。解耦使得数据平面与控制平面分离,两层功能细化,同时解耦是实现网络虚拟化和逻辑控制的前提,其实现有利于新网络体系的建立和网络技术的推进。SDN的网络架构实现了网络转发抽象、分布状态抽象和配置抽象,它将物理的网络资源虚拟成网络视图资源,这与虚拟化和云计算技术的理念十分接近。此外传统的网络管理技术是针对某一台网络设备而言具备初级网络可编程性,SDN的可编程性是将网络看成一个整体,可编程性大大提高,对网络整体的资决策和调度有着明显的优势。SDN通过分离网络转发和控制层面对网络操控带来了极大的灵活性和可定制性,简化了网络配置和管理,提升了网络的服务性能。虽然SDN给网络操控和运作模式带来了巨大的变化但是也催生了新的安全威胁和隐患。
二、安全问题分析
1.安全威胁概述
SDN是网络技术发展的历史趋势,作为一项还在过渡时期的新技术SDN网络与传统的网络融合兼容的过程中将会出现诸多的问题,产生新的安全威胁。在图1所示的SDN基础架构中,应用层面向网络应用的设计和开发,应用APP的操作将会对其控制产生影响,人为的误触或者恶意的代码攻击都会对控制器乃至整个网络造成极大的影响。控制层主要是控制器在运作,控制器作为高价值单一故障点,更容易受到攻击。控制器上与应用层交互为用户提供个性化服务,下与转发层交互控制流转发,位置十分关键。控制器需要具有一定的网络防护能力和威胁隔离能力,其自我检测和数据备份能力也至关重要。转发层主要是支持OpenFlow的转发器在支撑,在现阶段OverLay网络构架的部署下,转发器和传统的交换机的交互不可避免,这种交互势必会产生意想不到的安全问题。此外OpenFlow协议本身还不是很成熟,也存在许多安全隐患。
2.数据平面安全分析
数据平面的主要任务是接收、解析数据包头,根据数据包头的信息进行转发策略的匹配,然后基于一些转发策略将数据包从相应的端口转发出去或者丢弃数据包。数据平面的转发过程中涉及的动作(即拆解和封装,匹配转发策略和转发调度)都可编程实现,转发调度十分灵活。但是这也意味着一旦OpenFlow交换机被入侵之后其非法操作空间更大,更随意。这一问题从设计之初就存在,下达指令的中枢是控制器,而OpenFlow交换机和控制器之间采用安全通道进行交互,所以安全的通道的安全性就成了一个重中之重。安全通道的安全认证,秘钥的安全保存,控制信息的秘密交互等都需要进一步增强。再者,数据平面的拆解包头工作是为了获取数据包转发具体信息,例如源目MAC、源目IP或者源目端口等,OpenFlow流表的包头域包括若干个元组,但是并非每次转发都必须用到若干个元组参数,在某些触发条件下,没有用到的元组位置有可能形成隐蔽信道,或者攻击者恶意修改了某些参数使交换机不能做好故障检测和处理。另外,有研究者通过研究发现交换机控制代理的吞吐量十分有限,这也就意味着交换机应对DDos攻击能力有限。
对数据流的操作是交换机最基本的能力,但是由于SDN交换机的可编程性、灵活性极高,使得数据在操作的时候暴露出一些安全问题,例如流表数据泄露、流表数据被恶意更改等安全隐患,以及针对流表数据的拒绝服务攻击威胁和业务数据的泄露等。
3.控制平面安全分析
由于SDN网络结构的特点,中心控制器成了SDN网络的单一故障点,对中心控制器的保护意味着对整个网络的保护。控制平面是SDN网络的指挥中枢,它既要负责给上层提供网络资源的抽象,又要灵活调度下层的资源,使网络得以运行。正因如此,控制平面的安全问题十分突出。
南北向接口的安全隐患对整个SDN网络的影响重大。目前控制器的南向接口通过安全通道与数据平面交互。南向接口的安全性和OpenFlow协议是分不开的,OpenFlow协议目前尚不完善,其本身的脆弱性就是安全隐患。比如OpenFlow 协议在建立连接过程中,要求连接双方必须先发送OFPT_HELLO消息,连接一旦失败则会发送OFPT_ERROR 消息,如此攻击者可以通过抓包等手段从中途拦截OFPT_HELLO消息或伪造OFPT_ERROR消息来扰乱正常连接的建立。此外,攻击者还可以通过恶意增加 decrement TTL值使数据包在网络中因 TTL 耗尽而提前被丢弃。同时,如果OpenFlow连接过程中断,交换机会尝试与其余备用控制器建立连接,如果也连接无法顺利建立,那么交换机将进入紧急模式,所有数据包将按照紧急模式流表项转发,正常的数据转发会完全失效,导致底层网络瘫痪。
由于北向接口面向应用平面,上层应用种类繁多,对SDN网络的需求繁杂,这使得北向接口的标准化十分艰难,目前两种北向接口的设计方式更是充分体现了这种矛盾,此外功能型北向接口旨在对网络资源和控制能力的开放,而意图型北向接口则是提出了关注需求,与网络技术无关的口号。非统一化标准使得北向接口面对攻击时更加脆弱,对其攻击方式更加多样化,例如应用的非法访问、数据泄露、数据篡改、身份冒充、应用程序本身的漏洞以及不同应用程序之间协作之时产生的新漏洞等。
东西向接口的存在本身是为了网络的横向扩充,但是在目前的网络过渡时期,东西向接口面临一个重大的问题就是和传统网络的接融。作为新老技术的过渡地带,东西向接口需要做到对传统网络设备缺陷和漏洞的隔离,同时还要兼顾与传统网络的数据安全流通,这将是东西向接口在过渡时期的主要问题。
4.应用平面安全分析
由于北向接口的存在,控制平面可以向上提供抽象的网络资源,这使得应用开发和部署更加方便,网络的利用率更高。但也由于北向接口的标准不统一,使得应用和网络在衔接的时候有可能出现漏洞,造成应用和网络的双面威胁。应用和网络之间可能存在数据泄露、非法访问、越权攻击等安全问题,此外不同的应用之间相互协作也有可能导致漏洞出现。另一方面,开放的可编程接口虽然极大地提高了应用对网络操作的灵活性,但也因为其高度灵活,存在人为的错误接口编程对网络影响较大的问题,以及恶意编程代码的攻击等问题。而且此类攻击手段花样繁多,防护较为困难。图2根据SDN层级结构列出了各个层面可能存在的安全隐患。
三、安全对策研究
1.数据平面安全对策
SDN网络和传统网络的体系有很大的不同,这使得传统网络中一些防护手段像防火墙技术、入侵检测技术等无法直接应用到现有SDN网络上。一种方法是将传统的防护技术手段简化并内置到SDN交换机上,例如将具有防火墙功能的模块内置到SDN交换机里,通过对交换机的升级和改造使得交换机成为防护的最基本单位,短期内这也许会增加交换机的成本,但随着网络的进化,交换机的安全升级也是一大趋势。另一方面作为交换机和控制器交互的接口安全通道也是关注的重点,OpenFlow v1.1版本之后不再强制使用TLS(Transport Layer Security)技术,而允许使用TCP和UDP连接。因此,连接和指令传输的可靠性需要通过认证和加密技术来实现。除此之外,交换机需要具备一定的入侵检测和负载均衡机制,在面对DDoS攻击的时候,检测到受到攻击的端口立即隔离并在一定时间内做丢包处理。
为应对基于数据流的攻击,这类攻击一旦出现即可判定为SDN网络中的脆弱环节节点。为了尽可能降低外部恶意工具对网络的威胁,进行网络威胁溯源时,辅以数据流分析法和节点检测来更好的探测攻击源头。另外在流表的若干元组中并没有安全规则、安全行为的控制要求,所以可以在流表中增加安全字段来定义安全规则,检测数据包是否有网络攻击行为并处理这些攻击。
2.控制平面安全策略
南向接口作为连接交换机的通信接口需要做到安全可靠,目前南向接口和交换机建立安全通信的方式有两种,一种是基于TLS协议的连接,另一种是基于TCP或者UDP的连接,在OpenFlow版本v1.1之后就增加了对TCP和UDP的支持。在一般的TCP接入过程中采用的是基于口令的身份验证方式,用户登录的时候需要将自己的ID和口令发送给服务端验证,服务端进行验证来决定是否允许接入。这样的认证过程存在明显的安全隐患,首先是交换机认证没有提前在控制注册,其次是口令的传输如果是明文或者简单的加密,则存在弱口令的危险,攻击者截获口令就可以假冒身份。针对上述问题,提出一些可行性的优化。其一是在通道建立的过程中增加安全认证消息,在消息内让其携带秘钥进行安全认证。其二是在身份认证的时候对于身份信息采用密文的形式传输,可以结合一次性口令的身份认证机制,避免中途被截获或者已经截获后重放攻击。其三是在认证模块中加入数据库服务,维护已经建立好的数据库信息并可以联合一次性口令身份认证机制来获得更好的抗攻击性。
北向接口面向大量的第三方应用程序,目前标准统一还存在一定争议,为了解决第三方应用衔接出现的诸多安全隐患问题,可采用一种权限分离的管理机制。通过在控制器上增加制定权限管理机制,对各个应用拥有的权限进行标准化的管控,并设置一些权限隔离,这种方法可以在一定程度上减少来自应用程序的非法接入、非法调用和数据泄露的威胁。
东西向接口的问题是过渡时期的一个特性问题,新老设备的兼容安全隐患繁多,可以考虑在东西向接口和老设备之间增加一个缓冲过渡区域,在过渡区域内用定义好安全行为规则对大部分可控的安全问题进行把控,同时隔离老设备上的安全漏洞,从而能在一定程度上减少威胁。
SDN控制器作为网络的核心,其承担着巨大的工作量和风险,常规的思路是做好控制的容灾、备份和隔离,但这种被动式防机制所付出的代价越来越高昂。有相关文献设计了一种新型的SDN网络结构,该结构在控制平面和应用平面之间接入了一层区块链层。SDN与区块链的结合可以进一步增加网络的安全性,尤其是在数据的保存和记录的审查这块,区块链的交易不可修改性,可以使得当控制器受到攻击时,攻击者的手段和攻击痕迹都会被完整的保留,这对于攻击溯源以及攻击代码审计具有很大帮助。
3.应用平面安全措施
应用平面的安全问题一方面需要北向接口的尽快标准化来解决,另一方面可以在不影响应用程序正常功能的情况下加大访问控制的力度,使非法访问无法进入到网络内部,同时进一步细化应用的权限和使用权限的范围,逐渐降低纵横向越权漏洞产生的风险。更细化的权限管理机制可以与北向接口同步执行,形成双层保险。另外,北向接口的标准中权限管理机制规范可以先行统一,以加快其他标准统一的进度。再者可以增设置专门的网络行为安全审计模块,这一点可以与区块链共识机制相结合,使网络学会监视和审计应用行为,如发生入侵行为,能够永久保留攻击痕迹,让入侵有踪可寻。
解决网络安全的两个重要机制是自检和自愈,自检是指传输网络设备能做到定期给自己"体检",及时发现自身的问题并及时反馈给网络管理者,自检的目的是为了预防安全事故的发生,定期的自检也可以看做是网络管理者对网络的监控。自愈是指在一定的允许范围内,网络设备可以通过备份或者镜像文件自行恢复到出现安全问题前的某个时间点,以此达到自身功能恢复的目的,此功能可以作为一个安全模块添加在SDN网元设备上,可以有效的使SDN网络自身具有更强的健壮性。
四、SDN在安防领域的应用
SDN安全有两个层面的内涵,一是SDN网络技术的自身安全问题,二是可利用SDN网络技术实现新颖的防护功能,如自动化调度流量、安全服务链。究其实质,软件定义安全并非是一种技术,而是一种思想或一种体系架构,强调通过软件化的安全应用和安全控制平台,集中控制、智能决策和敏捷响应,以解决以往安全设备简单堆叠不能抵御频复杂、高级的安全威胁。传统的网络攻击检测工具往往针对性很强但功能单一,为此需要在网络中安装和部署针对多种攻击(如DDOS攻击和ARP欺骗攻击等)的安全检测工具,这样无疑增加了安全防护的复杂性和投入成本,并会影响网络性能,甚至还会出现安全检测工具之间相互冲突的情况。并且这种攻击检测手段对于高级可持续性威胁等复杂攻击往往无能为力。SDN灵活的可编程性和网络适应性等优良特性使得研发基于SDN的网络多样性攻击和异常流量检测工具成为可能。
基于SDN灵活可编程的流表编制和下发策略能实现基于流的灵活调度,实时监控和按需改变网络中信息流的状态和行为,使得防御由被动逐渐变为主动,从而提供网络整体安全性。但目前得到广泛部署和应用的专业SDN安全产品相对较少,防火墙,入侵检测和流量监控等安全防护功能大多是以软件模块的方式集成在现有SDN设备内,基于SDN的安防产品市场仍处于培育期。相对而言,基于SDN的防火墙产品在市场上逐渐展露头角。业界针对传统防火墙配置和更新策略自适应性不强的弊端开发了多款基于SDN的防火墙产品,并且市场上现有大多数产品都是使用OpenFlow流表规则来描述防火墙安全策略。最常见的SDN防火墙是无状态防火墙,其工作机理是:未知数据流首先转发给控制器,由控制器解析数据包头,并将解析出来的信息与安全策略进行匹配,然后通过OpenFlow协议将最终安全策略下发到数据层的数据转发设备。在这种SDN无状态防火墙中,控制器将防火墙安全策略转化成了OpenFlow流表项。无状态防火墙配置简单且工作效率较高,但是由于未考虑数据流的状态信息,只是按照安全策略对数据包做出选择性的过滤,安全性不高,容易受到攻击。针对无状态防火墙的缺陷,业界又提出了一种有状态SDN防火墙模型,该防火墙由支持OpenFlow协议的SDN交换机和SDN控制器组成。状态SDN防火墙采用了一种"先拒绝后接受"的策略来控制数据流的转发,可以减少因为规则匹配冲突带来的安全问题。此外,有状态防火墙可以根据全局视图动态的部署安全策略,以适应更新后的网络拓扑。而且可以将安全策略部署到任何一个支持OpenFlow协议的网络设备中,从而使得SDN网络设备能够根据安全策略进行操作。
国际知名网络公司FortNox通过扩展OpenFlow控制器,提供了一个安全的执行内核用于防火墙安全策略的下发,但该方案处理数据包的速度会随着流规则的增加而迅速减慢。为此,FRESCO对FortNox进行了改造,提供了一个用于在OpenFlow设备上实现安全应用的框架。该框架由防火墙模块、可编程脚本和通用可编程安全组件三部分组成,可以实现安全模块实例化预定义,使得在SDN网络环境下快捷高效的产生和部署防火墙安全策略。但是FRESCO采用了安全应用与网络控制器紧耦合的方式,需要在网络控制器NOX上增加安全执行内核(Security Enforcemnet Kernel),安全能力作为SDN应用部署在控制器上也使安全应用过于依赖控制层环境,较难实现迁移复用。
SDN技术通过控制平面的集中管控和虚拟网络资源的灵活管理,可以最终实现安全可控的软件定义数据中心(SDDC)。例如,华为针对大规模数据中心不便于管理维护的困境,推出了基于SDN的Agile Controller-DCN控制器,可以方便管理控制大量虚拟机并快速定位出问题的虚拟机。Agile Controller-DCN控制器提供了远程端口镜像能力,能将网络流量抓到远端设备上做分析,便于用户分析网络运行状况。同时,华为还推出了基于SDN的DCN网云一体化安全防护方案,采用三级纵深防御和业务链随需编排策略,提供可扩展的富有弹性的安全服务。此外,华为积极参与平安城市新生态圈的构建,研发了新一代基于SDN的AI摄像机,该款摄像机具备"按需定义场景、分层 的智能、有持续的生命力"三大特征。根据不同的场景按需加载不同的软件和算法,通过多样的组合来快速适配瞬息万变的环境演变。
五、小结
SDN作为当前网络研究的热点领域,其安全问题备受关注,同时基于SDN理念的安防产品也有良好的发展前景和巨大的市场潜力。现阶段业界对网络的安全防护多侧重在网络层面上,一般通过定期对网络资产和漏洞进行梳理和扫描来发现安全隐患,但是对于网络节点设备的安全监测考虑不足。一方面由于节点设备众多,监测的工作量十分巨大,另一方面还是因为网络虚拟化不够彻底,至今还无法把网络虚拟成一个抽象对象进行监测。但是随着SDN技术和虚拟化程度的不断提高和加深,网络的监控会更加的细致和有效。软件定义安全可以重构整个安全防护体系,特别是与大数据分析、机器学习等技术结合后,可做到对安全威胁的快速防护、快速检测、快速响应。当然网络安全问题从来就不是一个单纯的技术问题,它需要人们的网络安全意识的提高,网络自检和防护的技术的提升以及社会建立相应的网络安全保障和维护体系。同时SDN在与云计算、5G、人工智能和区块链等技术的融合和碰撞中将迸发出新的光彩,也相信未来我们的网络环境会越来越好。