防DDOS攻擊

任務目的

1、理解sFlow-rt的基本配置與操作。
2、掌握硬件交換機中sFlow agent的配置過程。
3、掌握通過OpenDaylight進行DDoS防禦的原理。

任務環境

設備名稱 軟件環境(鏡像) 硬件環境
控制器 Ubuntu 14.04桌面版
OpenDaylight Lithium
CPU:2核 內存:4G 磁盤:40G
交換機 Ubuntu 14.04命令行版
Open vSwitch 2.3.1
CPU:1核 內存:2G 磁盤:20G
主機 Ubuntu 14.04桌面版 CPU:1核 內存:2G 磁盤:20G

注:系統默認的賬戶爲root/root@openlab,openlab/user@openlab。

任務內容

1、完成sFlow-RT安裝和OpenDaylight配置。
2、測試sFlow模擬DDOS防禦功能。

實驗原理

一、DDoS基礎
DDoS指藉助於客戶/服務器技術,將多個計算機聯合起來作爲攻擊平臺,對一個或多個目標發動攻擊,從而成倍地提高拒絕服務攻擊的威力。通常,攻擊者使用一個偷竊賬號將DDoS主控程序安裝在一個計算機上,在一個設定的時間,主控程序將與大量代理程序通信,代理程序已經被安裝在網絡上的許多計算機上。代理程序收到指令時就發動攻擊。DDoS攻擊將造成網絡資源浪費、鏈路帶寬堵塞、服務器資源耗盡而使業務中斷。
二、防DDoS攻擊
sFlow技術是一種以設備端口爲基本單元的數據流隨機採樣的流量監控技術,不僅可以提供完整的第2層到第4層甚至全網範圍內的實時流量信息,而且可以適應超大網絡流量(如大於10 Gbit/s)環境下的流量分析,讓用戶詳細、實時地分析網絡傳輸流的性能、趨勢和存在的問題。sFlow監控工具由sFlow Agent和sFlow Collector兩部分組成。Agent作爲客戶端,一般內嵌於網絡轉發設備(本實驗在OpenFlow交換機中部署Agent),通過獲取設備上的接口統計信息和數據信息,將信息封裝成sFlow報文,當sFlow報文緩衝區滿或在sFlow報文緩存時間超時後,sFlow Agent會將sFlow報文發送到指定的Collector。Collector作爲遠端服務器,本實驗部署在OpenDayLight中,負責對sFlow報文分析、彙總、生成流量報告。sFlow的基本工作原理如下圖所示。

本實驗採用的sFlow軟件爲sFlow-RT,sFlow-RT可統計到每個接口的流量信息,實驗通過sFlow-RT的REST API獲取JSON數據並對JSON數據進行解析,對解析到的數據進行分析判斷後即可實施策略。
通過對sFlow-RT進行配置,設定metric=ddos,並設定它的閾值,當監測到的流量超過這個閾值時即判斷爲DDoS。sFlow-RT調用預製的OpenDaylight腳本:odl.js來調用OpenDaylight RESTful API下發匹配DDoS攻擊包流表,並進行丟棄操作,完成模擬DDoS攻擊防禦。

實驗步驟

一、實驗環境檢查

步驟1 登錄OpenDaylight控制器,確保服務已經啓動成功,由於OpenDaylight組件過於龐大,所以啓動比較慢,需等待一段時間,使用命令netstat -an|grep 6633查看端口是否處於監聽狀態:

步驟2 在保證控制器6633端口處於監聽狀態後,使用root用戶登錄交換機,查看交換機與控制器連接情況。執行以下命令:

# ovs-vsctl show


如上圖所示,當出現交換機與控制器連接不成功時,執行# ovs-vsctl del-controller br-sw #ovs-vsctl set-controller br-sw tcp:30.0.1.3:6633手動重連,稍等一會後,重新查看連接狀態,如下圖所示controller下方顯示“is_connected:true”則表明連接成功。

步驟3 登錄控制器主機,查看控制器IP地址,如下圖所示。

步驟4 登錄交換機,執行ovs-vsctl set-manager tcp:30.0.1.3:6640命令連接控制器。

原本控制器與交換機之間的連接是通過OpenFlow協議的,在此基於OVSDB協議創建一個新的連接,其中30.0.1.3是控制器IP,6640是OVSDB協議對應的偵聽端口,如下圖所示。

二、安裝sFlow

步驟1 使用root用戶登錄控制器,查看鏡像中預置的sflow安裝包。

# cd /home
#ls

步驟2 執行解壓命令,命令如下。

# tar -xvzf sflow-rt.tar.gz

步驟3 執行如下命令拷貝腳本。

# cp /home/openlab/openlab/ddos/json2.js /home/sflow-rt/extras
# cp /home/openlab/openlab/ddos/odl.js /home/sflow-rt

步驟4 在控制器中打開瀏覽器,輸入URL:http://[controller_ip]:8181/index.html ,輸入有戶名:admin,密碼:admin,單擊登錄按鈕。單擊Nodes菜單,獲取交換機node id,如下圖所示。

步驟5 分別登錄主機,查看主機IP信息如下:

主機1:

主機2:

步驟6 進入控制器主機的sflow-rt目錄,編輯腳本odl.js:

用上述獲取的主機ip信息以及連接到OpenDaylight的node信息進行替換,如下:

步驟7 修改start.sh腳本,將

exec java ${JVM_OPTS} ${RT_OPTS} ${RTPROP} -jar ${JAR} 

替換成如下內容:

SCRIPTS="-Dscript.file=odl.js"
exec java ${JVM_OPTS} ${RT_OPTS} ${RTPROP} ${SCRIPTS} -jar ${JAR}

三、部署sflow-agent

步驟1 使用root用戶登錄交換機,執行以下命令,部署sflow agent。

# ovs-vsctl -- --id=@sflow create sflow agent=s1 target=\"30.0.1.3:6343\" header=128 sampling=10 polling=1 -- set bridge br-sw sflow=@sflow

步驟2 執行以下命令查看已經配置的sflow agent信息。

# ovs-vsctl list sflow

查看結果如下:

步驟3 登錄控制器,進入/home/sflow-rt,執行命令./start.sh啓動sflow。

四、驗證實驗

步驟1 登錄控制器,打開瀏覽器。

輸入http://127.0.0.1:8008/flow/html 查看flow信息如下:

輸入http://127.0.0.1:8008/threshold/html 查看閾值信息如下:

輸入http://127.0.0.1:8008/agents/html 查看部署的sflow agent,如下:

步驟2 單擊上圖中的30.0.1.9(該IP爲交換機的IP地址),進入該虛擬機所監控的端口列表頁面,結果如下:

步驟3 登錄主機1使用ping [ip] -f命令模擬DDOS攻擊主機2,如下:

步驟4 登錄控制器,打開瀏覽器,輸入http://127.0.0.1:8008/agents/html ,單擊30.0.1.9,進入該虛擬機所監控的端口列表頁面,搜索ddos,單擊進入流量視圖頁面,具體如下:


可以看出當開啓DDOS防禦時,泛洪包迅速被丟棄,當停止DDOS攻擊防禦時,流量迅速增大。查看交換機上的對DDOS處理的流表,如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章