?

軟件定義網絡環境下DoS 攻防實驗設計

2021-04-06 01:08楊章靜
實驗技術與管理 2021年2期
關鍵詞:流表隱藏式交換機

陳 鐳,楊章靜,黃 璞

(1. 南京審計大學 信息工程學院,江蘇 南京 211815;2. 南京大學 計算機軟件新技術國家重點實驗室,江蘇 南京 210232)

軟件定義網絡(software defined networking,SDN)作為一種新型的網絡架構[1-2],把網絡控制平面與數據平面進行分離。其中控制平面擁有網絡全局視圖,集中管控網絡資源,數據平面只轉發數據,大大簡化了網絡的配置和管理。SDN 這一顛覆性的理念被認為將對未來網絡產生革命性的影響,在很大程度上代表了未來網絡的發展方向,因此將SDN 引入計算機網絡教學是必然趨勢。計算機網絡課程教學,十分注重實踐教學,通過各種不同的組網實驗,讓學生理解和掌握計算機網絡的基本原理。

目前大多高校SDN 教學實驗中普遍存在實體硬件設備不足及實驗場地的限制,很難大規模開展SDN實體設備教學實驗。學生在SDN 的學習上操作受限,難以深入理解SDN 實驗教學的原理和內涵。虛擬仿真實驗具有成本低、效率高、功能全、靈活等優點,是高等教育信息化建設和實驗教學的重要手段,在SDN教學實驗中可以發揮重要的作用[3-6]。

本文詳細介紹了SDN 的背景知識;對比展示了SDN環境下幾種不同的DoS攻擊場景[7],包括控制平面、數據平面及網絡主機遭受洪范式或隱藏式拒絕服務(denial of service,DoS)攻擊的不同特點;采用輕量級網絡仿真平臺Mininet 搭建SDN 網絡,使用Floodlight控制器軟件和sFlow 流量監控軟件,設計并實現了SDN環境下的洪范式和隱藏式DoS 攻擊和防御仿真實驗[8]。

1 SDN 背景知識

1.1 SDN 三層架構

開放式網絡基金會(ONF)提出的OpenFlow 協議,初步實現了SDN 的核心思想,如圖1 所示,SDN架構從底向上分別是基礎設施層、控制層和應用層。

基礎設施層由支持OpenFlow 協議的交換機組成,負責數據包的匹配和轉發??刂茖荧@取底層交換機的信息,實時維護網絡拓撲和狀態,并為應用層提供服務接口。應用層包含各種業務和應用,通過控制層提供的接口調用、編排網絡資源。底層網絡設備只負責數據轉發,控制層集中掌控網絡資源,通過應用程序就可以完成SDN 全局網絡的管理。這種架構大大降低了網絡的復雜度和搭建成本,加速了網絡部署周期,提高了網絡管理的靈活性。

圖1 SDN 三層架構圖

1.2 OpenFl ow 流表

流表是交換機數據轉發功能的核心。OpenFlow1.0協議中規定每個流表項由3 部分組成:包頭域、計數器和動作。

包頭域用于數據包的包頭內容進行匹配,共有12個匹配項,如表1 所示。包含了傳統網絡2 層到4 層的尋址信息(Mac、IP、端口)。OpenFlow 交換機可以看成是一種廣義的轉發設備,同時具備了傳統網絡交換機、路由器、防火墻的功能。

計數器用于統計匹配到的數據包信息,可以對交換機中的每個數據流、端口、隊列、流表分別統計。

動作是指對匹配到的數據包的后續處理方式。OpenFlow 交換機如果沒有定義動作,默認情況下數據包被丟棄。常見的動作有:轉發、丟棄、排隊等。

表1 流表包頭域

1.3 SDN 工作流程

當主機h1 與主機h2 進行通信時,如圖2 所示,大致包含以下步驟[9]:

步驟1 主機h1 向交換機s1 發送到主機h2 的數據包;交換機s1 查詢流表,若s1 的流表中有匹配項,則轉到步驟4。

步驟2 s1 流表中無匹配項,則s1 通過Packet-In消息將數據包轉發給控制器。

步驟3 控制器收到s1 的請求信息后,生成相應的應答策略,并通過Packet-Out 消息下發至s1。

步驟4 s1 執行流表中的應答策略,將數據包轉發至交換機s2。當交換機s2 收到數據包以后,若s2 的流表中有匹配項,則轉到步驟7;若s2 的流表中無匹配項,則轉到步驟5。

步驟5 與步驟2 相似,s2 流表中無匹配項,則s2 通過Packet-In 消息將數據包轉發給控制器。

步驟6 與步驟3 相似,控制器收到s2 的請求信息后,生成相應的應答策略,并通過Packet-Out 消息下發至s2。

步驟7 s2 執行流表中的應答策略,將數據包轉發至主機h2。

圖2 基于OpenFlow 的SDN 工作流程

2 SDN 環境下DoS 攻擊場景

DoS 攻擊通過在短時間內向目標網絡或主機發送大量的數據包,占滿帶寬和服務資源。當正常用戶進行網絡通信時,就會出現請求異?;蚍粘鲥e。DoS攻擊簡單有效,對正常的網絡通信造成嚴重影響,是網絡安全領域關注的重點。

2.1 對控制器的DoS 攻擊

(1)控制器洪范式攻擊[10]。當一個數據包沒有匹配到任何流表項時,若交換機緩存未滿,交換機將緩存報文內容,并將報文頭封裝在Packet-In 消息中轉發給控制器;一旦交換機緩存滿了,交換機會直接將整個報文都封裝在Packet-In 消息中轉發給控制器,這種方式會大大加重控制器的負擔。此外,控制器有一個路徑計算模塊,當大量偽造的數據包到來時,控制器無法計算出完整的路徑信息,會占用控制器大量計算資源,導致控制器無法提供正常服務。

(2)控制器隱藏式攻擊[11]??刂破鞯耐負浒l現機制會受到一種隱藏式DoS 攻擊影響??刂破髦芷谛缘叵蛩薪粨Q機下發封裝有LLDP(鏈路層發現協議)幀的Packet-Out 消息。攻擊者在探測LLDP 幀周期的基礎上,對交換機之間鏈路發起DoS 攻擊,造成LLDP幀連續丟失,使得控制器誤以為該鏈路斷開,無法準確獲取網絡拓撲信息。

2.2 對交換機的DoS 攻擊

(1)交換機洪范式攻擊[12]。OpenFlow 交換機流表的存儲能力通常有限,攻擊者針對交換機發起洪范式DoS 攻擊,短時間內產生大量的虛假流請求,出現大量的無用流表項,這些規則將填滿交換機流表,從而導致合法流量被丟棄。

(2)交換機隱藏式攻擊[13]。SDN 將數據層的控制能力完全抽離,數據層完全失去了主動監管網絡流量的可能性,因此,數據層隱藏式DoS 攻擊變得可行。數據層隱藏式DoS 攻擊通過在流表中產生長期存在的流表規則,從而達到占用流表的攻擊目的。

2.3 對網絡主機的DoS 攻擊

當攻擊者的目標是網絡主機時,會操縱僵尸網絡向目標主機發送大量并發攻擊流,從控制器和交換機的角度看,這些流量是正常流量,因為都是合法主機發送的合法數據流,但這些流量最終在目標主機處聚合,形成總量很大的異常流量[14],導致目標主機工作癱瘓。

2.4 無法判斷的攻擊

當網絡流量壓力比較大,而又無法確認當前流量是否為攻擊流時,可以采用通過流表項將大量的流量轉發到網絡中的監控設備(例如防火墻),以此轉移交換機的壓力,也可以設置IP 地址的黑白名單,實現對數據流的輔助處理(見表2)。

表2 SDN 環境下DoS 攻擊特點及應對方法

3 SDN 環境下DoS 攻防實驗

3.1 軟硬件環境

硬件環境:Intel(R) Core(TM) i5-8500U CPU @3.00 GHz 處理器,8 GB DDR4 內存,240 GB SSD 硬盤。

軟件環境:Ubuntu14.04 64 位操作系統,JDK1.7,Mininet 2.2.1,Open vSwith2.0.2,OpenFlow1.0 協議,Floodlight 0.9 版本控制器,sFlow-rt 2.0。

3.2 構建網絡拓撲

Mininet 是一套擴展性很強的網絡仿真實驗平臺,除了可以用于SDN 網絡實驗,還可以用于傳統網絡實驗。Mininet 能夠在一臺單獨的計算機上虛擬出網絡主機、網絡鏈路和交換設備等,組成一個完整的虛擬網絡。Floodlight 控制器是一個模塊化、高可用、支持OpenFlow 協議的控制器。sFlow 是一款實時監測網絡流量的監控軟件。sFlow 有Agent 和Collector 兩個模塊,Agent 內嵌于網絡轉發設備(如交換機、路由器),獲取設備接口的統計信息,將信息封裝成報文發送給Collector,Collector 對報文分析、匯總、生成流量報告。

(1)啟動Floodligh 控制器。

進入 floodlight 目錄,輸入命令 java -jar target/floodlight.jar

(2)創建網絡拓撲,連接控制器。

mn --controller=remote,ip=192.168.1.1,port=6633 --topo single,3 --switch ovsk,protocols=OpenFlow10

(3)瀏覽器訪問Floodlight。

打開Floodlight 控制器的管理地址:http://localhost:8080/ui/index.html。從圖形界面可看到,Mininet 成功連接到Floodlight,并可以看到Mininet 生成的網絡拓撲。

(4)配置sFlow Agent。

先要在虛擬交換機端口處配置 Agent,這樣Collector 才能對收集到的流量信息進行分析和呈現。切換到交換機s1 窗口,開啟OvS 的sFlow 功能,配置Agent 的命令如下:

ovs-vsctl -- --id=@sflow create sflow agent=eth0 target="192.168.1.1:6343" header=128 sampling=10 polling=1 -- set bridge s1 sflow=@sflow

參數說明:agent,監控 eth0 網卡產生的流量;target,sFlow-rt 的ip,默認端口6343;bridge,需要開啟sFlow 的網橋;sampling,采樣率,表示每隔多少個Packet 取樣一次;polling,輪詢時間,每隔多少秒輪詢一次。

(5)配置sFlow-rt Collector。

保持Mininet 運行的終端,再打開一個新的終端窗口,進入sFlow-rt 安裝目錄,輸入./start.sh 命令,啟動 sFlow-rt。sFlow Collector 的默認監聽端口為6343,通過瀏覽器輸入http://localhost:8008 打開監控頁面。Agent 配置成功后,可以通過對其WebUI 中的Agents選項卡中192.168.1.1條目的網絡流量進行查看。

最終本文實驗網絡拓撲如圖3 所示。網絡中一共有1 臺虛擬交換機s1,s1 上連接3 臺客戶機,分別為h1、h2、h3,為了方便測試網絡連通性,在Mininet平臺中對網絡執行指令pingall,可測試出主機間能夠相互通信。同時,s1 的其他端口分別連接Floodlight控制器和sFlow Collector 端。

圖3 SDN 環境下DoS 攻防實驗網絡拓撲圖

3.3 洪范式DoS 攻防實驗

(1)模擬發起洪范式DoS 攻擊。

在Mininet 終端中執行,h1 ping -f h2,-f 參數的意思是Ping Flood,模擬Flood Attack??梢钥吹?,監測流量迅速飆升,如圖4 中第1 階段所示。在系統終端執行top 命令,查看到CPU 占用率也會突然增高。

圖4 洪范式DoS 攻防實驗效果圖

(2)控制器向SDN 交換機增加流表規則。

通過Floodlight 控制器提供的RESTful 接口向交換機s1 下發流表,丟棄攻擊流量。在Floodlight 控制器中增加流表的命令如下:

curl -d "{"switch": "00:00:00:00:00:00:00:01","name":"flow-drop","cookie":"0","priority":"32768",in_port":"1","active":"true","eth_type":"0x0800","ip_proto":"0x01","idle_timeout":"0","actions":"output=no-forwar d"}" http://192.168.1.1:8080/wm/staticflowpusher/json

參數說明:name,給流表命名;cookie,流表規則標識;priority,優先級;in_port,入端口;active,是否激活;eth_type,以太網類型;ip_proto,協議類型;idle_timeout,存活時間;actions,動作。

上述流表下發到s1 以后,監測流量迅速下降,如圖4 中第2 階段所示。所有經過交換機1 號端口的ICMP 流量都不會被轉發出去,其他類型的流量(如HTTP)則可以正常轉發,即h1 向h2 發送的Flood Attack 數據包迅速地被完全Drop 掉了,成功實現了對洪范式DoS 攻擊的防御。

(3)刪除SDN 交換機中流表規則。

為證明確實是因為添加了"flow-drop"流表項,阻斷了Dos 攻擊流量,最后通過Floodlight 控制器提供的RESTful 接口向交換機s1 下發刪除流表命令:

curl -X DELETE -d "{"name":"flow-drop"}"http://192.168.1.1:8080/wm/staticflowpusher/json

上述流表下發到s1 以后,監測到流量又迅速飆升,如圖4 中第3 階段所示,從而可以證明SDN 交換機中的流表項擁有管控流量的能力。

3.4 隱藏式DoS 攻防實驗

默認的流表規則采用空閑超時機制,即在規定時間內,如果沒有數據包匹配,則該流表規則超時被刪除;如果有數據包匹配,則重新更新存活時間,該機制使得一種數據層隱藏式DoS 攻擊變得可行,從而達到長期占用流表的目的。

一條流表規則的基本字段主要有:cookie,流表規則標識;priority,優先級,范圍為0-65535,值越大,優先級越高;match,匹配規則;action,動作;packets,流表已匹配包數;bytes,流表已匹配字節數;age,流表已存在時間;timeout,存活時間,沒有數據包匹配,流表會在到達給定時間后被自動刪除。

(1)模擬隱藏式DoS 攻擊。

因timeout 時間默認設置為5 s,所以在Mininet終端中執行指令,h1 ping –i 4 h2,-i 參數模擬每隔4 s從h1 主機(1 號端口)向h2 主機(2 號端口)發送ping 指令數據包。

(2)周期性查詢流表規則。

周期性的通過Floodlight 控制器的UI 界面查詢交換機s1 中的流表規則如圖5 所示。從圖5 中可看出,在timeout 為5 s 的情況下,當一條流表規則age 時間很長,而且匹配的packets 相對不多的情況下,很有可能是針對SDN 交換機的隱藏式DoS 攻擊造成的。

圖5 OpenFlow1.0 交換機中端口和流表項

(3)刪除長期存在的流表規則。

對被懷疑為隱藏式DoS 攻擊的流表規則,通過Floodlight 控制器提供的RESTful 接口向交換機s1 下發刪除流表命令進行刪除:curl -X DELETE -d"{"cookie":"90071992524740992"}" http://192.168.1.1:8080/wm/staticflowpusher/json。

4 結語

SDN 可以對網絡流量進行實時監控、提取、分析,及時調整流量。本文采用網絡仿真平臺Mininet 搭建SDN 網絡,使學生在SDN 的學習中不受硬件條件的限制,降低了學習門檻,提高了學生實踐的靈活性。結合使用Floodlight 控制器軟件和sFlow 流量監控軟件,展示了拓撲創建、主機間聯通測試、流表下發、流量監測等過程,最后以SDN 環境下的洪范式和隱藏式DoS 攻防案例進行實驗教學,使學生能夠深入理解SDN 網絡的機理和內涵。

猜你喜歡
流表隱藏式交換機
基于匹配動作表模型的可編程數據平面流表歸并
隱藏式字幕助聽障觀眾輕松看電影
基于時序與集合的SDN流表更新策略
一種新型老年代步車的設計與研究
淺析鑲嵌式觸摸感應蒸汽淋浴房
更換匯聚交換機遇到的問題
轎車隱藏式車門把手試驗臺的設計與開發
基于地鐵交換機電源設計思考
軟件定義網絡中一種兩步式多級流表構建算法
一種高效的OpenFlow流表拆分壓縮算法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合