软件定义网络的漏洞与安全架构解析
1. 威胁与攻击的基本概念
在网络环境中,威胁是指意外或有意发生的事件,它会妨碍系统的机密性、完整性或可用性。当漏洞暴露时,必须加以处理以降低威胁。而攻击则是为了对系统造成损害而采取的有害行为。威胁和攻击的主要区别在于,威胁可能是无意的,但攻击总是有意的。
一个安全的通信网络应具备认证、不可否认性、机密性、可用性和完整性等属性。机密性确保敏感信息免受未经授权的访问,攻击者可能会使用欺骗、扫描或劫持等技术来获取交换机级别的重要信息,在控制器级别,数据、策略和规则也需要防止未经授权的访问。完整性意味着保护网络元素和控制器信息不被第三方未经授权地更改,这种更改可能是有意或无意的。可用性要求在需要时,授权用户能够访问网络元素和数据,在控制器级别,要确保批准的各方能够访问控制器及相关数据。不可否认性是一个法律概念,在控制器级别,应用程序或其他控制器可能会出现抵赖的情况。
2. 软件定义网络(SDN)的架构
SDN 的架构主要基于客户端 - 服务器模型,它是一个分层网络,专注于将开放的软件技术与通用网络硬件相结合来构建网络和计算机系统。这种网络硬件将 SDN 控制平面和数据平面在网络栈中分离。
典型的核心 SDN 架构大致由三层组成:
-
应用层
:位于 SDN 堆栈的顶部,是开发创新应用的开放区域,提供开放接口以与网络中的其他层建立连接。它定义了许多规则并提供诸如防火墙、访问控制、路由、代理服务、监控平衡器等服务,还负责通过边界对 SDN 网络控制管理进行抽象,通过接收网络的全局视图,为控制层提供全局视图信息。
-
控制层
:位于应用层之下,主要组件是一个或多个控制器,这些控制器通过接口将不同类型的规则和策略转发到基础设施层。
-
数据平面/基础设施层
:是 SDN 堆栈中最底层,也称为数据平面或转发平面,由所有网络基础设施元素(如交换机、路由器等)组成,主要功能是数据转发、分段、本地信息监控和统计收集。
此外,还有一个管理层,它管理上述三层,控制所有网络管理任务,传播网络策略并分配 SDN 资源。
SDN 通过定义良好的 API 打破了交换机、路由器和控制器之间的传统物理边界,主要有两个接口:
-
南向 API
:连接控制平面中的控制器和数据平面中的网络基础设施,有带内通信和带外通信两种场景。带内通信遵循特定的流量规则,带外通信不遵循流量规则,需要 VLAN 实现来区分流量和依赖开放流规则的通信。OpenFlow 是最常见的南向接口,由开放网络基金会标准化。
-
北向 API
:是控制器和网络应用之间的接口。
除了这两个 API,还有东西向 API(如 HyperFlow),用于共享数据平面中关于流的控制信息。
3. SDN 架构的特点
- 直接可编程 :网络直接可编程,因为它与转发功能解耦。
- 敏捷性 :管理员可以根据不断变化的需求,通过将控制与转发分离来调整流量。
- 集中管理 :全局视图和控制由基于软件的集中控制器管理。
- 可编程配置 :网络管理员可以通过动态、自动化的 SDN 程序轻松管理网络资源,这些程序编写简单,不依赖于专有软件。
- 基于开放标准且与供应商无关 :即使通过开放标准实现,SDN 网络也相对简单,因为指令由控制器提供,而不是由多个特定供应商的设备或协议提供。
4. SDN 架构的组件
-
控制器
:被称为软件定义网络的大脑,是数据通过南向 API 流向交换机/路由器,以及应用程序和不同业务逻辑通过北向 API 交互的控制点。控制器平台运行在服务器上,通过不同协议告知交换机将数据包发送到何处。控制器分为物理集中式控制器和物理分布式控制器。
- 物理集中式控制器 :被视为单个实体,控制网络中的所有转发设备,如 NOX 是第一个支持 OpenFlow 协议的集中式控制器,还有基于不同编程语言的其他控制器,如 Beacon、Maestro Trema 等。但随着网络的扩展,性能扩展不佳,且存在单点故障和可扩展性问题。
-
物理分布式控制器
:使用多个控制器来管理和促进转发设备,控制平面由多个控制器组成,共同构建更安全的网络。分布式控制器方法又可分为逻辑分布式控制器方法、物理分布式方法、分层分布式方法和混合控制器方法。
- 物理分布式控制器方法 :将大型网络划分为多个小型网络,每个网络由本地控制器维护,所有本地控制器具有相同的网络全局视图,主要用于连接多个域,如 ONIX 控制器。
- 逻辑分布式控制器方法 :将整个大型网络划分为多个小域,每个域由具有不同职责的集中式控制器单独控制,每个控制器必须拥有总网络视图并与其他控制器共享以维护全局视图,每次状态更改时,控制器必须更新其他控制器,如 DISCO 控制器。
- 分层分布式控制器方法 :控制平面中存在多层控制器,每个控制器有单独的任务,可能具有部分网络视图以进行决策,控制平面的上层充当中央控制器,如 Kandoo 控制器。
- 混合控制器方法 :被认为是其他方法的组合,以消除限制并采用所有方法的优点,如 SOX/DSOX。
- OpenFlow 协议 :是最被广泛接受的南向开放协议,用于通信数据层和控制层,使服务器能够指示交换机数据包的目的地。该协议定义了数据包转发规则、流程,跟踪流程并最终管理整个过程。
下面是 OpenFlow 协议相关术语和机制的介绍:
-
术语
:
-
数据包
:是转发的基本单位,由字节组成,包含头部、有效负载,偶尔还有尾部,所有控制信息存储在数据包头部。
-
流
:具有相同模式的一系列数据包。
-
交换机组件
:由多个流表和组表组成,用于执行数据包转发。
-
流条目
:是流表中通过匹配技术处理数据包的规则,OpenFlow 交换机使用流表进行消息转发。
-
OpenFlow 连接
:交换机和控制器之间的网络连接,连接中流动的主要单元是消息,根据发送者,消息可分为控制器到交换机、异步和对称三种类型。
-
控制器到交换机
:发送者是控制器,负责握手、交换机和流表配置。
-
异步类型
:消息从交换机开始,向控制器发送数据包入端口状态、流移除消息和任何错误,如 PACKET - IN。
-
对称类型
:发送者没有限制,主要用于轻量级消息,如 hello 或 echo 消息。
-
机制
:OpenFlow 交换机根据流表转发数据包,流表由控制器中的软件控制和操作。流表包含一个或多个流条目,用于确定匹配的数据包和匹配数据包的处理流程。流条目包括:
- 匹配传入数据包的规则。
- 计数器,用于记录流的详细信息,如接收的总包数、字节数和流持续时间。
- 处理匹配数据包的一组指令。
在转发过程中,数据包按照流水线架构通过流表,数据包从 0 开始编号,流水线过程分为入口处理和出口处理两个阶段,在每个流水线中,对不同的流表执行一系列不同的表查找。当数据包到达 OpenFlow 交换机时,从数据包中取出头部字段并与流表条目的匹配字段进行匹配。如果有匹配条目,交换机应用与该流条目匹配的适当指令;如果有多个匹配条目数据包,根据优先级进行匹配,更新该流表条目的计数器,然后将数据包转发到相应端口。如果没有找到匹配项,数据包将被发送到 SDN 控制器,根据交换机能力进行缓冲,未缓冲的数据包或缓冲数据包的第一个字节使用 PACKET - IN 消息封装并发送到控制器。控制器收到 PACKET - IN 消息后,对数据包采取必要的操作,最后使用 PACKET - OUT 消息转发缓冲的数据包。在 OpenFlow 协议中,远程控制器也可以访问和修改交换机流表中的流条目。
5. SDN 逻辑组件的分类
SDN 主要由三层组成,各层的逻辑组件如下表所示:
|序号|资产组件|位置|
| ---- | ---- | ---- |
|1|D - CPI 代理|数据平面|
|2|网络元素 RDB|数据平面|
|3|数据源|数据平面|
|4|数据汇|数据平面|
|5|数据处理引擎|数据平面|
|6|D - CPI|控制平面|
|7|C - 代理|控制平面|
|8|C - API|控制平面|
|9|C - RDB|控制平面|
|10|控制器功能|控制平面|
|11|控制器内容|控制平面|
|12|A - API 代理|应用层|
|13|应用内容|应用层|
|14|应用功能|应用层|
|15|应用控制器|应用层|
- 数据平面层实体 :负责转发和处理数据流量,由网络交换机组成。数据控制器编程接口(D - CPI)允许控制器程序共享数据平面资源,D - CPI 代理执行控制器指令,网络元素关系数据库(RDB)存储数据平面资源的信息,数据平面资源包括数据源、数据汇和数据处理引擎,数据源处理和交付数据流量,数据处理引擎处理数据,数据汇存储来自数据源和数据处理引擎的数据。
- 控制平面层实体 :控制数据平面层元素,将应用层的高级语言指令转换为低级语言以对数据平面层进行编程。C - API 向其他控制器提供控制器资源的信息,C - 代理向其他实体描述控制器的功能,C - RDB 存储控制器中资源的信息,控制器功能指控制平面的所有控制操作,控制器内容是为控制操作产生或使用的数据。
- 应用平面实体 :由 A - CPI 代理组成,用于从控制器传递信息,应用功能负责应用层的操作,处理的内容是应用内容,应用协调器与管理层进行协调。
下面是一个简单的 mermaid 流程图,展示数据包在 OpenFlow 交换机中的处理流程:
graph TD;
A[数据包到达 OpenFlow 交换机] --> B[提取头部字段];
B --> C{是否有匹配条目};
C -- 是 --> D[应用匹配指令];
D --> E[更新计数器];
E --> F[转发数据包到相应端口];
C -- 否 --> G[发送数据包到 SDN 控制器];
G --> H[根据交换机能力缓冲数据包];
H --> I[封装未缓冲或首字节到 PACKET - IN 消息];
I --> J[发送 PACKET - IN 消息到控制器];
J --> K[控制器处理数据包];
K --> L[使用 PACKET - OUT 消息转发缓冲数据包];
通过以上对 SDN 架构、组件、协议和逻辑组件的介绍,我们可以更深入地了解软件定义网络的工作原理和特点,为后续分析其安全威胁和采取相应的安全措施奠定基础。在接下来的部分,我们将详细探讨 SDN 面临的安全威胁以及相应的应对策略。
软件定义网络的漏洞与安全架构解析
6. SDN 面临的安全威胁
SDN 具有可编程性,且控制与网络元素分离并集中化,这些特点吸引了恶意用户。下面详细介绍 SDN 网络面临的潜在风险(威胁)及其影响。
6.1 虚假或伪造的流量流
这种类型的拒绝服务(DoS)攻击可能由非恶意的故障机器或恶意用户发起,攻击目标是交换机和控制器。攻击者发起 DoS 攻击旨在耗尽三元内容可寻址内存(TCAM)和控制器资源。可通过使用认证机制来避免此问题,但当攻击者控制了包含用户信息的应用服务器时,问题就难以缓解。此时,攻击者可以使用相同的认证端口和源 MAC 地址,在网络中产生伪造的授权流。入侵检测系统以及动态控制交换机行为的机制,有助于检测网络中的异常流量。
6.2 交换机的漏洞
SDN 的交换机容易受到某些类型的攻击。例如,攻击者可以利用交换机减缓网络中的流量,使用克隆交换机改变数据包的路径以进行数据窃取,还可以向系统注入伪造请求,使控制器或其他交换机过载。通过监控和检测网络元素的异常行为,以及使用软件认证机制(针对软件组件),可以缓解这些问题。
6.3 控制平面通信攻击
许多研究表明,即使存在公钥基础设施(PKI),TLS/SSL 也不能保证控制数据平面的安全通信。例如,易受攻击的应用程序和库、受损的证书颁发机构或自签名证书,都可能使 SDN 的控制平面通道暴露给攻击者。如果攻击者获得了对控制器的访问权限,还可以使用交换机发起分布式拒绝服务(DDoS)攻击。不过,可以通过使用阈值密码学实现安全通信,也可以使用具有多个信任锚证书颁发机构的寡头信任模型。
以下是一个表格,总结了上述安全威胁及其影响和应对策略:
|威胁类型|影响|应对策略|
| ---- | ---- | ---- |
|虚假或伪造的流量流|耗尽 TCAM 和控制器资源,产生伪造授权流|使用认证机制,入侵检测系统和动态控制交换机行为机制|
|交换机的漏洞|减缓网络流量,数据窃取,使控制器或交换机过载|监控和检测异常行为,软件认证机制|
|控制平面通信攻击|控制平面通道暴露,可能发起 DDoS 攻击|阈值密码学,寡头信任模型|
7. 安全通信网络的属性
一个安全的通信网络应具备以下属性:
-
机密性
:保护网络元素和控制器级别的敏感数据免受未经授权的访问。攻击者可能使用欺骗、扫描或劫持等技术获取交换机级别的重要信息,在控制器级别,数据、政策和规则也需要防止未经授权的访问。同时,交换机与控制器之间以及交换机之间的安全通信对于维护机密性至关重要。
-
完整性
:保护网络元素和控制器信息不被第三方未经授权地更改,这种更改可能是有意或无意的。在交换机级别,信息组件可能是流表和交换机;在控制器级别,控制器数据和策略需要防止被未经授权的第三方修改。此外,通信通道级别也必须确保完整性。
-
可用性
:在交换机级别,授权用户必须能够在需要时访问网络元素和数据;在控制器级别,要确保批准的各方(如交换机或其他控制器)能够访问控制器及相关数据。只有在正确的时间能够访问信息,信息才有价值。
-
不可否认性
:这是一个法律概念,在控制器级别,应用程序或其他控制器可能会出现抵赖的情况。
8. 构建安全可靠的 SDN 面临的挑战与机遇
构建安全可靠的 SDN 既面临着诸多挑战,也存在着大量机遇。随着技术的发展,挑战会逐渐增加,需要积极主动地应对这些挑战,以充分利用这项新技术带来的优势。
挑战主要来自于 SDN 的特性,如可编程性和集中控制,这些特性吸引了恶意用户,增加了网络遭受攻击的风险。同时,SDN 涉及多个层面和组件,各层面和组件之间的安全通信和协调也是一个挑战。
机遇方面,SDN 的分层架构和开放接口使得网络的管理和控制更加灵活和高效。通过对安全威胁的分析和应对策略的实施,可以构建更加安全可靠的网络。例如,利用控制器的集中管理能力,可以更好地监控和控制网络流量,及时发现和处理安全威胁。
下面是一个 mermaid 流程图,展示构建安全可靠 SDN 的过程:
graph TD;
A[分析安全威胁] --> B[确定安全需求];
B --> C[设计安全架构];
C --> D[实施安全策略];
D --> E[监控和评估网络安全];
E --> F{是否存在安全问题};
F -- 是 --> A;
F -- 否 --> G[持续优化网络安全];
综上所述,软件定义网络在带来诸多便利的同时,也面临着一系列的安全威胁。通过深入了解 SDN 的架构、组件、协议和逻辑组件,以及识别安全威胁和采取相应的应对策略,可以构建更加安全可靠的网络。在未来的发展中,需要不断关注技术的发展和安全形势的变化,持续优化网络安全措施。
超级会员免费看
2004

被折叠的 条评论
为什么被折叠?



