可编程网络中一种轻量级DDoS攻击缓解机制研究
2022-02-17王卓昊方琦尹建辉刘颖董平
王卓昊 方琦 尹建辉 刘颖 董平
1. 中国科学技术信息研究所 北京 100038;
2. 北京交通大学移动专用网络国家工程研究中心 北京 100044
引言
科技情报行业作为科研和生产服务的行业,大部分业务主要依托网络平台开展实施[1]。随着互联网的应用范围越来越广,信息化进程不断推进,科技情报服务得到了快速发展,随之而来的网络攻击也日渐频繁。频繁的网络攻击以及不断出现的网络安全问题,严重威胁着个人隐私、财产安全,也使科技情报工作面临着安全风险压力,因此,保障科技情报服务应用环境中的网络安全越来越重要。在所有网络攻击中,分布式拒绝服务攻击(DDoS)仍是发生频次最高的攻击方式之一。根据《2021年全球DDoS威胁报告》[2]统计分析,DDoS攻击峰值及大流量攻击发生的次数持续增长,攻击手法和行业分布呈现多元化的趋势。报告显示,2021年共发生2039次超500 Gbps攻击,其中包含7次超800 Gbps的攻击,DDoS攻击对互联网连接系统安全性造成了严重的威胁。
从更加宏观的层面来看,网络空间的安全对抗日趋激烈,传统的安全技术不能全面满足安全防护的需要[3]。安全威胁情报可以让安全分析和事件响应工作处理变得更简单、更高效,是做到持续有效的检测与快速响应的基础。例如,可建立威胁情报的检索,从而实现对安全线索的精准发掘;可利用威胁情报预测现有的攻击线索可能造成的恶意行为,从而有效确定攻击范围;可依赖威胁情报区分不同类型的网络攻击,识别出潜在的高危级别攻击,从而实现对攻击的及时响应[4]。本文利用情报学方法分析了已发生DDoS攻击事件特征,发现大多数DDoS攻击事件会消耗大量的网络带宽,从而造成网络拥塞。
DDoS攻击呈现出攻击强度增加、多样性增强、攻击方式更加隐蔽的趋势,对网络安全设备的性能产生了更高的要求。最早出现的基于规则的检测方法虽然速度较快,但很依赖过往发生过的攻击,需要庞大的知识库作为支持。熵是反映网络流量变化的一种特征,因此可以作为攻击检测的一种手段。但作为评判指标的特征选取较为困难,泛用性不高。近年来,基于机器学习的DDoS攻击检测逐渐成为主流方向,具有误报率低、准确性高的特点,但该方法往往需要大量的标准化数据集,训练成本高昂[5]。总结来看,以上所有的检测手段都需要具体的DDoS攻击特征,并且由于检测成本高、存储和计算开销大等问题难以在传统网络中实际部署,无法做到对DDoS攻击的轻量级检测。
针对DDoS攻击呈现的三个特征,可编程数据平面在处理网络攻击时具有三个关键优势,即数据包的可见性、可扩展性和高速处理能力。可编程网络中将攻击检测功能迁移到控制器中,数据平面仅仅负责执行限速缓解策略,从而大大降低数据平面开销,同时控制器的全局视角也可以快速定位攻击源,采取源端限速的方式减小攻击对网络的危害。带内遥测技术随包测量的方式能够在减小网络开销的同时不影响交换机内部状态,适用于DDoS攻击导致网络拥塞的场景。因此在可编程数据平面中进行基于带内遥测的DDoS攻击缓解的研究具有一定的价值。
1 相关工作
随着网络安全态势日趋复杂化,威胁情报的研究越显重要。石波等[6]通过构建知识图谱的方式解决了安全威胁情报来源不清、难以理解问题,提高了威胁情报的可用性和可读性。传统的入侵检测系统往往只能提取已知攻击的行为特征,无法应对复杂变化的热点网络攻击事件。刘亮等[7]利用开源的威胁情报数据设计了一种可以自动生成检测规则的方法,从而有效提升入侵检测系统应对热点攻击事件的能力。
流量攻击是DDoS的一种表现形式,因此,高效监控网络流量、快速定位网络故障、迅速启动流量限制是防范DDoS攻击的一种思路。在流量检测相关工作中,带内网络遥测(In-band Network Telemetry,INT)是延时性低、细粒度高的一种网络测量方法[8]。带内网络遥测的思想在2000年便已被提出,之后学术界提出了诸多的改进方案,包括在可编程网络环境下的尝试。Wang等[9]在P4交换机中设计并实现了一种可以实时或过去跟踪与流数据包匹配的规则。Tang等[10]通过扩展OpenvSwitch平台设计了一种运行时可编程的选择性INT系统。目前带内网络遥测技术解决了许多网络测量方面的难题,但这些技术仍然存在一定的局限性,带内网络遥测技术仍然处于发展中[22]。
从拥塞控制方法部署的位置来看,可以分为基于源端的拥塞控制和基于链路的拥塞控制。最早得到了广泛应用的基于源端的拥塞控制方法是Jacobson[11]提出的TCP拥塞控制,该机制最初由“慢启动”和“拥塞避免”组成,后来在其中增加了“快速重传”“快速恢复”算法[12],之后又对“快速恢复”算法进行了改进[13]。Vo等[14]开发了一种多路径拥塞控制协议mFast,用于高BDP连接场景,实现了负载平衡和吞吐量提高的目标。最初提出的基于链路的拥塞控制方法是RED算法[15]。1998年,Braden等[16]提出了主动队列管理(active queue management,简称AQM)的方法。Hao等[17]利用SDN技术提出了一种高效的重新路由算法,该算法在缓解网络拥塞和保证网络性能方面表现较好。
为了应对DDoS攻击的泛滥,近年来出现了大量的DDoS攻击缓解机制。Liu等[18]提出了一个可扩展的抗DoS网络架构NetFence。NetFence可证明地保证合法的发送者公平地分享网络资源,而无需保持拥塞链路的每主机状态。Piedrahita等[19]提出了一种用于软件定义网络(SDN)的轻量级快速拒绝服务检测和缓解系统FlowFence,该系统可以有效区分攻击流和合法流。从长远看,DDoS攻击和防御仍然会处于对立阶段,在建立高效全面的防御缓解体系方面仍将面临许多的困难和挑战。
2 可编程网络中轻量级DDoS攻击缓解机制设计与实现
2.1 缓解机制总体方案设计与实现
结合现有的研究工作,本文针对可编程网络中DDoS攻击进行研究,提出了一种基于带内遥测的轻量级DDoS攻击缓解机制。该攻击缓解机制重点在可编程网络架构下通过设计数据平面和控制平面功能来达到快速准确检测网络拥塞的目的,数据平面和控制平面之间通过API进行通信,整体设计结构如图1所示。
图1 缓解机制整体架构
数据平面主要负责利用网络遥测检测DDoS攻击和执行攻击缓解策略;控制平面主要负责解析数据平面上报的遥测信息,生成并下发相应的限速缓解策略。该缓解机制的整体实现流程如图2所示。
图2 缓解机制实现流程
在数据平面中,交换机实时接收用户发送的数据流。进入交换机时,数据包被解析后先判断入口交换机有没有收到限速命令,若收到则开始限速,此时在接入交换机入口维护一个计数器统计一段时间t1内的数据包数量,若计数器的值未超过阈值则继续匹配数据包,否则丢弃数据包。若入口交换机并未收到限速命令,则直接向数据包中插入遥测包头,之后的每一跳交换机都进行遥测包头的匹配,同时插入和更新所要测量的遥测信息,出口交换机通过遥测包头中的队列深度enq_depth_new的值来检测是否发生了DDoS攻击。若队列深度大于某一阈值则表示此时检测到了DDoS攻击产生的拥塞,通过P4语言中原生的clone函数克隆数据包,从而将遥测信息上报至控制平面;若队列深度不超过阈值,则由出口交换机删除遥测包头后将数据包发给目的主机,交换机继续接收新的数据包。
在控制平面中,控制器收到带有遥测信息的克隆数据包则表示网络遭受了DDoS攻击并产生了拥塞,需要生成并下发限速缓解策略。控制器首先解析收到的遥测信息,读取其中交换机编号swid的值,然后根据swid的值向与恶意主机相连的接入交换机下达限速命令。控制器继续监听,等待下一次sniff克隆数据包和解析遥测信息。
2.2 数据平面功能的设计与实现
数据平面的代码都是用P4语言[20]实现,通过编写P4程序代码可以定义交换机对数据包的处理逻辑。数据平面在每台P4交换机[21]上部署了INT功能,用于测量网络中数据包经过的每个网络节点的信息以此来检测DDoS攻击,在每台P4交换机入口部署了限速算法,通过拥塞控制的手段缓解DDoS攻击,在出口交换机部署了克隆算法,当检测到DDoS攻击后将遥测信息克隆至控制平面。
(1)数据包解析模块
解析模块在P4中通过定义header、metadata和parser结构实现。P4数据包的头部包括Ethernet头部、Telemetry头部、IPv4头部和UDP头部,其中Ethernet头部、IPv4头部和UDP头部根据当前协议标准进行定义。
数据包解析模块的完整实现流程如图3所示。
图3 数据包解析流程
(2)INT及INT信息克隆模块设计与实现
在本设计中主要利用INT功能测量交换机编号swid和交换机队列深度standard_metadata.enq_qdepth,通过带内遥测[16]将遥测包头里所记录的队列深度更新为较大值。具体过程如图4所示。
图4 INT设计原理
数据包经过交换机时,交换机就将自己的编号和队列深度插入数据包中,并更新enq_depth_new字段为队列深度较大值。当数据包到达出口交换机后执行克隆算法,该算法首先判断遥测包头中enq_depth_new的值是否大于阈值,若大于阈值则表明网络中某处发生了拥塞,需要将遥测信息克隆至控制平面,由控制器根据最大队列深度值确定发生拥塞的交换机位置;否则在删除遥测包头后将数据包发给目的主机,交换机继续接收新的数据包。具体实现流程如图5所示。
图5 INT实现流程
(3)限速模块设计与实现
部署在P4交换机入口的限速算法设计思路是,当交换机收到控制器下发的限速命令时,入口启动限速功能,此时通过计数器计算一段时间t1内通过交换机入口的数据包的数量。当超过所设定的阈值时,开始丢包,并在超过一段时间t1后,计数器清零,重复上述操作,以此限速来达到缓解DDoS攻击的效果。若未收到限速命令,交换机执行正常的转发行为。具体过程如图6所示。
图6 限速算法原理
限速算法的具体流程如图7所示。
图7 限速算法实现流程
2.3 控制平面功能的设计与实现
本机制中控制平面的控制器用来添加镜像,并且通过解析遥测信息来判断是否需要生成并下发限速策略。这里的设计思路是,若控制器收到了带有遥测信息的克隆数据包,则表示网络中受到了DDoS攻击,控制器生成限速策略,下发限速命令,同时根据解析到的遥测信息中swid的值,来决定给哪些接入交换机下达限速命令从而缓解DDoS攻击。
控制平面的代码是用python语言实现,python中的scapy工具可用于监听数据平面发送的数据包。在网络拓扑运行时,控制器周期性地下发流表以支持数据包的匹配,同时也会解析收到的遥测信息。
具体实现流程如图8所示。
图8 控制平面实现流程
3 可编程网络中轻量级DDoS攻击缓解机制测试
3.1 实验环境
本实验使用的实验软件是Linux系统中的Ubuntu系统,实验是在Ubuntu系统下搭建好的P4环境中进行测试的。本文利用Mininet软件平台搭建网络的实验环境,网络中的交换机采用BMv2交换机,控制器运行在单独的服务器上,以此完成整个实验的网络拓扑的搭建。运行整个系统环境的硬件参数如表1所示。
表1 系统硬件参数配置
搭建的实验网络拓扑如图9所示。拓扑中包含了一台控制器、三台交换机和四台终端主机,控制器和交换机之间通过Thrift端口实现相互通信。每个设备的详细配置信息如表2所示。
表2 设备地址和端口设置
图9 网络拓扑
3.2 功能测试
3.2.1 运行系统
首先,对Linux系统的正常功能进行测试,打开Terminal,通过指令sudo p4run --config p4app-line.json启动拓扑,运行P4代码和控制器代码。如图10所示,可以看到P4代码编译成功。
图10 网络拓扑开启成功
3.2.2 实验参数设置
本实验用iperf模拟DDoS攻击,攻击主机通过iperf -c 10.0.3.1 -u -b 3M -t 200实现攻击,表示每秒向IP地址为10.0.3.1的主机发送3 Mbit的UDP数据包。根据前面部分所展示的链路信息,设置的链路带宽为10 Mbit。阈值的设置数值如表3所示。拥塞阈值指当交换机队列深度大于50(约为80%的最大队列)时表明发生了拥塞,需要采取相应的限速缓解策略。限速阈值是从源端对单个攻击流的速率限制,可以有效应对多个攻击源的DDoS攻击场景。
表3 阈值参数
3.3 性能分析
本机制的性能分析从两个方面进行分析,分别是缓解效果和反应时间。
缓解效果是指吞吐量是否能从大流量的拥塞状态恢复到正常状态;反应时间是指从检测到DDoS攻击开始到缓解成功即吞吐量下降所用的时间,本实验中当发送相同的攻击流量时,检测到拥塞所用时间相同,在图中表示的时间段如图11所示。
图11 反应时间
(1)缓解效果
首先看本缓解机制对DDoS攻击的缓解效果,参数设置如表4所示。利用wireshark抓包查看s2-eth1链路上的吞吐量,实验效果如图12所示。可以看到,无论是哪种大小的攻击流量,最后都能被本缓解机制检测并限制至正常值160 packets/s,可见缓解效果较好。
表4 实验参数设置
图12 不同攻击流量下的吞吐量
在让h1和h4向h3发送3 M/s的攻击流量、拥塞阈值为50的情况下,将限速阈值分别设置为50 packets/s、80 packets/s、100 packets/s,再次观察缓解效果如图13所示,缓解后的吞吐量也达到了所设置的阈值,可见缓解效果较好。
图13 不同速率限制的吞吐量
(2)反应时间
测试反应时间参数如表5所示,分别测试100次的反应时间散点图如图14所示。三种限速情况下对应的反应时间的平均值大约分别为19s,22s,31s。由测试结果可以看到当限速阈值中数据包统计周期置的越小时,反应越迅速,反应时间越短,缓解机制更加灵敏,对DDoS攻击能作出较快的反应。
表5 实现参数设置
图14 反应时间对比
4 结论
本文考虑到网络中由于DDoS攻击泛滥造成网络拥塞的场景,在了解DDoS攻击形式和DDoS攻击缓解机制的研究现状后,在可编程网络中,通过在源端限速的方式,对基于带内遥测的DDoS攻击缓解机制进行了研究。通过数据平面和控制平面的结合达到了DDoS攻击缓解的效果,同时未给网络带来过多负担,实现了可编程网络中轻量级的DDoS攻击缓解机制,并通过实验验证了本机制的有效性和可行性。