賈坤鵬,王曉鋒,劉淵
(1.江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院,無錫214122;2.江南大學(xué)數(shù)字媒體學(xué)院,無錫214122)
近年來,隨著互聯(lián)網(wǎng)的蓬勃發(fā)展,“互聯(lián)網(wǎng)+”已經(jīng)延伸到生產(chǎn)生活的各個方面,但與此同時網(wǎng)絡(luò)與信息安全面臨嚴峻的挑戰(zhàn)[1]。網(wǎng)絡(luò)空間是一個多維、跨域、大尺度的空間,體系復(fù)雜多樣。為了應(yīng)對日益嚴苛的網(wǎng)絡(luò)安全挑戰(zhàn),有必要進行專業(yè)的網(wǎng)絡(luò)安全人才的培養(yǎng)。然而,由于在真實的網(wǎng)絡(luò)環(huán)境中進行網(wǎng)絡(luò)安全試驗成本高,且可能會造成嚴重的后果,甚至導(dǎo)致網(wǎng)絡(luò)癱瘓[1]。因此,網(wǎng)絡(luò)安全試驗大多在放在獨立的網(wǎng)絡(luò)環(huán)境中,進行攻防演練,新技術(shù)的驗證[2]。
由于OpenStack[3]平臺的開源性,大量的開發(fā)者涌入到社區(qū)開發(fā)中來,推動了OpenStack技術(shù)的發(fā)展。OpenStack采用模塊化設(shè)計,各模塊之間通過Rabbit-MQ消息隊列進行交互,降低了系統(tǒng)耦合性,提高了系統(tǒng)的響應(yīng)速度和穩(wěn)定性。OpenStack通過不同模塊間的協(xié)同合作,根據(jù)用戶需求實現(xiàn)對基礎(chǔ)設(shè)施資源即計算、存儲、網(wǎng)絡(luò)資源的彈性分配。OpenStack支持KVM、Docker、Xen、LXC 等多種虛擬化方式,被廣泛運用于云平臺的構(gòu)建[4,7,12]。
但是,由于試驗環(huán)境創(chuàng)建、配置的復(fù)雜性,試驗人員浪費了大量時間。試驗拓撲規(guī)模有限,試驗效果不是很直觀且不支持實時查看[4,7]。如何快速、有效、方便地進行網(wǎng)絡(luò)安全試驗成為當(dāng)前研究的熱點話題。我們基于OpenStack云平臺,調(diào)用jTopo開源網(wǎng)絡(luò)拓撲編輯器,通過圖元拖拽生成試驗場景。試驗人員可基于該場景進行快速部署,部署完成以后可在該場景中進行各類典型網(wǎng)絡(luò)安全試驗驗證,并通過Zabbix實現(xiàn)了虛擬機狀態(tài)的分布式監(jiān)控。重點研究了試驗場景可視化展示與操作、自動部署與釋放、分布式虛擬機狀態(tài)監(jiān)控等問題。
目前,基于云平臺的網(wǎng)絡(luò)安全試驗平臺引起了廣泛的關(guān)注,相關(guān)開發(fā)者給出了不同的解決方案。文獻[4]基于云平臺和虛擬化技術(shù),搭建了OpenStack平臺,并在平臺上基于Glance組件創(chuàng)建了多個攻防試驗主機模板,基于該模板實現(xiàn)了不同功能主機的快速創(chuàng)建。主機創(chuàng)建好以后,可進行DoS攻擊、端口掃描測試、遠程控制攻擊等常見網(wǎng)絡(luò)安全試驗。然而,試驗過程中虛擬機狀態(tài)無法進行實時監(jiān)控,試驗場景也過于單薄。
文獻[7]采用B/S架構(gòu),在平臺上集成了VMware虛擬機技術(shù),通過定制和分發(fā)試驗?zāi)0宓姆绞?,完成攻防試驗的自動配置和快速恢?fù)。實現(xiàn)了用戶的管理,不同角色用戶具有對應(yīng)的權(quán)限。教師可以對學(xué)生的試驗結(jié)果進行評分。但是,VMware對虛擬網(wǎng)絡(luò)的支持并不好,只支持VLAN方式組網(wǎng),拓撲規(guī)模受限,不能進行大規(guī)模的網(wǎng)絡(luò)仿真試驗,并不能達到理想效果。
文獻[8]基于OpenStack平臺,設(shè)計并實現(xiàn)了云平臺資源監(jiān)控系統(tǒng),并通過Libvirt中間層提供的API對平臺上虛擬機的關(guān)鍵資源數(shù)據(jù)進行采集存儲,并進行可視化展示。然而由于其可視化展示曲線不能實時查看,用戶無法實時關(guān)注當(dāng)前虛擬機的狀態(tài),且不支持分布式部署,不能自動發(fā)現(xiàn)服務(wù)器上的虛擬機。
文獻[12]收集了目前主流脆弱操作系統(tǒng),建立了兩種鏡像庫,設(shè)計了符合真實場景的網(wǎng)絡(luò)架構(gòu),進行網(wǎng)絡(luò)攻防。并基于OpenStack的Dashboard實現(xiàn)鏡像的管理,虛擬機的創(chuàng)建等功能。利用經(jīng)典的LAMP架構(gòu),提供相關(guān)信息滲透工具的下載。并且建立了知識體系庫,方便用戶對相關(guān)知識進行了解。然而,繁雜的試驗場景,復(fù)雜的操作步驟,可能讓用戶也無從下手,無法獨立進行試驗從而進行網(wǎng)絡(luò)安全知識的學(xué)習(xí)。
針對上述問題,本文基于OpenStack云平臺,采用前后端分離的設(shè)計方法,前端融合jTopo、Bootstrap-table、jQquery等框架,實現(xiàn)了拓撲的生成與管理功能。后端接口采用RESTFUL風(fēng)格的API,分別實現(xiàn)了場景部署、釋放、刪除等功能。并基于Zabbix實現(xiàn)了分布式虛擬機狀態(tài)監(jiān)控,有效解決了試驗場景創(chuàng)建以及虛擬機狀態(tài)實時監(jiān)控等問題。
如圖1所示,基于云平臺的網(wǎng)絡(luò)安全試驗管理系統(tǒng),搭建了一臺控制節(jié)點、一臺網(wǎng)絡(luò)節(jié)點以及三臺計算節(jié)點的Mitaka版本的OpenStack云平臺,每臺節(jié)點均安裝了NTP服務(wù)進行時鐘同步。實現(xiàn)了試驗場景可視化展示與操作,試驗場景自動部署與釋放以及分布式虛擬機狀態(tài)監(jiān)控等關(guān)鍵技術(shù)。
圖1 系統(tǒng)體系架構(gòu)
其中,控制節(jié)點的jTopo組件負責(zé)試驗場景的拖拽生成,Bootstrap-table表格組件用于試驗場景的渲染以及管理,Zabbix-server組件用來收集網(wǎng)絡(luò)節(jié)點中的Zabbix-proxy發(fā)來的各計算節(jié)點中Zabbix-agent監(jiān)控的虛擬機的狀態(tài)信息。各計算節(jié)點中的Zabbix-agent通過調(diào)用KVM提供的Libvirt虛擬機管理工具,獲取虛擬機的CPU、內(nèi)存、網(wǎng)卡信息,并調(diào)用Zabbix-web組件進行前端展示。
用戶可通過拖拽生成場景文件或自行上傳場景文件,可在前端選擇所需場景文件進行試驗環(huán)境的自動部署與釋放。本文通過在KVM虛擬機中搭載Quagga路由軟件,實現(xiàn)了動態(tài)路由的配置[14],依托內(nèi)核命令實現(xiàn)了鏈路帶寬、時延的設(shè)置[15],從而提高了試驗場景的逼真性。此外,通過修改內(nèi)核參數(shù),提高了虛擬機創(chuàng)建速度,縮短了試驗場景的創(chuàng)建時間。試驗場景部署好以后,用戶可進行各類網(wǎng)絡(luò)安全試驗,試驗過程中各虛擬機的狀態(tài)信息可實時監(jiān)控,并支持虛擬機的自動發(fā)現(xiàn)功能。
2.2.1 試驗場景可視化展示與操作
本文通過jTopo開源網(wǎng)絡(luò)拓撲編輯器融合jQuery前端框架,實現(xiàn)了試驗拓撲可視化生成。通過Boot-strap-table表格插件異步調(diào)用存儲在MySQL數(shù)據(jù)庫中的試驗場景信息,并對其中的關(guān)鍵信息進行可視化展示。采用前后端分離的設(shè)計模式,用戶在前臺的各種操作通過AJAX調(diào)用后端的REST API接口,進行數(shù)據(jù)交互。下對其做簡要描述。
(1)試驗拓撲可視化生成:jTopo網(wǎng)絡(luò)拓撲編輯器基于 HTML5,提供了 Stage、Scene、Node、Container,相對于當(dāng)下其他圖形開發(fā)軟件具備兼容性高、接口設(shè)計簡單、傳輸效率高等特點[5]。然而其Node屬性只有text、visible、dragable 等信息,并沒有 image、flavor、port等網(wǎng)絡(luò)信息,需要對其默認屬性進行添加。jQuery是一款優(yōu)秀的JavaScript框架,操作輕巧便捷,功能強大。
本文使用jQuery調(diào)用HTML5原生的drag、drop方法實現(xiàn)圖元的拖動。通過jTopo Stage的frames屬性,定義了畫布的重畫頻率為1000/frams,所以我們拖動圖元到畫布以后會通過ondragstart()方法傳遞底圖以及必要參數(shù)到Canvas并刷新界面,更新圖元信息從而實現(xiàn)拖拽效果。
圖2 試驗拓撲可視化
如圖2所示,jQuery通過監(jiān)聽鼠標(biāo)移動事件,將節(jié)點拖拽到Canvas畫布,Canvas獲取節(jié)點信息,調(diào)用JTopo.Node()方法初始化節(jié)點,并通過serializedProperties()方法設(shè)置自定義屬性。節(jié)點之間通過連線表示連接關(guān)系,鼠標(biāo)單擊節(jié)點設(shè)置節(jié)點信息,即部署該節(jié)點使用鏡像的image值、節(jié)點規(guī)格大小flavor值、該節(jié)點的網(wǎng)卡信息等。用戶可基于拖拽生成的場景進行導(dǎo)出,導(dǎo)出文件包含上述關(guān)鍵信息,可基于該文件進行部署。
(2)試驗場景可視化管理:Bootstrap-table是一款基于Bootstrap的jQuery插件,具備扁平化、輕量級的特點,因其與Bootstrap其它標(biāo)簽無縫結(jié)合,被專門用來顯示數(shù)據(jù)表格。使用該插件應(yīng)首先在網(wǎng)頁中需引入JavaScript腳本以及CSS樣式文件,然后在HTML中聲明表格對象,最終通過JavaScript腳本完成表格數(shù)據(jù)初始化,用戶也可根據(jù)個人需求通過bootstrapTable方法實現(xiàn)分頁、排序、導(dǎo)出、查找等功能。
然而由于靜態(tài)腳本的局限性,用戶對表格數(shù)據(jù)的修改無法及時反饋到數(shù)據(jù)庫中,這就嚴重影響了時效性與直觀性。
圖3 Bootstrap-table數(shù)據(jù)交互
如圖3所示,本系統(tǒng)通過PHP腳本實時查詢數(shù)據(jù)庫中的試驗信息表中的關(guān)鍵信息,并封裝成JSON格式反饋到Bootstrap-table框架,最終渲染前端用戶界面,實現(xiàn)表格的異步更新。
表1為試驗信息表,用戶testuser需設(shè)置試驗編號id、試驗名稱testname信息,并通過testinfo字段描述試驗,可添加試驗的注意事項、操作方法、預(yù)期結(jié)果等信息。testfile字段存儲試驗場景文件名,真實文件存儲在topology目錄下。
用戶基于試驗場景的各種操作需要傳遞場景文件名稱到后臺程序,本文通過對表格deploy、edit列設(shè)置了 formatter屬性,調(diào)用 function(value,row,index)方法,獲取當(dāng)前列的row.testname值,并通過AJAX傳遞給后端RESTFUL API接口,實現(xiàn)了前后端的分離,大大降低了系統(tǒng)的耦合性。
表1 試驗信息表
2.2.2 試驗場景自動部署與釋放
用戶在前端界面發(fā)起試驗部署或釋放請求后,通過AJAX傳遞場景文件名到控制節(jié)點,根據(jù)參數(shù)的不同分別執(zhí)行deploy()、delete()方法,最終完成試驗環(huán)境的構(gòu)建與釋放。
針對OpenStack部署生成的虛擬機無法支持動態(tài)路由,無法設(shè)置鏈路參數(shù)[3]問題進行了優(yōu)化。并根據(jù)Nova體系架構(gòu)進行了分析,對創(chuàng)建虛擬機過程中涉及到的組件,及其消息傳遞經(jīng)過的RabbitMQ消息隊列中關(guān)鍵參數(shù),進行了調(diào)優(yōu),從而提高了虛擬機創(chuàng)建、刪除速度,實現(xiàn)了試驗環(huán)境的快速復(fù)現(xiàn)。
(1)試驗場景自動部署:如圖4所示,前端界面在收到用戶對某個場景文件的創(chuàng)建請求后,發(fā)送異步消息到控制節(jié)點服務(wù)器,控制節(jié)點首先解析XML配置文件,并下發(fā)虛擬機鏡像到對應(yīng)計算節(jié)點。
圖4 試驗場景自動部署
本文采用層次結(jié)構(gòu)分明且語法靈活簡單的XML標(biāo)簽來存儲網(wǎng)絡(luò)、主機節(jié)點、路由器節(jié)點的配置信息,并劃分為多層。第1層為根元素,表明該文檔作用。第2層分別定義了NetworkInfo、InstanceInfo、RouterInfo、用來存儲網(wǎng)絡(luò)、路由器、主機信息。如表2所示NetworkInfo的第3層定義了name、IP信息。
表2 NeworkInfo標(biāo)簽子元素定義
InstanceInfo 第 3 層定義了 name、image、flavor、networkname、delay、bandwith、az等信息,如表 3 所示。
RouterInfo相對于InstanceInfo增加了BGP配置信息,如表4所示。
表3 InstanceInfo標(biāo)簽子元素定義
表4 NeworkInfo標(biāo)簽子元素定義
配置解析后,Neutron組件根據(jù)NetworkInfo值調(diào)用neutron.create_network()方法創(chuàng)建虛擬網(wǎng)絡(luò),Nova組件調(diào)用nova.servers.create()方法創(chuàng)建虛擬機。
然而,由于Neutron組件提供的qrouter軟件不支持動態(tài)路由,且無法轉(zhuǎn)發(fā)非直連網(wǎng)絡(luò)的流量[3],這嚴重制約了試驗場景的規(guī)模。本文通過在虛擬機中搭載Quagga路由軟件,設(shè)置系統(tǒng)ip_forward值為1開啟路由轉(zhuǎn)發(fā),啟動zebra服務(wù),進入路由器配置模式后,便可像配置實體路由器一樣進行RIP、OSPF、BGP協(xié)議配置[14]。
而為了實現(xiàn)路由協(xié)議的自動化部署,只需將zebra服務(wù)設(shè)置為開機自啟動,并將網(wǎng)絡(luò)配置信息寫入配置文件,采用sshpass方式由控制節(jié)點注入計算節(jié)點中的虛擬機即可。
此外,由于OpenStack平臺不支持鏈路性能參數(shù)的仿真[3],所以本文采用文獻[15]提出的方法,在接收到鏈路參數(shù)時進行帶寬、時延的仿真。
在進行大規(guī)模場景創(chuàng)建時,如何提高創(chuàng)建虛擬機速度成為當(dāng)前研究的熱點話題。如圖5所示,Nova各組件都與RabbitMQ消息隊列有交互,其中nova-conductor組件和MySQL直接交互。因此,RabbitMQ消息隊列以及nova-conductor組件的性能成為制約創(chuàng)建速度的瓶頸。
本文首先修改系統(tǒng)文件描述符的最大值,然后通過改rabbitmq-server文件中LimitNOFILE值,來提高RabbitMQ最大連接數(shù)。并修改nova.conf文件中conductor字段中的worker值用來提升nova-conductor對應(yīng)的worker數(shù)目。這樣,在創(chuàng)建大規(guī)模場景時,消息隊列的壓力得以緩解,虛擬機創(chuàng)建速度顯著提高。
(2)試驗場景自動釋放:如圖7所示,系統(tǒng)收到釋放請求后,首先刪除網(wǎng)絡(luò)信息,接著刪除主機信息,最終完成整個試驗場景的刪除。
圖5 Nova架構(gòu)
圖6 試驗場景自動釋放
2.2.3 分布式虛擬機狀態(tài)監(jiān)控
為加強對試驗效果的分析,需要對試驗過程中各虛擬機的關(guān)鍵資源信息進行監(jiān)控。由于OpenStack自帶的監(jiān)控組件Ceilometer功能還不夠完善,只關(guān)注采集未進行存儲,當(dāng)數(shù)據(jù)量增大時,Ceilometer性能會大幅下降甚至?xí)?dǎo)致服務(wù)崩潰[7]。Zabbix網(wǎng)絡(luò)監(jiān)控系統(tǒng)采用分布式部署,并將所有歷史數(shù)據(jù)、趨勢和配置信息存儲導(dǎo)數(shù)據(jù)庫中,所有邏輯運算都在服務(wù)端執(zhí)行,對被監(jiān)控對象性能影響很小[10]。本文通過Libvirt虛擬機管理軟件獲取計算節(jié)點中虛擬機的關(guān)鍵信息[8],然后傳輸?shù)絑abbix中,Zabbix添加自定義參數(shù)后并通過Zabbixweb進行可視化展示。當(dāng)虛擬機數(shù)目增多時,通過Zabbix的自動發(fā)現(xiàn)功能[11],自動發(fā)現(xiàn)被監(jiān)控計算節(jié)點中新加入的虛擬機。
如圖7所示,zabbix符合C/S架構(gòu),包含服務(wù)端zabbix server,客戶端 zabbix agent,以及代理端 zabbix proxy三部分組成[11]。本文控制節(jié)點中的zabbix server負責(zé)與三臺計算節(jié)中的zabbix agent進行交互、觸發(fā)器計算、發(fā)送告警通知,并進行數(shù)據(jù)存儲。webserver負責(zé)圖形化展示,并直接與用戶進行交互;網(wǎng)絡(luò)節(jié)點的zabbix proxy用于分擔(dān)計算節(jié)點的負載,定時向控制節(jié)點提交數(shù)據(jù)。
圖7 zabbix架構(gòu)
然而,zabbix監(jiān)控項中僅有被監(jiān)控的計算節(jié)點宿主機信息,不含計算節(jié)點機中創(chuàng)建的虛擬機的信息。需添加自定義監(jiān)控項[11],對虛擬機中的CPU、磁盤、網(wǎng)絡(luò)等信息進行監(jiān)控。雖然OpenStack的Hypervisor支持多種虛擬化方式[3],但由于OpenStack是基于KVM開發(fā)的,對KVM親和性比較好。所以,我們可通過KVM提供的Libvirt工具對虛擬機的數(shù)據(jù)進行采集。
如圖8所示,Libvirt通過虛擬機管理器,對虛擬機進行管理,支持對各種虛擬機監(jiān)控程序,提供了一個應(yīng)用編程接口(API)庫,并集成了對多種編程語言的綁定[12]。我們首先通過命令“l(fā)ibvirt.open("qemu:///system")”建立連接,然后通過虛擬機UUID獲取到相關(guān)信息并通過zabbix_send發(fā)送給zabbix-server。
圖8 Libvirt架構(gòu)
(1)CPU使用率:Libvirt無法直接獲得CPU利用率,但可以通過 domain.info()[4]獲得當(dāng)前時刻 cputime_start,以及數(shù)秒后的cputime_end,然后通過domain.info()[3]獲得 CPU 核數(shù),cputime_diff= 監(jiān)控結(jié)束時間-監(jiān)控開始時間,最終通過如公式1計算:
(2)內(nèi)存使用率:調(diào)用memoryStats()函數(shù)獲取內(nèi)存用量和未用量,通過公式2計算:
(3)網(wǎng)卡流量:通過調(diào)用interfaceStats()函數(shù)獲取該網(wǎng)卡的rx_bytes(接收字節(jié)數(shù))、以及tx_bytes(發(fā)送字節(jié)數(shù))參數(shù)。
(4)磁盤 I/O:通過調(diào)用 blockStatsFlags()函數(shù)獲取磁盤的rd_bytes(讀取字節(jié)數(shù))、以及wr_bytes(寫入字節(jié)數(shù))。
在獲取到這些參數(shù)后,我們首先需要對Zabbix服務(wù)端配置文件進行修改,設(shè)置UnsafeUserParameters=1表示允許用戶自定義參數(shù)。其中自定義參數(shù)格式如下 :UserParameter=kvm.domain.cpu_util[*],/etc/zabbix/zabbix-kvm.py--item cpu--uuid$1,并添加自動發(fā)現(xiàn)規(guī)則kvm.domain.discover,自動發(fā)現(xiàn)計算節(jié)點中新增的虛擬機。
搭建OpenStack集群,由一臺控制節(jié)點、一臺網(wǎng)絡(luò)節(jié)點、三臺計算節(jié)點組成??刂乒?jié)點處理器為Intel Xeon E5-2620 v2*4、內(nèi)存64GB、硬盤1TB;網(wǎng)絡(luò)節(jié)點處理器為 Intel Xeon E5-2609 v2*4、內(nèi)存32GB、硬盤1TB;計算節(jié)點1:處理器為Intel Xeon E5-2620 v3*2、內(nèi)存64GB、硬盤 512MB;計算節(jié)點2:處理器為Intel Xeon E5-2620 v3*2、內(nèi)存 32GB、硬盤 512MB;計算節(jié)點 3:處理器為Intel Xeon E5-2620 v2*4、內(nèi)存128GB、硬盤1TB;服務(wù)器均為DELL R760服務(wù)器,操作系統(tǒng)為CentOS 7.5版本,OpenStack為Mitaka版本。
3.2.1 典型網(wǎng)絡(luò)安全試驗
用戶可選擇拖拽生成場景文件,或者自行上傳場景文件到場景管理界面進行網(wǎng)絡(luò)安全試驗。以NMAP端口掃描、DoS攻擊等典型網(wǎng)絡(luò)安全試驗為例,進行試驗平臺的驗證。如圖9所示,用戶首先選中左側(cè)菜單相應(yīng)圖標(biāo),拖放到右側(cè)畫布中,Canvas畫布根據(jù)圖元信息進行Node初始化。然后,選中Node節(jié)點,在右側(cè)信息欄設(shè)置Node信息并更新。最后,導(dǎo)出場景文件到topology目錄。
圖9 拓撲編輯
表5 場景信息
如圖9所示,拖拽兩臺主機節(jié)點到畫布,并采用封裝了 Nmap、Hping3、tcpdump等軟件的 CentOS鏡像,場景信息如表5所示。導(dǎo)出場景文件并上傳到場景管理界面。
本文設(shè)置Bootstrap-table的striped屬性進行隔行變色展示,設(shè)置sortable屬性允許排序,設(shè)置search屬性進行搜索,設(shè)置pagination屬性進行分頁展示,并設(shè)置url=load_data.php,從數(shù)據(jù)庫實時加載數(shù)據(jù)。
圖10 場景管理
load_data.php通過mysqli_connect()方法連接數(shù)據(jù)庫,通過mysqli_fetch_assoc()查詢 task表,并拼接成JSON格式傳送到Bootstrap-table進行渲染。
如圖10所示,用戶可選擇對應(yīng)場景文件進行部署、查看、編輯、刪除等操作。接下來對NMAP端口掃描試驗進行自動部署。控制節(jié)點收到部署請求后,下發(fā)鏡像到計算節(jié)點,計算節(jié)點調(diào)用Nova相關(guān)方法完成網(wǎng)絡(luò)network10的創(chuàng)建,兩個host節(jié)點的部署。部署完成以后,我們可通過ping命令進行驗證。在完成驗證以后,我們可在該場景中進行Nmap試驗以及DoS攻擊等典型網(wǎng)絡(luò)安全試驗。
host1通過Nmap命令,對host2上敏感端口進行掃描,結(jié)果如圖11所示,可發(fā)現(xiàn)host2上開設(shè)了多個敏感端口。
圖11 NMAP結(jié)果
虛擬機創(chuàng)建完成以后,zabbix會自動檢測,并添加cpu%、memory%、磁盤讀寫、網(wǎng)卡流量等監(jiān)控項??稍趜abbix監(jiān)控頁面依次點擊監(jiān)測中->最新數(shù)據(jù)->kvm監(jiān)控項查看對應(yīng)數(shù)據(jù),并查看數(shù)據(jù)動態(tài)曲線。
本文在host2上使用命令對CPU進行加壓,如圖12所示,發(fā)現(xiàn)短時間內(nèi)CPU使用率飆升至接近100%,這表明我們的狀態(tài)監(jiān)控數(shù)據(jù)真實有效。
為進一步對Zabbix監(jiān)控的其他指標(biāo)進行測試,通過hping3工具在host上對host2進行DoS攻擊。首先,通過Netperf測量host2的帶寬,共測試5組數(shù)據(jù)取平均值可得其帶寬接近800MB。
然后,在host1上執(zhí)行hping3-c 5000-d 60000-S-w 64-p 80--flood host2命令,對host2進行DoS攻擊。如圖13所示,在1分鐘左右的上升以后,host2網(wǎng)卡流量最終接近800MB,帶寬幾乎被占滿。
圖12 CPU壓力測試
圖13 host2網(wǎng)卡流量
3.2.2 LDDoS試驗
LDDoS攻擊通過簡單、粗暴的網(wǎng)絡(luò)攻擊,占用系統(tǒng)過多的服務(wù)資源,對線上環(huán)境造成了嚴重影響。文獻[18]重點研究了LDDoS場景的攻擊場景配置以及采集與分析,并進行了多組試驗進行驗證。
用戶可通過拖拽生成如圖14所示的場景,包括3臺路由器以及6臺主機。導(dǎo)出場景文件后,然后上傳到場景管理界面進行部署。
圖14 場景拓撲
自動部署程序會依次進行網(wǎng)絡(luò)、主機的創(chuàng)建。然后,進行路由協(xié)議、鏈路特性的設(shè)置。選擇net_1網(wǎng)絡(luò)中3臺主機為攻擊主機、net_3網(wǎng)絡(luò)中3臺主機為目標(biāo)主機,并根據(jù)文獻[18]設(shè)計的策略,進行LDDoS攻擊。文獻[18]采用手動統(tǒng)計R1與R3產(chǎn)生的Update報文的形式來對試驗效果進行評估,本文可直接對虛擬機中的關(guān)鍵數(shù)據(jù)進行監(jiān)控,實時觀測虛擬機狀態(tài)。文獻[18]設(shè)計的基于CAIDA AS Rank拓撲以及大規(guī)模網(wǎng)絡(luò)拓撲均可上傳到場景管理界面進行場景部署,
本文基于OpenStack云平臺,融合了jTopo網(wǎng)絡(luò)拓撲編輯器以及BooStrap-table表格框架進行前端展示,采用前后端分離的設(shè)計模式,實現(xiàn)了試驗場景的一鍵部署與釋放。并通過Zabbix實現(xiàn)了對虛擬機的自動發(fā)現(xiàn)以及關(guān)鍵狀態(tài)信息的分布式監(jiān)控。用戶可通過本平臺,快速進行各類網(wǎng)絡(luò)安全試驗,試驗過程中可對指定虛擬機狀態(tài)進行實時監(jiān)控。大大提升了試驗人員的工作效率,完美解決了傳統(tǒng)網(wǎng)絡(luò)安全試驗平臺的可用性、時效性差等問題,值得加以推廣。