







關(guān)鍵詞:軟件定義網(wǎng)絡(luò);低速率拒絕服務(wù)攻擊;攻擊溯源;攻擊防御
中圖分類號(hào):TP393 ? ? 文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):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 ?引 ?言
低速率拒絕服務(wù)攻擊發(fā)送低速周期脈沖流量[1],占用網(wǎng)絡(luò)可用資源危害同樣不容小覷。檢測(cè)出LDoS(Low-rate Denial-of-Service)攻擊應(yīng)該立即采取防御策略,防止網(wǎng)絡(luò)危害進(jìn)一步擴(kuò)大,因此研究LDoS攻擊的防御意義重大。相關(guān)研究領(lǐng)域人員主要關(guān)注網(wǎng)絡(luò)攻擊檢測(cè),對(duì)防御的研究相對(duì)較少。不同于其他方法,LDoS攻擊防御方法根據(jù)SDN(Software Defined Network)環(huán)境的特性,有針對(duì)性地提出Packet_in消息的路徑溯源機(jī)制,實(shí)現(xiàn)攻擊防御的效果。
1 ?全局網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)機(jī)制
在SDN網(wǎng)絡(luò)中,官方?jīng)]有給出確切的鏈路發(fā)現(xiàn)機(jī)制標(biāo)準(zhǔn),多數(shù)控制器使用初代NOX控制器拓?fù)浒l(fā)現(xiàn)機(jī)制。由此,鏈路層發(fā)現(xiàn)協(xié)議(link layer discovery protocol, LLDP)成為所有廠商網(wǎng)絡(luò)設(shè)備的標(biāo)準(zhǔn)協(xié)議,由LLDP協(xié)議[2]控制器可以實(shí)時(shí)監(jiān)控全局網(wǎng)絡(luò)拓?fù)洌W(wǎng)絡(luò)設(shè)備不僅可以告知控制器自身的位置信息,而且還可以發(fā)現(xiàn)相鄰網(wǎng)絡(luò)設(shè)備的位置信息,便于構(gòu)建全局拓?fù)鋱D。
本文以O(shè)NOS控制器為例,在控制器所管轄的范圍內(nèi),控制器向區(qū)域內(nèi)所有交換機(jī)下發(fā)帶有LLDP數(shù)據(jù)幀的匹配流表項(xiàng)[3],此條流規(guī)則優(yōu)先級(jí)最高,當(dāng)交換機(jī)匹配到LLDP數(shù)據(jù)幀時(shí)將其封裝到Packet_in消息并發(fā)送到控制器。如圖1所示,控制器通過洪泛的方式向連接的交換機(jī)下發(fā)Packet_out消息流表,此消息流表封裝了LLDP數(shù)據(jù)幀;交換機(jī)S1接收到Packet_out后,向相鄰交換機(jī)S2、S3轉(zhuǎn)發(fā)封裝LLDP數(shù)據(jù)幀的Packet_out消息;交換機(jī)S2、S3接收到數(shù)據(jù)幀后,依據(jù)自身匹配流表項(xiàng)規(guī)則,同樣將LLDP數(shù)據(jù)幀封裝到Packet_in消息并提交給控制器。由這樣的鏈路發(fā)現(xiàn)機(jī)制,控制器可以發(fā)現(xiàn)鏈路(S1,S2)、(S1,S3)的存在。ONOS控制器默認(rèn)在同一時(shí)刻以3 s為周期向所有交換機(jī)下發(fā)packet_out消息,以維護(hù)全局網(wǎng)絡(luò)拓?fù)鋱D。
2.1 ?Packet_in消息解析MAC地址
在發(fā)生LDoS攻擊網(wǎng)絡(luò)中,控制器可以收集所有流量信息,查找Info為Type: OFPT_PACKET_IN的流量,如圖2所示,OpenFlow1.3協(xié)議[4]封裝了data數(shù)據(jù)(包括網(wǎng)絡(luò)的2~4層),數(shù)據(jù)鏈路層包含MAC地址,提取其中的源MAC地址和目的MAC地址。Packet_in消息中MAC地址表示為:P_Maci=(P_SrcMaci,P_DstMaci),其中(i=1,2,3,…)表示Packet_in數(shù)據(jù)包不同的MAC地址序號(hào)。
控制器與OpenFlow交換機(jī)通過安全通道進(jìn)行通信,彼此發(fā)送Hello消息建立連接,雙方選擇Hello消息最低版本協(xié)議作為通信協(xié)議。雙方建立連接后,控制器需要獲取交換機(jī)的特性信息,包括交換機(jī)的ID、緩沖區(qū)數(shù)、端口等信息。控制器通過向交換機(jī)發(fā)送Features Request消息查詢交換機(jī)特性,消息僅包含OpenFlow Header。交換機(jī)收到消息會(huì)返回Features Reply消息,以此來獲取交換機(jī)信息。
交換機(jī)每收到一條數(shù)據(jù)流后,會(huì)查找自身流表,查找與數(shù)據(jù)流包頭相匹配的流表項(xiàng);如果可以匹配流表中的流規(guī)則,交換機(jī)會(huì)根據(jù)流表中的action流表處理數(shù)據(jù)流;如果匹配不到流規(guī)則,交換機(jī)會(huì)將數(shù)據(jù)包封裝到Packet_in消息交給控制器處理。
LDoS攻擊通過偽造源IP地址數(shù)據(jù)包,周期性發(fā)送低速率虛假數(shù)據(jù)包,OpenFlow交換機(jī)對(duì)初次進(jìn)來的數(shù)據(jù)流查找流表項(xiàng)時(shí),并沒有與之匹配的流規(guī)則,此時(shí)會(huì)觸發(fā)Packet_in事件。之后在交換機(jī)中會(huì)新建一條流表項(xiàng),此流表項(xiàng)將對(duì)下次符合匹配規(guī)則的數(shù)據(jù)流進(jìn)行相同的流處理。
如圖3所示,在仿真環(huán)境下,通過在交換機(jī)S1中設(shè)置如圖3所示的命令進(jìn)行流表收集。以10秒為周期收集流表信息,循環(huán)50次保存在collect1.txt文本中。
3.1 ?溯源流表項(xiàng)
在檢測(cè)到有攻擊存在時(shí),控制器立即收集Packet_in消息,提取Packet_in消息信息,以建立溯源流表項(xiàng)。溯源流表項(xiàng)包含Packet_in消息解析出來的關(guān)鍵信息P_Maci以及入端口in_port[5],溯源流表項(xiàng)的優(yōu)先級(jí)最高為65535,行為動(dòng)作是向控制器發(fā)送Packet_in消息。與溯源流表項(xiàng)中P_Maci相匹配的攻擊流量會(huì)被優(yōu)先選擇出來,OpenFlow交換機(jī)通過溯源流表項(xiàng)與攻擊流的匹配結(jié)果觸發(fā)Packet_in消息,由此控制器可以得到數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑。
3.2 ?溯源過程圖
以圖5為例闡述LDoS攻擊溯源過程,同時(shí)它也是實(shí)驗(yàn)拓?fù)鋱D。主機(jī)h1和h4分別向h9和h8發(fā)起攻擊,攻擊鏈路分別為:h1—S1—S4—S5—S6—h9和h4—S2—S4—S5—h8。假設(shè)由控制器提取的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)。控制器根據(jù)解析的Packet_in消息構(gòu)建溯源流表項(xiàng)(僅列關(guān)鍵匹配項(xiàng)),如表1所示。
以入端口向上溯源的終節(jié)點(diǎn)為起點(diǎn)依次排列溯源節(jié)點(diǎn),得到溯源節(jié)點(diǎn)圖,控制器中保存的攻擊路徑為:h1—S1—S4—S5—S6—h9和h4—S2—S4—S5—h8。
3.3 ?溯源算法
具體的溯源算法為:
輸入:控制器解析Packet_in消息得P_Mac={P_Mac1 ,P_Mac2,…,P_Macn};溯源起始交換機(jī)號(hào):S_ID0。
過程:
構(gòu)建溯源流表項(xiàng)TraceFlow
TraceFlow={priority:65535;match:P_Mac,action: controller}
將S_ID0加入溯源節(jié)點(diǎn)圖TP中
S_ID=S_ID0
加入溯源流表項(xiàng)TraceFlow到關(guān)鍵路徑交換機(jī)S_ID中
TraceUp()
if(TraceFlow匹配到交換機(jī)流表項(xiàng))
提取交換機(jī)流表項(xiàng)中in_port信息
控制器根據(jù)全局網(wǎng)絡(luò)拓?fù)湟约癷n_port信息得知上一跳交換機(jī)ID
控制器將上一跳交換機(jī)ID加入TP中
控制器刪除TraceFlow
if(上一跳為交換機(jī))
控制器下發(fā)溯源流表項(xiàng)TraceFlow
else if(上一跳為主機(jī))
入端口向上溯源結(jié)束
end if
else
正常流量轉(zhuǎn)發(fā)
end if
TraceBack()
if(TraceFlow匹配到交換機(jī)流表項(xiàng))
提取匹配流表項(xiàng)action中output信息
控制器根據(jù)全局網(wǎng)絡(luò)拓?fù)湟约皁utput信息得知下一跳交換機(jī)ID
if(下一跳為交換機(jī))
控制器下發(fā)溯源流表項(xiàng)TraceFlow
else if(下一跳為主機(jī))
出端口向下溯源結(jié)束
end if
else
正常流量轉(zhuǎn)發(fā)
end if
輸出:溯源節(jié)點(diǎn)圖TP
4 ?LDoS攻擊防御方法
由上述溯源節(jié)點(diǎn)圖,追溯到向上溯源的攻擊主機(jī),可以得到與之相連的交換機(jī)S_ID。通過控制器的全局網(wǎng)絡(luò)拓?fù)涞贸鼋粨Q機(jī)S_ID所連接的所有in_port端口號(hào)port。
通過溯源的結(jié)果得到攻擊主機(jī)以及與之相連的交換機(jī)端口號(hào)port。控制器通過下發(fā)流表的方式進(jìn)行端口封禁,下發(fā)流表項(xiàng)如表2所示。端口封禁可避免LDoS攻擊流再次進(jìn)入網(wǎng)絡(luò)造成威脅,進(jìn)而從源頭上徹底阻斷攻擊[6],同時(shí)也可避免攻擊不斷產(chǎn)生的Packet_in消息對(duì)控制器造成的壓力。
在操作系統(tǒng)Ubantu下,使用Mininet和ONOS控制器實(shí)現(xiàn)仿真環(huán)境。實(shí)驗(yàn)拓?fù)鋱D如圖5所示,主機(jī)h1和h4分別向h9和h8發(fā)起攻擊,主機(jī)h2、h5和h9發(fā)送背景流量模擬真實(shí)網(wǎng)絡(luò)環(huán)境。通過使用wireshark抓包軟件,抓取攻擊和防御過程中的流量變化,分析實(shí)驗(yàn)結(jié)果。如圖6所示,攻擊30 s產(chǎn)生,結(jié)束時(shí)間為90 s,第60 s開始實(shí)施防御措施。所有數(shù)據(jù)包數(shù)開始下降(上線),Packet_in數(shù)據(jù)包數(shù)也開始下降(下線)。實(shí)驗(yàn)結(jié)果表明,本文方法可以實(shí)現(xiàn)LDoS攻擊的防御。
6 ?結(jié) ?論
本文通過控制器提取Packet_in消息和交換機(jī)中攻擊流表特征,并利用控制器全局網(wǎng)絡(luò)拓?fù)錁?gòu)建溯源節(jié)點(diǎn)圖,下發(fā)流表進(jìn)行端口封禁,實(shí)現(xiàn)LDoS攻擊的防御。但是防御措施實(shí)施后總數(shù)據(jù)包并沒有立即回到初始狀態(tài)。這是因?yàn)榭刂破饕詮V播的形式對(duì)攻擊流量產(chǎn)生尋址消息,下一步計(jì)劃防御后進(jìn)行數(shù)據(jù)清洗工作。
參考文獻(xiàn):
[1] 顏通,白志華,高鎮(zhèn),等.SDN環(huán)境下的LDoS攻擊檢測(cè)與防御技術(shù) [J].計(jì)算機(jī)科學(xué)與探索,2020,14(4):566-577.
[2] 謝升旭,魏偉,邢長(zhǎng)友,等.面向SDN拓?fù)浒l(fā)現(xiàn)的LDoS攻擊防御技術(shù)研究 [J].計(jì)算機(jī)工程與應(yīng)用,2020,56(10):88-93.
[3] 鄭正,徐明偉,李琦,等.SDN網(wǎng)絡(luò)拓?fù)湮廴竟舴烙鶛C(jī)制研究 [J].計(jì)算機(jī)研究與發(fā)展,2018,55(1):207-215.
[4] 劉向舉,劉鵬程,路小寶,等.基于SD-IoT的DDoS攻擊防御方法 [J].計(jì)算機(jī)工程與設(shè)計(jì),2021,42(11):3001-3008.
[5] 趙茹東.軟件定義網(wǎng)絡(luò)中DDoS攻擊檢測(cè)和防御技術(shù)研究 [D].南京:南京理工大學(xué),2018.
[6] 鐘金,竇萬峰,朱恩霞.基于源的DDoS攻擊的檢測(cè)與防御技術(shù) [J].計(jì)算機(jī)應(yīng)用與軟件,2005(10):26-27.
作者簡(jiǎn)介:路小寶(1995—),男,漢族,安徽蚌埠人,碩士研究生在讀,研究方向:物聯(lián)網(wǎng)、軟件定義網(wǎng)絡(luò)。