APP下载

软件定义网络环境下低速率拒绝服务攻击防御方法

2021-05-07路小宝

现代信息科技 2021年21期
关键词:软件定义网络

关键词:软件定义网络;低速率拒绝服务攻击;攻击溯源;攻击防御

中图分类号:TP393     文献标识码:A文章编号:2096-4706(2021)21-0142-04

Abstract: The software-defined network (SDN) environment will also suffer from the low-rate denial-of-service (LDoS) attack of the traditional network. If the defense strategy can not be taken immediately after the network is attacked, it will bring a great threat to the network. Therefore, according to the global network topology managed by the controller, an attack link traceability mechanism based on Packet_in message is proposed, and the controller sends the stream table to block the attack port to achieve the purpose of attack defense. The experimental results show that this method can effectively defend against LDoS attacks.

Keywords: SDN; LDoS attack; attack traceability; attack defense

0  引  言

低速率拒绝服务攻击发送低速周期脉冲流量[1],占用网络可用资源危害同样不容小觑。检测出LDoS(Low-rate Denial-of-Service)攻击应该立即采取防御策略,防止网络危害进一步扩大,因此研究LDoS攻击的防御意义重大。相关研究领域人员主要关注网络攻击检测,对防御的研究相对较少。不同于其他方法,LDoS攻击防御方法根据SDN(Software Defined Network)环境的特性,有针对性地提出Packet_in消息的路径溯源机制,实现攻击防御的效果。

1  全局网络拓扑发现机制

在SDN网络中,官方没有给出确切的链路发现机制标准,多数控制器使用初代NOX控制器拓扑发现机制。由此,链路层发现协议(link layer discovery protocol, LLDP)成为所有厂商网络设备的标准协议,由LLDP协议[2]控制器可以实时监控全局网络拓扑,网络设备不仅可以告知控制器自身的位置信息,而且还可以发现相邻网络设备的位置信息,便于构建全局拓扑图。

本文以ONOS控制器为例,在控制器所管辖的范围内,控制器向区域内所有交换机下发带有LLDP数据帧的匹配流表项[3],此条流规则优先级最高,当交换机匹配到LLDP数据帧时将其封装到Packet_in消息并发送到控制器。如图1所示,控制器通过洪泛的方式向连接的交换机下发Packet_out消息流表,此消息流表封装了LLDP数据帧;交换机S1接收到Packet_out后,向相邻交换机S2、S3转发封装LLDP数据帧的Packet_out消息;交换机S2、S3接收到数据帧后,依据自身匹配流表项规则,同样将LLDP数据帧封装到Packet_in消息并提交给控制器。由这样的链路发现机制,控制器可以发现链路(S1,S2)、(S1,S3)的存在。ONOS控制器默认在同一时刻以3 s为周期向所有交换机下发packet_out消息,以维护全局网络拓扑图。

2.1  Packet_in消息解析MAC地址

在發生LDoS攻击网络中,控制器可以收集所有流量信息,查找Info为Type: OFPT_PACKET_IN的流量,如图2所示,OpenFlow1.3协议[4]封装了data数据(包括网络的2~4层),数据链路层包含MAC地址,提取其中的源MAC地址和目的MAC地址。Packet_in消息中MAC地址表示为:P_Maci=(P_SrcMaci,P_DstMaci),其中(i=1,2,3,…)表示Packet_in数据包不同的MAC地址序号。

控制器与OpenFlow交换机通过安全通道进行通信,彼此发送Hello消息建立连接,双方选择Hello消息最低版本协议作为通信协议。双方建立连接后,控制器需要获取交换机的特性信息,包括交换机的ID、缓冲区数、端口等信息。控制器通过向交换机发送Features Request消息查询交换机特性,消息仅包含OpenFlow Header。交换机收到消息会返回Features Reply消息,以此来获取交换机信息。

交换机每收到一条数据流后,会查找自身流表,查找与数据流包头相匹配的流表项;如果可以匹配流表中的流规则,交换机会根据流表中的action流表处理数据流;如果匹配不到流规则,交换机会将数据包封装到Packet_in消息交给控制器处理。

LDoS攻击通过伪造源IP地址数据包,周期性发送低速率虚假数据包,OpenFlow交换机对初次进来的数据流查找流表项时,并没有与之匹配的流规则,此时会触发Packet_in事件。之后在交换机中会新建一条流表项,此流表项将对下次符合匹配规则的数据流进行相同的流处理。

如图3所示,在仿真环境下,通过在交换机S1中设置如图3所示的命令进行流表收集。以10秒为周期收集流表信息,循环50次保存在collect1.txt文本中。

3.1  溯源流表项

在检测到有攻击存在时,控制器立即收集Packet_in消息,提取Packet_in消息信息,以建立溯源流表项。溯源流表项包含Packet_in消息解析出来的关键信息P_Maci以及入端口in_port[5],溯源流表项的优先级最高为65535,行为动作是向控制器发送Packet_in消息。与溯源流表项中P_Maci相匹配的攻击流量会被优先选择出来,OpenFlow交换机通过溯源流表项与攻击流的匹配结果触发Packet_in消息,由此控制器可以得到数据包的转发路径。

3.2  溯源过程图

以图5为例阐述LDoS攻击溯源过程,同时它也是实验拓扑图。主机h1和h4分别向h9和h8发起攻击,攻击链路分别为:h1—S1—S4—S5—S6—h9和h4—S2—S4—S5—h8。假设由控制器提取的P_Maci分別为P_Mac1(dl_src=00.00.00.00.00.01,dl_dst=00.00.00.00.00.09)、P_Mac2(dl_src=00.00.00.00.00.04,dl_dst=00.00.00.00.00.08)。控制器根据解析的Packet_in消息构建溯源流表项(仅列关键匹配项),如表1所示。

以入端口向上溯源的终节点为起点依次排列溯源节点,得到溯源节点图,控制器中保存的攻击路径为:h1—S1—S4—S5—S6—h9和h4—S2—S4—S5—h8。

3.3  溯源算法

具体的溯源算法为:

输入:控制器解析Packet_in消息得P_Mac={P_Mac1 ,P_Mac2,…,P_Macn};溯源起始交换机号:S_ID0。

过程:

构建溯源流表项TraceFlow

TraceFlow={priority:65535;match:P_Mac,action: controller}

将S_ID0加入溯源节点图TP中

S_ID=S_ID0

加入溯源流表项TraceFlow到关键路径交换机S_ID中

TraceUp()

if(TraceFlow匹配到交换机流表项)

提取交换机流表项中in_port信息

控制器根据全局网络拓扑以及in_port信息得知上一跳交换机ID

控制器将上一跳交换机ID加入TP中

控制器删除TraceFlow

if(上一跳为交换机)

控制器下发溯源流表项TraceFlow

else if(上一跳为主机)

入端口向上溯源结束

end if

else

正常流量转发

end if

TraceBack()

if(TraceFlow匹配到交换机流表项)

提取匹配流表项action中output信息

控制器根据全局网络拓扑以及output信息得知下一跳交换机ID

if(下一跳为交换机)

控制器下发溯源流表项TraceFlow

else if(下一跳为主机)

出端口向下溯源结束

end if

else

正常流量转发

end if

输出:溯源节点图TP

4  LDoS攻击防御方法

由上述溯源节点图,追溯到向上溯源的攻击主机,可以得到与之相连的交换机S_ID。通过控制器的全局网络拓扑得出交换机S_ID所连接的所有in_port端口号port。

通过溯源的结果得到攻击主机以及与之相连的交换机端口号port。控制器通过下发流表的方式进行端口封禁,下发流表项如表2所示。端口封禁可避免LDoS攻击流再次进入网络造成威胁,进而从源头上彻底阻断攻击[6],同时也可避免攻击不断产生的Packet_in消息对控制器造成的压力。

在操作系统Ubantu下,使用Mininet和ONOS控制器实现仿真环境。实验拓扑图如图5所示,主机h1和h4分别向h9和h8发起攻击,主机h2、h5和h9发送背景流量模拟真实网络环境。通过使用wireshark抓包软件,抓取攻击和防御过程中的流量变化,分析实验结果。如图6所示,攻击30 s产生,结束时间為90 s,第60 s开始实施防御措施。所有数据包数开始下降(上线),Packet_in数据包数也开始下降(下线)。实验结果表明,本文方法可以实现LDoS攻击的防御。

6  结  论

本文通过控制器提取Packet_in消息和交换机中攻击流表特征,并利用控制器全局网络拓扑构建溯源节点图,下发流表进行端口封禁,实现LDoS攻击的防御。但是防御措施实施后总数据包并没有立即回到初始状态。这是因为控制器以广播的形式对攻击流量产生寻址消息,下一步计划防御后进行数据清洗工作。

参考文献:

[1] 颜通,白志华,高镇,等.SDN环境下的LDoS攻击检测与防御技术 [J].计算机科学与探索,2020,14(4):566-577.

[2] 谢升旭,魏伟,邢长友,等.面向SDN拓扑发现的LDoS攻击防御技术研究 [J].计算机工程与应用,2020,56(10):88-93.

[3] 郑正,徐明伟,李琦,等.SDN网络拓扑污染攻击防御机制研究 [J].计算机研究与发展,2018,55(1):207-215.

[4] 刘向举,刘鹏程,路小宝,等.基于SD-IoT的DDoS攻击防御方法 [J].计算机工程与设计,2021,42(11):3001-3008.

[5] 赵茹东.软件定义网络中DDoS攻击检测和防御技术研究 [D].南京:南京理工大学,2018.

[6] 钟金,窦万峰,朱恩霞.基于源的DDoS攻击的检测与防御技术 [J].计算机应用与软件,2005(10):26-27.

作者简介:路小宝(1995—),男,汉族,安徽蚌埠人,硕士研究生在读,研究方向:物联网、软件定义网络。

猜你喜欢

软件定义网络
面向未来的传输综合网管系统演进研究
基于队列树的SDN控制器高效消息处理机制
中国联通SDN的思考和应用实例
业务功能链技术及其应用探析
针对大规模软件定义网络的子域划分及控制器部署方法
一种新的SDN架构下端到端网络主动测量机制
超高吞吐率Wi—Fi融合应用新技术分析