APP下载

SDN 控制层泛洪防御机制研究:检测与缓解

2021-12-08周启钊于俊清李冬

通信学报 2021年11期
关键词:源地址表项交换机

周启钊,于俊清,,李冬

(1.华中科技大学计算机学院,湖北 武汉 430074;2.华中科技大学网络与计算中心,湖北 武汉 430074)

1 引言

随着互联网的资源管理需求日益多元化,软件定义网络(SDN,software defined network)[1]作为一种新兴的转控分离的架构为网络资源的管理带来了新的思路。SDN 通过将网络核心控制逻辑与底层路由器和交换机架构进行分离,打破了传统的垂直集成网络控制和转发的模式,克服了网络基础设施部署局限性的关键问题。部署SDN 架构的网络具备灵活性、可编程性和集中化管理等诸多优点[2]。OpenFlow 是当前最常用的SDN 南向协议,它提供了标准化的控制层与数据层的通信指令:数据转发规则以流表项的形式进行表示,流表项则组合成为数据层的流表,SDN 架构的网络环境以流表更新及控制器反馈的形式完成通信指令交互。由于控制层为了维持与数据平面之间的高效通信引入了诸如Packet-In 的快速信息流指令,利用现有的控制层信息指令漏洞对网络发起攻击的案例层出不穷,其中对SDN 影响最严重的就是控制层欺骗式泛洪攻击。包括SDN 控制层信息指令Packet-In、通信交互TCP/SYN 报文在内的信息流均可能被利用并以泛洪的形式发起攻击[3-4]。攻击者通过伪造源地址技术创造新的源地址或数据通道,并利用伪造控制层交互信息来与SDN 控制器进行通信,扰乱控制层对全网的认知,进而间接对数据层的转发产生影响。根据OpenFlow 协议的规定,控制器下发的流表项规则被交换机完全信任,若存在伪造源地址的流规则篡改行为,SDN 数据中心接入层交换机的安全保护性能将面临严重威胁。

现有基于目的地址转发的网络路由机制导致控制层泛洪中伪造源地址欺骗的现象层出不穷,其关键特点为攻击流量巨大、难以追溯和难以防御等,若缺乏高效的泛洪攻击检测机制,SDN 的控制层将存在巨大安全隐患。另一方面,由于SDN 基于目的地址的转发模式并未涉及对源地址的检查和认证过程,控制层泛洪所造成的网络管理扰乱了接入层交换机的认证与身份识别,若缺乏合理的泛洪攻击缓解机制,攻击者可实现对SDN 数据的窃取和网络状态的探测,对SDN 架构的安全性产生重大影响。

2 研究背景及目的

2.1 控制层欺骗式泛洪攻击

OpenFlow 协议提供了控制器和交换机之间的安全通信指令,其规定的标准化机构使各模块网络通信间的互操作性增强,但针对控制层的欺骗式泛洪攻击仍然层出不穷。典型的控制层欺骗式泛洪攻击的类型主要包括Packet-In 泛洪和SYN(synchronize sequence numbers)泛洪2 类。

每当有新的数据包进入数据层进行匹配,会在流表中寻找对应的流表项进行匹配:若直接匹配成功,则转发数据报文;否则,该数据包信息通过OpenFlow 协议规定的控制器与数据层交互信息流Packet-In 进行上报,由控制器进行进一步分析。当控制层和数据层建立连接后,控制器即处理来自数据层的各种OpenFlow 协议通信指令,如图1 所示,并分发指令给监听此通信指令的所有数据层交换机。在此过程中,由于控制器的集中特性,攻击者通过创造大量伪造源地址的Packet-In 包触发控制器处理进程,产生Packet-In泛洪[4]。该Packet-In 泛洪是一类新型的针对SDN控制层的攻击,将直接造成SDN 的单点故障。在极端情况下,Packet-In 泛洪持续时间过长使得控制层的性能完全失效,进而使控制器无法处理正常消息,南向数据层网络管理混乱,SDN 的合法流量转发滞塞。

由于控制层针对传统TCP 漏洞仍然存在缺陷,依靠TCP 建立连接时3 次握手存在的缺陷可发起SYN 泛洪攻击,该泛洪的形成借助TCB(即TCP传输控制块)的缺失和在SYN 包中伪装合法的源IP 地址发起,可对SDN 控制层造成巨大安全隐患,如图2 所示。TCB 是一种连接所有信息的传输协议数据结构,其分配空间的大小取决于接收的SYN包,在控制层连接成功前或发起源被验证前该空间大小均可变[3]。攻击者可借此漏洞轻易发起欺骗式SYN 泛洪,使到达的SYN 包被控制层分配过多的TCB 而导致其内核内存被耗尽。此外,攻击者通过在SYN 包中伪装合法的源IP 地址,使SYN-ACK包无法被有效响应,进而无法触发对应控制层通信指令,使主机将已分配的TCB 从SYN-RECEVIED状态队列中移除,最终导致SDN 控制层的安全通信指令管控混乱,无法继续响应数据层其他正常设备的请求。

2.2 现有方案存在问题

现有针对SDN 控制层欺骗式泛洪的解决方案主要分为基于终端的SYN 泛洪防御和基于网络的Packet-In 泛洪防御2 类。针对SYN 泛洪,基于终端的对策包括SYN Cookies 和SYN 缓存等方法[4-6]。由于欺骗式SYN 泛洪依赖于终端主机连接套接字的日志溢出,增加其日志队列大小可初步缓解SYN泛洪的攻击强度。此外,缩短一个TCB 从进入SYN-RECEIVED 状态到因未进入下一个状态而被回收的时间,也是一类有效的基于终端主机的解决方法[7-8]。为了缓解ACK(acknowledge character)包丢包而产生的泛洪攻击问题,基于SYN 缓存和SYN Cookies 实现的方案均提供了针对控制层的防御思路:在已部署SYN 缓存和SYN Cookies 的控制器中,添加一个被限制大小的Hash 表空间用于存放被分配给TCB 的数据的指令子集,该空间能提升SYN 泛洪发生时SDN 控制层的容错率,在一定时间内维持控制层的全局视野和管理性能。然而,此类基于终端的SYN 泛洪防御机制需要对其底层TCP/IP 栈实现进行修改,而中间件如防火墙或入侵检测系统(IDS,intrusion detection system)[9]需要通过网关实现,其在SDN 中的可扩展性相对不足。

基于网络的泛洪防御方案通常以RFC2827 为基础实现欺骗数据包过滤,采取输入源过滤的方式执行泛洪防御。TopoGuard[10]是一种针对拓扑欺骗攻击的工具。通过验证SDN 通信信令从出现到执行的合法性确保主机迁移的真实性。然而,该模式还缺乏对控制层泛洪尤其是Packet-In 泛洪的测试,控制层泛洪防御模式并不全面。ISP 方案[11]直接阻断了源IP 地址不属于源子网的包的传递,该方案提出了在网络层筛选欺骗式泛洪数据包并进行输入源过滤的模式,实验结果表明其部署能有效地过滤SYN 泛洪攻击包,但该方法依然未考虑大量Packet-In 消息注入的情况。为了提升控制器Packet-In 泛洪对应的防御性能,文献[4]提出了一种基于Packet-In 合法性检测的防御策略,通过验证Packet-In 消息是否由伪造源地址方式生成来决定其向控制器的转发功能。然而,该方法的攻击缓解部分缺乏对控制层泛洪攻击中伪造MAC 地址的情况的分析,其伪造源地址包过滤的精度还不够。此外,一些针对解决SDN 控制层泛洪攻击问题提出的统计分析及阈值检测、特征检测及深度学习等方法的防御机制[12-14]弥补了现有泛洪防御模型在分类攻击主机和数据包方面精度不高的问题。其中统计分析及阈值检测方法能初步对SDN 控制层泛洪的发生进行预警,但该类方法无法及时并有效地区分网络转发正常突发大流和欺骗式泛洪攻击,针对控制层泛洪检测问题容易发生误报。特征检测及深度学习的方法[12]通过集合分析SDN 中交换机、控制器及流量数据等多维特征,结合轻量级的机器学习或深度学习方法进行泛洪检测,该类型的方法由于特征维度爆炸或特征关联性问题通常需要进行大量计算,在SDN 控制层泛洪攻击实际环境下,尤其针对Packet-In 泛洪及SYN 泛洪的检测效果不理想。此外,大量特征的采集和处理也增加了控制器的负载,对数据层的正常数据包转发产生了负面的影响。

针对现有基于终端的SYN 泛洪防御和基于网络的Packet-In 泛洪防御存在的可扩展性不足、特征维度爆炸和带来额外负载的问题,本文提出了一种低开销、高精度的SDN 控制器防御机制(CDM,controller defense mechanism)。该方法具有以下优点。

1) 低开销的流量采集。结合sFlow与OpenFlow交互信令的共性,提出了一种轻量级、低开销的特征采集方案,使控制器以多线程的方式周期性地从接入层交换机获取针对性的特征条目,而不需要多次遍历和轮询。

2) 高精度的特征解析和攻击检测。将与SDN控制层泛洪攻击密切相关的特征进行组合,从多维流表项匹配域及流量特征中筛选排除低效特征,并结合梯度决策分类算法训练模型,该模型可高精度地区分正常突发流量和恶意泛洪流量。

3) 高安全性的差异化泛洪缓解。结合源地址验证绑定模式,针对欺骗式泛洪和正常突发流量的特征提出差异化的SAVI(source address validation improvement)泛洪缓解机制,该方法不仅可有效抵御Packet-In 泛洪和SYN 泛洪攻击,也能有效提升缓解控制层在泛洪发生时的响应效率。

3 控制层泛洪检测机制

3.1 基于信令交互的特征采集

由于SDN 提供了灵活的网络全局跟踪机制,同时具备交换机信息持续监控的能力,本节针对控制层泛洪攻击检测低开销的关键特征采集需求,结合sFlow 与OpenFlow 交互信令的共性,实现了一个轻量级的泛洪特征采集模块。sFlow(RFC3176)[15]是一种网络导出协议,通常用于网络性能和数据的测量,协议提供了对数据包进行检测的各类信息采集协议,并嵌入专用集成芯片(ASIC)中对数据包进行转发和收集。如图3 所示,基于sFlow 的数据采集系统主要由ASIC 中的sFlow 服务端(sFlow agent)和远程的sFlow 采集端(sFlow collector)2 部分组成。其中,sFlow 服务端用于获取交换机或路由器的网络数据测量结果,当特定时间窗口结束或者缓冲区满后,将数据测量结果打包封装为sFlow 的报文发送到sFlow 采集端。随后,sFlow 采集端对sFlow 的报文进行解析,分析并输出对应的网络统计数据[16]。

而在OpenFlow 协议中,SDN 控制器通过OFPT_STATS_REQUEST 对交换机进行请求。交换机将所请求的统计数据信息通过OFPT_ MULTIPART_ REPLY 消息回复给SDN 控制器。结合sFlow服务端的采集特性,该模块将现有OFPT_MULTIPART_REPLY 消息可获取的部分进行保留,利用控制器定期通过交互信息OFPT_STATS_REQUEST/REPLY 与OpenFlow 交换机进行通信的特性,将sFlow 服务端IP/UDP 头与OFPT_STATS_REQUEST 消息返回流表匹配域信息重合的部分进行整合。sFlow 服务端整合流表匹配域数据采集示例如图4 所示,IP/UDP 头包括数据包长、数据包缓存字节、流表空间大小等,为每个接入层交换机单独创建一个数据收集线程并开始执行,这缩减了现有SDN 接入层交换机遍历采集模式的冗余数据特征处理流程[16]。采用Java/Python实现基于信令交互的多线程特征采集,其中OFPT_STATS_REQUEST 主要负责查询流表的最大存储量和活跃流表项的数目,另一线程的sFlow服务端主要用于获取流表对应数据流量基本信息。基于sFlow 的多线程信息采集与整合模型流程如图5 所示,通过动态的参数控制获取交换机流表和流量2 方面的信息,为了确保两者的兼容性,sFlow服务端仅接收SDN 数据中心接入层交换机流表对应的数据流信息采集和存储。

3.2 控制层泛洪特征解析

3.2.1 控制层负载单位阶跃函数

针对SDN 控制层的SYN 泛洪攻击可利用因拥塞而丢包的ACK-SYN 或者握手完成的ACK 包单独发起,此时由于SYN-RECEIVED 的响应时间减少,合法连接的TCB 空间也会因控制器繁忙无法重传失配包,最终导致数据包丢弃。为了解决控制层SYN 泛洪攻击问题,现有常见的防御机制通过优化系统设置实现[8],典型的如降低对应的SYN 时延[17],使主机尽快释放半连接的占用。该模式存在的主要问题是无法根据数据流状态衡量控制层负载,因此为了量化SDN 突发大流或泛洪攻击发生时控制层的负载状态,结合现有OpenFlow 协议中顺序的匹配模式,本节基于数据流对应流表项时延idle_timeout(Tinit)对控制层负载进行建模[18]。SDN 流表时延与控制器状态模型如图6 所示,其中{p1,p2,…,pi,…,pn}表示SDN数据流传输的数据包长度,此处认为数据包是独立分布并服从Pareto 分布的[19],分布公式如式(1)所示,其中,k,τ,α是Pareto 分布的参数。以此数据流分布为基础,可从理论角度分析数据流分布与控制层负载之间的关系。假设SDN 数据流数目为无穷大,若用{t1,t2,…,ti,…,tn}分割数据包之间的传输间隔,则该间隔服从负指数分布,如式(2)所示。

若数据包的空闲时间间隔较大,则OpenFlow交换机此段间隔时间内必然会被控制器重新调度,此数据流所对应配置的流表项也会随之到期删除。当后续的数据包需要进行流表匹配时,由于找不到对应的流表项,交换机会立即向控制器发送Packet-In 消息请求流表项的下发。在此期间,控制层泛洪造成的安全问题主要可表征为2 个关键的特征:控制层异常发生时的负载高低与实际连接的端口数目有关,如式(3)所示;由于匹配失败产生的Packet-In 消息会耗费控制器大量的计算资源,以控制器处理Packet-In 消息的性能为依据,可引入单位阶跃函数H(·)对控制器的负载状态即处理Packet-In 消息的数量进行量化,如式(4)所示。

单位阶跃函数代表控制器的负载与Packet-In消息的数量呈正相关,假设SDN 控制器处理一条Packet-In 消息的负载为cost,为了同时降低流表的失配率,总负载值可通过多个数据包匹配流表初始时延值累加进行估算。根据数据流切割传输模式的特性,设多个数据包对应数据流切割分批处理过程中被分成了n个数据包,每转发一个数据包,其对应流表项均需要与数据包进行一次完整匹配,故数据流切割传输模式下东西向数据包传输平均造成的SDN 控制器负载关键特征可由式(5)计算。

3.2.2 数据层端口流量差及信息熵

现有研究表明,针对控制层的欺骗式泛洪具有2 个重要特征:突发性流量大和流量速率倾斜[3]。因此通过对SDN 接入层交换机端口流量信息的分析,可初步鉴别SDN 大流量的异常状态。端口出入流量差的绝对值常常被用于表征影响SDN 控制层流量的关键因子,其计算方法如式(6)所示。

现有方法以接入层交换机端口的出入流量差的绝对值为标准进行数据流鉴别,其模型判定依赖流量阈值的选择,而该流量阈值通常随着网络应用需求、底层拓扑和设备性能的变化而差异极大,在不同的拓扑规模和设备性能状态下对异常流量的判定和端口的定位均会存在严重偏差,其可扩展性不足。为了更好地确定异常流警报的阈值,通过流量差和熵值和转化模型可定性流量的随机程度,而结合φ-熵对流量差进行表示也有助于量化阈值,提升其稳定性。假设SDN 接入层交换机端口流量差为x,其取值集合可用X={x1,x2,…,xn}表示,针对每个流量差取值的概率分布可用P={p1,p2,…,pn}表示,且每个取值之间互不影响。其中,,变量x的信息熵为

对于SDN 接入层交换机端口流量差集合X,其φ-熵可表示为

φ-熵可用于更加精确量化主机各维度的出入流量差的绝对值与Packet-In 泛洪攻击之间的关系。本节模型多维度φ-熵特征包括源IP 地址信息(sIP)、源端口信息(sPort)、目的IP 地址信息(dIP)和目的端口信息(dPort)。为了对异常流量进行判定,需要保存前几个连续时间窗口的多维度φ-熵。如图7所示,若主机h1对应的端口突然产生了异常大流量,此时该模型应该对s1对应h1的端口p1实时的流量差熵值进行计算,通过出入流量标准差值转化φ-熵评估,判定h1发出的流量是正常通信大流量或泛洪攻击流量。当该流量为欺骗式泛洪异常大流量时,即出入流量标准差值转化φ-熵超过阈值,对应出入端口流量失衡,则判定为疑似泛洪攻击流量;而若h1主机属于正常的流量密集型应用,即出入流量标准差值转化φ-熵未超过阈值,对应出入端口流量平衡,则不会被判定为疑似泛洪攻击流量。

3.2.3 欺骗式泛洪指令流状态

分析控制层欺骗式SYN 泛洪攻击的特征,通常在一定的时间间隔内,攻击者在SYN 包中伪装合法的源IP 地址,而这个IP 地址将不能响应SYN-ACK 包,此时就无法触发控制层通信指令使主机将已分配的TCB 从SYN-RECEVIED 状态队列中移除。分析该SYN-RECEVIED 状态队列对应流表项与数据流中包间隔大小的关系,发现数据包间隔较大的数据流往往需要占用更多的转发时间和更大的网络带宽,实际的突发大流占总流量的比例较低[17]。由于SDN 数据流的切割传输模式,数据包间隔较大的数据流分割得到的数据包对应流表项包含的转发目的地址通常极为相似。此时,数据包间隔较大的数据流占有的流表资源虽十分有限,但对应流表项的地位却十分关键。该攻击的一个主要特征是源IP 地址欺骗,若关键流表项被欺骗式泛洪数据包影响导致频繁被更新或删除,大间隔数据包正常的传输会持续被间断,对应交换机向SDN 控制器频繁发送Packet-In 消息查询,最终导致控制器不堪重负,降低控制器对其他网络数据包的响应能力[20]。在此过程中,生成泛洪包的过程与普通数据流的显著差别在于单指令流包含较少的数据包个数,因此,通过对指令流包含数据包中位数特征的计算,如式(9)所示,能反映出控制层欺骗式泛洪的存在。

在突发大流和欺骗式攻击2 类网络状态下,SDN数据层东西向均存在大规模的数据包和流量传输情况。然而,以接入层交换机端口为基准,2 类大规模数据包和流量传输状态存在明显的差别:伪造源地址的入流量无法得到交换机流表和控制器的有效响应,故对应的端口出入流量比例会产生严重的失衡;而流量密集型应用的大流量传输均为合法操作,接入层交换机端口流量并不会产生明显的失衡。在此2 类状态下,仅仅通过检测数据流包含数据包中位数特征判定泛洪攻击在极端多数据包状态下误报率较高。因此为了实现可靠的检测,控制层欺骗式泛洪关键特征还包括成对流状态,如式(10)所示。正常通信的数据流所产生的成对通信指令通常标记着相同的通信协议,同时其源IP 和目的IP 也有着对应的源地址与目的地址。由于欺骗式泛洪攻击大量增加了外部流量,例如在SYN 泛洪状态下,通过伪造源地址发起的外部大流量将产生大量无效SYN-ACK 指令,这导致欺骗式泛洪发生时也存在大量包含失配流信息的SYN-ACK 指令。以此特征为基础,通过对SYN-ACK 指令包含流信息中成对流的数量的检测也能反映出欺骗式泛洪的存在,如式(11)所示。

3.3 控制层攻击检测模型

为了检测与分类针对SDN 控制层的泛洪攻击,本节以各控制层泛洪解析关键特征为基础,提出了基于XGBoost(eXtreme gradient boosting)算法的控制层攻击检测模型。符号说明如表1 所示。

表1 XGBoost 增强型分类器符号说明

XGBoost 是一种基于梯度Boosting 的集成学习算法[21],具有高准确度和可扩展性的特点。Boosting 算法将各个弱分类器加权叠加形成增强型分类器,通过不断降低计算中的残差,使之前的模型残差向梯度方向进一步降低,从而有效降低分类误差,达到更准确的分类的效果。XGBoost对分类模型的目标函数的损失函数生成二阶泰勒展开,并在损失函数之外对正则项求导。其在优化分类的目标函数的同时,对用于分类的决策树模型进行了预剪枝,从而得到分类的最优参数,使分类结果更准确。基于 XGBoost 算法实现Boosting 的步骤可表述如下。

1) 目标函数

2) 训练目标函数

3) 目标函数二阶泰勒展开近似

4) 去掉常数项

5) 求出目标函数最优解

其中,目标函数ζ(Φ)代表由多维特征构成的控制层泛洪检测目标数据包,这个目标函数分为误差函数和正则化项2 部分。时间窗口内特征集合的正则化定义复杂度,其值越小,复杂度越低,泛化能力越强。以此为基础训练输出泛洪检测目标累加函数,T表示泛洪检测特征叶子节点的个数,w表示节点的数值。接下来训练目标函数及求解最优解的过程则是XGBoost 梯度下降分裂节点的标准训练流程。本文模型采用基于SDN 的入侵检测数据集InSDN[22]进行线下模型训练,而线上部分数据由轻量级流量采集模块实现。针对控制层泛洪攻击为SDN 带来的安全问题,在时间与轮数不断递增的基础上进行交叉验证生成欺骗式泛洪检测模型,模型性能及参数测试结果将展示于5.2 节。

4 基于SAVI 的泛洪缓解机制

4.1 控制层泛洪源地址验证

若泛洪攻击仅通过重复伪装单一的源地址进行,该地址将立即被检测出并被过滤。由于OpenFlow 协议提供了控制器和交换机之间的安全通信指令,其规定的标准化机构使各模块网络通信间的互操作性增强,为了达到欺骗通信指令攻击控制层的效果,现有控制层泛洪的发起往往运用许多不同源地址伪装,这将使SDN 控制层欺骗式泛洪的防御更加困难[3,23],此时最好的泛洪缓解方法则是尽可能过滤与源地址相近的数据包。

以RFC7513[24]协议为例,SAVI 以绑定−验证模式为基础执行路径过滤,过滤的粒度则取决于IP前缀的粒度。绑定规则的构建是将源IP 地址信息和MAC 地址信息等一些难以冒用的属性进行关联,再进行统一的验证和过滤。典型的绑定关联表项包括主机端口、主机源地址及MAC 地址,可记为[25]。由于IP 地址只是逻辑上可被随意修改的一种标识,无法在源地址验证技术中被单独用于标识源地址对应用户;而MAC 地址是物理上的一种标识,是一种固化在网卡内难以被冒用的属性。因此,SAVI 的源地址验证模式将源IP 地址信息和MAC 地址信息等一些难以冒用的属性绑定起来,统一数据结构进行验证。文献[26-27]在SDN 中实现的SAVI 通过SDN 控制器事先获得底层主机的源IP 地址、MAC 地址和交换机接口信息,将无状态的IP 地址信息和底层的MAC 地址信息、交换机Port 信息绑定起来,形成三元组的过滤表项。该方案在控制器中生成和维护源地址关联绑定表,以源地址绑定表为依据执行伪造源地址的验证及路径过滤,保证数据层来自指定源地址的数据包只能通过已有的绑定关联信息执行操作。由于其Port 作为交换机的端口,在基于伪造源地址的异常状态下,即使底层IP 地址信息和MAC 地址信息被伪造,攻击者也不可能同时拥有真实的交换机或路由连接端口。因此,以现有的SAVI 绑定验证模式为基础,可根据绑定过滤表实现欺骗式泛洪攻击包过滤。

4.2 动态轮询及泛洪缓解

在执行SDN 控制层泛洪攻击检测模块后,整合模型分类结果,可基于SDN-SAVI(静态源地址验证)[28]与D-SAVI(动态源地址验证)[23]实现差异化的安全管理。从网络安全管理的时间维度上来说,控制层泛洪缓解措施执行于正常网络流量和恶意网络行为的行为建模后,并根据网络流量分析、异常行为分析等结果进行动态分类处理。SDN 控制层差异化泛洪缓解模型如图8 所示。在检测到SDN 正常大流数据传输状态下,将持续进行交换机数据采集和sFlow 流量数据采集。当主机初次请求接入SDN 时,控制器会向其对应的交换机下发侦听网络地址分配报文状态的请求。针对不同的交换机地址分配机制(无状态自动配置机制和动态变化配置机制),控制器为了获取主机对应的交换机接入网络的目的和实时状态,下发不同的AAM 报文对其进行侦听和请求查询泛洪检测模块持续运行。

在普通泛洪发生时,执行动态源地址验证(D-SAVI)方案,交换机将接收的AAM 报文进行预处理,并和部署在OpenFlow 交换机中的侦听规则进行匹配。根据匹配结果,主机对应的交换机将AAM 报文所包含的主机状态信息进行封装,以Packet-In 包的形式与控制器进行通信。控制器成功接收AAM 报文后,会从Packet-In 包中解析出主机相关的地址信息和交换机状态信息,构建并更新绑定关系,限制疑似泛洪发起节点的流量,使其无法影响控制层信令发布及有效连接建立;在伪造源地址泛洪发生时,所有伪造源地址数据包均经过静态源地址验证(SDN-SAVI)方案筛选,通过将绑定表的构建和更新完全部署于控制器,利用SDN 的全局视野维持SAVI 的安全性标准,保证控制层通信的安全性。在现有的SAVI 绑定机制下,为了维持SAVI 绝对安全的标准,该绑定关系不会随着网络状态的变化而产生任何变化。根据三元组绑定信息的维护,控制器随后将持续执行源地址验证和路径过滤。

为了维持基于SAVI 的泛洪缓解机制的安全性,控制层泛洪缓解模块主要以窗口轮询的模式进行。控制器会为所有SDN 数据层主机均维护一个历史状态列表,以控制层泛洪特征构建的泛洪检测模型为基础,可推导每个主机随时间推移的时序状态列表。为了使D-SAVI 进行安全保障的随机轮询更具针对性,本节提出了控制层泛洪安全保障的随机轮询算法,其流程如图9 所示。该算法对所有正常主机遍历完毕后,根据主机时序状态列表的异常状态比例排序进行逆序轮询和检测,对其进行临时数据采集与分析,并部署源地址验证规则。因此,每次挑选的主机个数直接影响安全保障的随机轮询模块发现有控制层泛洪攻击安全隐患的主机的及时性,间接影响基于SAVI 的泛洪缓解机制为控制器带来的负载:若每次挑选主机个数越少,则控制器和交换机资源消耗也越少,其安全性指标则会相应降低;反之则能更快发现控制层泛洪攻击异常主机,降低网络的安全威胁,但对SDN 资源消耗也更多。因此,在SDN 的不同拓扑结构中,选择合适数量实现安全保障的随机轮询模块是重要的平衡性指标。安全保障的随机轮询模块基于3.2.2节的流量差和信息熵实现。

5 性能测试与分析

5.1 实验平台及关键参数

本节在多台服务器和基于 Vmware 安装的Ubuntu 16.04.2 虚拟机系统上搭建了模拟的SDN 环境。图10 是经典的数据中心实验拓扑,本实验拓扑以Fat-Tree 为基础搭建。安装Floodlight 控制器作为SDN 的控制平面,采用Mininet 仿真对底层SDN 拓扑进行差异化的仿真。SDN 拓扑中的SDN交换机由开源的虚拟交换机(OVS,OpenvSwitch)实现。在 Mininet 中实现软件定义网络的交换机可选择多种模式,其中最常见的就是OVS 实现。该实验网络主要包含14 台OVS,其中,S1和S2为核心层交换机,S3~S6为汇聚层交换机,S7~S14为接入层交换机。实验网络共包含40 台主机接入网络,本实验在模拟SDN 数据中心网络拓扑采用分布式流量生成器(D-ITG,distributed Internet traffic generator)模拟发送正常背景流量和流量密集型应用“大象流”,同时通过脚本控制Fat-Tree 拓扑的数据层主机随机组成多对进行相互通信,产生正常的数据中心东西向周期性网络通信流量。

SDN 控制层泛洪攻击流量由Python 的Scapy工具模拟发出,通过模拟不同速率和比例的Packet-In 泛洪和SYN 泛洪攻击,致使SDN 数据中心数据层目标主机的正常通信受到影响。控制器持续收集30 min 流量数据。将上述攻击流量和正常SDN 数据中心背景流量进行混合发包。在网络拓扑内分别启动静态与动态的源地址动态验证系统,在网络稳定后选定H1、H6、H11、H16、H21、H26、H31和H36为伪造源地址攻击主机,其中,H1和H2连接于同一接入层交换机S1的不同端口,而其余主机分别连接于其他交换机。

5.2 泛洪主机检测实验

本节对泛洪攻击检测算法的性能进行分析和比较,将本文的控制层攻击检测算法与其他基于特征的决策分类算法包括决策树(DT)[29]、随机森林(RF)[30]、k近邻(KNN)[31]、朴素贝叶斯(NB)[32]和支持向量机(SVM)[33]进行性能比较。由表2 的结果得出,基于XGBoost 的控制层攻击检测与分类算法具备在检测准确率和召回率方面最强的综合性能,其各个弱分类器加权叠加形成增强型分类器,通过不断降低计算中的残差,使之前的模型残差向梯度方向进一步降低,从而有效降低分类误差,达到更准确的分类效果。

表2 异常检测算法比较

为了降低伪造源地址主机异常分类模型的在特征方面的复杂度,增强异常流警报时发现异常主机的效率,并减少对SDN 系统资源的占用,对多维符合特征进行解析与评估是必要的流程。通过对每个特征目标函数最优解的遍历计算,选择XGBoost 算法中损失函数的量化计算值作为分裂点,并用GetScore()函数计算增益损失。在遍历所有特征后,增益损失的最值通常可有效衡量一个特征是否具有最大的信息增益和卡方统计量,该统计量可直接反映出特征对分类模型的贡献程度。以控制层泛洪多维解析特征为基础,分别评估其检测泛洪攻击的准确率与召回率,结果如图11 和图12 所示。从图11 和图12 可以看出,在Packet-In 泛洪攻击环境下,EPF、DTB 和MPF 具备更好的分类性能,这是由于Packet-In 泛洪攻击场景下突发性流量大和流量速率倾斜。通过对SDN 接入层交换机端口流量信息的分析,可初步鉴别SDN 大流量的异常状态。而在SYN 泛洪攻击的状态下,PPF、GFF和EPF 具备相对更好的分类性能。由于欺骗式泛洪攻击大量增加了外部流量,通过伪造源地址发起的外部大流量将产生大量无效SYN-ACK 指令,即控制层欺骗式泛洪发生时存在大量包含失配流信息的SYN-ACK 指令,这使成对性特征PPF 和GFF具备更好的分类性能。

准确率与召回率存在差异的原因在于准确率和召回率在控制层异常检测样本定义方面的差别:召回率是所有分类异常样本结果中包含的伪造样本数量占总伪造数的比例,而准确率则是对任意样本分类并定位伪造样本的准确比例。由于控制器泛洪场景涉及的表项特征通常都是高维的、稀疏的,并且样本量巨大,以XGBoost 算法为基础的控制层攻击检测模型的本质是多个表项特征弱分类器的训练和组合,通过熵、信息增益、基尼指数等方法,各个特征弱分类器在每次分裂时选取最优的分裂节点,然后配置多维简单的弱分类器,可以迅速提高识别速度。该组合分类器能够广泛地检索识别疑似攻击样本,召回率相对可观,但各个弱分类器由于样本结果输出多,其实际分类准确率较低。

综合来看,EPF 在两类控制层泛洪场景下有着稳定的性能,这主要是由于φ-熵可用于更加精确的量化主机当前端口多维度的出入流量差的绝对值与Packet-In 泛洪攻击之间的关系。因此,本节对数据层端口信息φ-熵用于建立数据层泛洪攻击分类模型的参数进行测试,结果如表3 和表4所示。结果表明,基于熵的泛洪攻击流分类模型需要计算出合理的阈值以达到更好的分类效果。根据SDN 拓扑的状态,本文实验以φ=0.3 为基础[34]进行阈值测试,并且基于Type A 攻击类型进行了50 次阈值测试,分别计算了基于泛洪攻击流量和普通背景流量状态下的熵值,如表5 和表6 所示。结果表明,最大攻击熵明显大于最小背景熵(maxA>minN),最大背景熵明显大于最小攻击熵(maxN>minA),这符合在控制层泛洪攻击场景下熵值变化的特点。

表3 背景流量下异常流警报模型φ-熵值

表4 泛洪攻击下异常流警报模型φ-熵值

表5 φ-熵值异常流警报模型最小熵阈值测定

表6 φ-熵值异常流警报模型最大熵阈值测定

5.3 泛洪攻击缓解实验

本节SDN 控制层泛洪缓解模块基于SAVI 实现,将对该模块在泛洪缓解及安全性方面的性能进行测试与分析。图13 是部署了基于SAVI 的泛洪攻击缓解模块的SDN 中泛洪攻击数据包的实时数目测试值。在差异化的状态分组验证体系之下,基于SAVI 的泛洪攻击缓解模块能显著降低欺骗式泛洪攻击数据包的数目,差异化的动态轮询模式相比于D-SAVI 具备更快的响应速度。这符合控制层泛洪攻击检测与缓解在时延方面的需求,符合SAVI 源地址绑定−验证体系的基本的安全性能标准[26]。

响应时间是控制器对一个Packet-In 请求作出反馈的时延,图14 展示了在泛洪攻击状态下控制器响应时间测试结果,结果表明当SDN 中激活泛洪攻击主机的数目增多时,控制器的响应时间也将相应增加。在无泛洪攻击检测与防御部署的状态下,控制器的性能将受到严重的影响,数据层的基础通信和与控制层的交互指令的完整性受到极大的破坏。通过控制层泛洪攻击检测与防御机制CDM的部署,控制器的响应效率能恢复近似于无攻击状态下的性能。这表明CDM 能有效检测与缓解控制层欺骗式泛洪,维护SDN 控制层的安全运行。

6 结束语

本文提出了一种轻量级、高精度的控制层泛洪检测与缓解机制,该方法将泛洪防御问题分为检测和缓解2 个步骤,分别解决了泛洪攻击主机分类、泛洪攻击数据包路径过滤和负载优化问题。在泛洪检测方面,提出了轻量级的控制层泛洪关键特征解析模块,利用Boosting 算法将各个特征弱分类器加权叠加形成增强型分类器,通过不断降低计算中的残差,达到了高精度的欺骗式泛洪攻击检测效果。在泛洪缓解方面,CDM 部署了基于SAVI 的泛洪数据包过滤机制,以绑定−验证的模式为基础执行控制层泛洪数据包的路径过滤,同时以动态轮询的模式实现安全保障和泛洪关键特征实时更新。所提方法要求泛洪特征更新的实时性,暂未考虑SDN 链路动态变化的情况,若面向更复杂的拓扑变化状态实施差异化的泛洪主机源地址验证模式,其动态轮询安全保障模块负载将会较大,如何在CDM 中解决这个问题将是下一步工作的重点。

猜你喜欢

源地址表项交换机
一种改进的TCAM路由表项管理算法及实现
国内互联网真实源地址验证研究进展①
基于ARMA模型预测的交换机流表更新算法
修复损坏的交换机NOS
使用链路聚合进行交换机互联
SDN数据中心网络基于流表项转换的流表调度优化
PoE交换机雷击浪涌防护设计
罗克韦尔自动化交换机Allen-Bradley ArmorStratix 5700
实现RSF机制的分布式域间源地址验证
网络安全策略中防火墙技术的应用