摘 ?要:本文分析了信息安全人才培養(yǎng)及院校的技能實訓環(huán)境現(xiàn)狀,通過對KVM虛擬化和SDN虛擬網(wǎng)絡(luò)運行原理及功能特性的剖析,將信息安全實訓演練與虛擬化技術(shù)結(jié)合,為院校提供高度仿真的攻防環(huán)境;在虛擬化調(diào)度與運行方面做出優(yōu)化,使院校計算資源能夠充分利用;最后采用高負載壓力測試驗證相關(guān)優(yōu)化技術(shù)的實際效果。
關(guān)鍵詞:KVM;SDN;信息安全;攻防實訓
中圖分類號:TP311.1 ? ? 文獻標識碼:A
1 ? 引言(Introduction)
2016年,賽迪智庫發(fā)布《信息安全產(chǎn)業(yè)發(fā)展白皮書(2015 版)》中指出:“信息安全技術(shù)本身具有專業(yè)性強、技術(shù)更新速度快等特點,現(xiàn)有的信息安全人才培育和引進機制尚不能滿足產(chǎn)業(yè)和企業(yè)發(fā)展的需求。”
隨著我國信息服務(wù)業(yè)逐漸興盛,信息安全保障壓力必將更加巨大,對信息安全相關(guān)人才需求也將更加迫切,其中懂技術(shù)、懂管理和懂業(yè)務(wù)的綜合型人才更是稀缺人才。信息安全人才培養(yǎng)需要系統(tǒng)化和專業(yè)化,需要從當前產(chǎn)業(yè)和企業(yè)用人現(xiàn)狀出發(fā),優(yōu)先進行安全技能型人才的著重培養(yǎng),以滿足對實戰(zhàn)型安全人才的需求。
本文通過虛擬化的方式開發(fā)信息安全攻防實訓系統(tǒng),旨在普及信息安全技能,通過實訓演練的方式提升相關(guān)專業(yè)學生或從業(yè)人員的信息安全動手能力。
2 ? 目標(Objective)
采用KVM虛擬化技術(shù)作為底層支撐,通過PHP及Python等動態(tài)語言調(diào)用虛擬化,為每位學生提供獨立的虛擬化實訓環(huán)境,并提供復雜網(wǎng)絡(luò)拓撲模擬功能,能實現(xiàn)多級應(yīng)用場景下的安全攻防實訓。
(1)在實際攻防環(huán)境中通常存在多級網(wǎng)絡(luò)場景,但尚未應(yīng)用于虛擬化實訓教學中。通過對SDN技術(shù)的研究,實現(xiàn)入侵路徑攻擊鏈的場景復原,并批量分配給客戶端。
(2)通過對學生實訓過程的輸入捕獲,實現(xiàn)實訓結(jié)果自動化評估,并能追蹤學生在攻防實訓環(huán)境中的關(guān)鍵操作。
(3)實訓環(huán)境隨用隨開,完成立即銷毀,減輕對系統(tǒng)的性能壓力。如遇到高并發(fā),啟動環(huán)境可提前生成,學生登錄系統(tǒng)后,系統(tǒng)自動推送給各學生端。
3 ? 關(guān)鍵技術(shù)(Key technologies)
3.1 ? KVM 虛擬化技術(shù)
KVM[1]是基于虛擬化擴展X86硬件的開源Linux原生全虛擬化解決方案。在KVM中的虛擬機被實現(xiàn)為常規(guī)的Linux進程,由標準Linux調(diào)度程序進行調(diào)度;虛擬機的每個虛擬CPU被實現(xiàn)為一個常規(guī)的Linux進程。這使得KMV能夠使用Linux內(nèi)核的已有功能。KVM本身不執(zhí)行任何硬件模擬,需要客戶空間程序通過/dev/kvm接口設(shè)置一個客戶機虛擬服務(wù)器的地址空間,向它提供模擬的I/O,并將它的視頻顯示映射回宿主的顯示屏。KVM的邏輯架構(gòu)如圖1所示,目前主流的應(yīng)用程序是QEMU。
(1)虛擬化調(diào)度接口
在KVM虛擬化管理中,最常使用的遠程管理接口為Libvirt,該組件提供了對虛擬化及虛擬機的管理功能,例如存儲和網(wǎng)絡(luò)等。Libvirt相關(guān)軟件包括穩(wěn)定的C語言底層API及表層二次接口、守護進程libvirtd,以及命令行工具virsh。Libvirt的主要目標是提供能夠獨立管理多種不同的虛擬化技術(shù)及相關(guān)虛擬機,包括KVM/QEMU、Xen、LXC、OpenVZ或VirtualBox。
在Python中,對Libvirt進行相應(yīng)的接口調(diào)用的依賴組件為libvirt-python,該軟件包提供基于python2的API,安裝完成后可在/usr/lib/python2.7/site-packages/libvirt.py中調(diào)用。
(2)后端鏡像
KVM提供后端鏡像backing_file技術(shù)支持,在KVM中后端鏡像技術(shù)則更為方便,用戶可隨時對后端鏡像進行維護,并可快速創(chuàng)建派生鏡像,派生鏡像初始文件大小為192kB,僅記錄基本信息,隨著派生鏡像的啟動運行,鏡像文件隨之增長,但僅記錄與后端鏡像產(chǎn)生差異的部分,并且后端鏡像文件不會被修改,除非在QEMU monitor中使用commit命令或者使用qemu-img commit命令去手動提交這些改動。在KVM及QEMU后端鏡像中較其他虛擬化技術(shù)更有優(yōu)勢的是Python API接口生態(tài)較為完整。
3.2 ? 瀏覽器遠程控制技術(shù)
Guacamole是一種基于瀏覽器的遠程管理控制軟件,用戶通過瀏覽器訪問其控制臺生成一條鏈路,通過調(diào)用后端的GUACD數(shù)據(jù)中轉(zhuǎn)組件,瀏覽器無須配置任何接入組件即可通過GUACD連接目標虛擬機中的VNC、RDP、SSH等遠程管理方式。同時考慮到性能因素,該軟件支持分布式與集群部署,并能通過其他第三方軟件如Nginx或Keepalive實現(xiàn)高可用。
(1)Guacamole技術(shù)架構(gòu)
Guacamole遠程控制軟件的Web應(yīng)用本身不支持任何遠程管理協(xié)議,也不支持直接的TCP數(shù)據(jù)傳輸,其僅對內(nèi)部前后端數(shù)據(jù)通信的Guacamole傳輸協(xié)議提供完整的兼容和調(diào)用。
完整的數(shù)據(jù)流轉(zhuǎn)鏈路為:學生通過瀏覽器訪問Guacamole前端展示,并通過JavaScript腳本向Server端發(fā)送需要訪問的服務(wù)器標識數(shù)據(jù),Server端接收數(shù)據(jù)并處理為Guacd可處理的格式,而后由Guacd向最終目標服務(wù)器發(fā)起RDP/SSH/VNC等協(xié)議的遠程訪問,并將畫面及控制數(shù)據(jù)層返回至用戶瀏覽器前端,由JavaScript進行渲染。
(2)鑒權(quán)與身份認證
Guacamole支持多種身份認證模式,包括默認的XML文本身份認證、數(shù)據(jù)庫認證、LDAP統(tǒng)一身份認證、HTTP頭認證、CAS統(tǒng)一身份認證、OpenID統(tǒng)一身份認證、Radius身份認證等。
3.3 ? SDN虛擬網(wǎng)絡(luò)
信息安全的攻防不是單一網(wǎng)絡(luò)場景,而是由辦公網(wǎng)絡(luò)、DMZ、IDC等多種交換路由網(wǎng)絡(luò)組成,完整的模擬一條攻擊鏈路需要將各個網(wǎng)絡(luò)、主機、服務(wù)、應(yīng)用全面結(jié)合,而這種融合的基礎(chǔ)則是網(wǎng)絡(luò)層面的全面仿真。采用SDN[2]軟件定義網(wǎng)絡(luò)的方式來實現(xiàn)多層級拓撲結(jié)構(gòu),包含多層級路由結(jié)構(gòu)與多個VXLAN結(jié)合,動態(tài)的按需創(chuàng)建內(nèi)部虛擬化網(wǎng)絡(luò),并將實驗環(huán)境的每一個虛擬機配置于合理的網(wǎng)絡(luò)結(jié)構(gòu)中,實現(xiàn)一套拓撲多個主機多層網(wǎng)絡(luò)多套網(wǎng)絡(luò)設(shè)備與接口,而不同的實訓學生則可生成互不影響的多套拓撲結(jié)構(gòu),解除了網(wǎng)絡(luò)設(shè)備對實訓環(huán)境搭建的限制。
(1)基礎(chǔ)二層網(wǎng)絡(luò)
默認配置的KVM虛擬化及Libvirt管理工具提供了初始化的二層網(wǎng)絡(luò),由基礎(chǔ)的靜態(tài)路由和簡單虛擬網(wǎng)絡(luò)、DHCP等一系列基礎(chǔ)服務(wù)組成。默認的二層網(wǎng)絡(luò)基于Libvirt的XML網(wǎng)絡(luò)配置文件創(chuàng)建,編輯維護管理均存在一定不便,需要配置網(wǎng)絡(luò)變更時按順序執(zhí)行注銷網(wǎng)絡(luò)、修改配置、生成網(wǎng)絡(luò)、調(diào)用網(wǎng)絡(luò)等多個步驟。例如下面的代碼為最小化配置的NAT二層網(wǎng)絡(luò),如需修改子網(wǎng)、網(wǎng)關(guān)等配置信息均需要對實體文件進行修改,并完成上述步驟。
(2)多級三層網(wǎng)絡(luò)
在業(yè)務(wù)系統(tǒng)部署場景中常見多級網(wǎng)絡(luò)與多個拓撲共同構(gòu)成一套業(yè)務(wù)系統(tǒng)的情況,同時網(wǎng)絡(luò)設(shè)備與安全設(shè)備的接入鏈路對虛擬化實訓的場景復原能力提出了巨大的挑戰(zhàn),網(wǎng)絡(luò)旁路、流量鏡像、單臂路由、多級三層路由、NAT轉(zhuǎn)換、ARP代理、DHCP服務(wù)等在虛擬網(wǎng)絡(luò)中的實現(xiàn)也需要一套能夠管理三層網(wǎng)絡(luò)的虛擬網(wǎng)絡(luò)軟件。Neutron為整個SDN環(huán)境提供網(wǎng)絡(luò)支持,包括使用虛擬路由實現(xiàn)租戶網(wǎng)絡(luò)的互通和隔離、二層交換、三層路由、負載均衡、防火墻等。最常見的多級網(wǎng)絡(luò)部署模式為虛擬專用網(wǎng)絡(luò)VPC,這種拓撲結(jié)構(gòu)中每個用戶都可以有多個子網(wǎng),Neutron負責提供路由服務(wù)協(xié)調(diào)所有子網(wǎng),用戶間可以通過配置路由器的路由表來控制子網(wǎng)間的連通。如圖3所示。
4 ? 設(shè)計與實現(xiàn)(Design and implementation)
4.1 ? 總體架構(gòu)設(shè)計
本系統(tǒng)由基礎(chǔ)虛擬化環(huán)境、攻防實訓演練子系統(tǒng)(學生)、實訓及教學管理子系統(tǒng)(教師)三部分共同組成[3]。
基礎(chǔ)虛擬化環(huán)境建設(shè)主要工作內(nèi)容有:物理服務(wù)器及基礎(chǔ)操作系統(tǒng)部署、KVM虛擬化及SDN Neutron配置、Web和數(shù)據(jù)庫服務(wù)部署、瀏覽器遠控服務(wù)部署等?;A(chǔ)環(huán)境為本文所涉及的系統(tǒng)提供軟硬件運行環(huán)境。
攻防實訓演練子系統(tǒng)主要包括基于課程體系學習、實訓演練操作、學習成果信息查看管理等,用戶可根據(jù)自己的興趣愛好選擇不同的課程體系進入實訓環(huán)節(jié),并能隨時查看成績排名及實訓進度等信息,一鍵返回對應(yīng)實訓課程繼續(xù)學習。
實訓及教學管理子系統(tǒng)主要包含基礎(chǔ)虛擬化管理、教學及教務(wù)管理等相關(guān)功能,在實訓教學管理過程中,除了對實訓教學內(nèi)容的增刪改,還能夠?qū)崟r監(jiān)控實驗過程畫面并提供遠程協(xié)助,以及對實訓操作結(jié)果的自動化評分。
4.2 ? 攻防實訓演練子系統(tǒng)設(shè)計
攻防實訓演練子系統(tǒng),包含實訓課程體系、實訓演練操作、課程進度成績管理三個功能模塊,使用PHP開發(fā)并使用MySQL數(shù)據(jù)庫,并使用Apache作為前端Web服務(wù)器,架構(gòu)如圖4所示。
實訓演練操作模塊是本子系統(tǒng)的核心,學生的全部實訓演練及學習行為均發(fā)生在該模塊中,從實訓操作出發(fā),將實訓手冊、實訓遠程控制窗口、選擇實驗環(huán)境、查看課前知識介紹、回答課后習題等功能動態(tài)結(jié)合,在一個單一實訓任務(wù)中體現(xiàn)教學做評考的完整學習鏈。
(1)課前準備
信息安全領(lǐng)域的技術(shù)技能沒有孤立的攻防,學生應(yīng)當了解應(yīng)用所需的基礎(chǔ)知識理論與實操技能。在實訓前向?qū)W生展示需理解的知識點和關(guān)聯(lián)的實訓場景信息。包括前置知識、實訓背景、環(huán)境介紹、工具及命令講解等內(nèi)容。
(2)動手實操
動手實操環(huán)節(jié),學生通過瀏覽UI左側(cè)的指導手冊,并基于指導手冊中的操作步驟,對UI右側(cè)的遠程控制窗口進行實訓演練操作。由于信息安全相關(guān)實訓具備較大的不確定性,可能會對實訓環(huán)境產(chǎn)生不可逆的破壞,實操模塊還需對實訓環(huán)境對應(yīng)的一個或一組虛擬機進行監(jiān)控,當前端觸發(fā)初始化請求時將對原環(huán)境全面銷毀,并使用后端鏡像技術(shù)為學生重新生成完全一致的實訓環(huán)境,避免重復搭建而浪費課堂時間。
在操作窗口中主要調(diào)用到Guacamole的HTML5窗體,通過WebSocket的方式將后端數(shù)據(jù)傳輸至前端,再由前端Canvas繪制將后端的數(shù)據(jù)展現(xiàn)出來。對后端的WebSocket的調(diào)用通常嵌套在頁面中,示例代碼如下,在前端頁面中則以ws://IP:Port/?token=FsTY6VOQHjKC3LZU的通信協(xié)議連接。
(3)課后練習
課后練習是完成學習后對實訓演練的考核,檢驗學生是否理解并掌握課程內(nèi)容。課后練習方式為觸發(fā)彈窗式,在正確回答問題后方可結(jié)束實訓,避免學生因誤操作或盲目操作而影響實訓效果。
4.3 ? 實訓及教學管理子系統(tǒng)設(shè)計
實訓及教學管理子系統(tǒng)主要承載了管理員及教師的相關(guān)管理操作,同時提供底層虛擬化調(diào)度及輸出、虛擬網(wǎng)絡(luò)及實驗監(jiān)控等功能。該子系統(tǒng)主要實現(xiàn)虛擬化及網(wǎng)絡(luò)的管理功能、實訓課程管理、實訓監(jiān)控,以及自動化評分等教學相關(guān)功能。由于虛擬化調(diào)度、監(jiān)控、輸出、網(wǎng)絡(luò)管理等均采用PythonAPI,調(diào)用Django框架作為顯示前端。同時考慮到子系統(tǒng)的連續(xù)運行等特性,采取UWSGI作為運行Django框架的中間件將數(shù)據(jù)輸出至Nginx,并由Nginx向瀏覽器輸出顯示元素。
在功能設(shè)計中主要包括五個模塊,包括實訓虛擬化及網(wǎng)絡(luò)管理模塊、實訓課程管理模塊、實訓監(jiān)控模塊、自動化實訓評分模塊和用戶管理模塊。功能如圖5所示。
(1)實訓虛擬化及網(wǎng)絡(luò)管理模塊
實訓虛擬化和網(wǎng)絡(luò)管理是整體實訓系統(tǒng)的核心,是提供教學與實訓環(huán)境的基礎(chǔ)模塊??紤]到信息安全相關(guān)的攻防實訓對運行環(huán)境及網(wǎng)絡(luò)拓撲均有較高要求,此處的設(shè)計采用與OpenStack一致虛擬化技術(shù)和網(wǎng)絡(luò)技術(shù),即KVM和Neutron。
實訓系統(tǒng)中對虛擬資源的管理主要是虛擬機資源的管理,考慮到虛擬機所處的不同狀態(tài),可以將對虛擬機的資源管理分為三種:創(chuàng)建虛擬機的資源管理、啟動虛擬機的資源管理及遷移虛擬機的資源管理。創(chuàng)建虛擬機時,實際上只是完成虛擬機文件的創(chuàng)建,虛擬機所需要的CPU、內(nèi)存等資源暫時還未分配;當創(chuàng)建共享類型的虛擬機時,實訓系統(tǒng)在分配資源時采用的是輪詢方式,輪詢從虛擬機服務(wù)器組中選擇一臺服務(wù)器來創(chuàng)建虛擬機。啟動虛擬機時的資源管理策略目的是將虛擬機啟動到合適的服務(wù)器上,以提高實訓系統(tǒng)資源池中資源的利用率。
系統(tǒng)采用后端鏡像技術(shù)對性能進行優(yōu)化,通過部署好的KVM虛擬機作為實訓環(huán)境的原始模板,并對原始模板中的操作系統(tǒng)及實訓環(huán)境進行最大化的性能調(diào)優(yōu),同時對原始模板的虛擬化配置文件進行優(yōu)化,降低CPU及內(nèi)存開銷。基于此模板生成的新鏡像則無須配置即可達到最小的性能消耗。
將創(chuàng)建的鏡像文件運行至KVM中即可面向?qū)W生提供實訓環(huán)境,當面臨多個學生同時創(chuàng)建實訓環(huán)境時也無須復制原始鏡像文件,秒級創(chuàng)建實訓鏡像文件。
(2)實訓課程管理模塊
實訓課程管理模塊包含了完整的門、章、節(jié)等結(jié)構(gòu),通過層層遞進的方式設(shè)計不同的課程體系,并能在小節(jié)中管理多種與實訓相關(guān)的信息,例如課前準備、知識點講解、實驗介紹、實訓手冊、趣味問答、課后習題等,并通過HTML5的方式展示富文本信息,通過引入外部編輯器UEditor,解決對PPT、WORD、音頻視頻等多媒體教學的需求,實訓課程管理模塊結(jié)構(gòu)如圖6所示。
根據(jù)功能需求,本模塊主要解決包括教學內(nèi)容與實訓的關(guān)聯(lián)、實訓與考核方式的管理問題,通過對后端數(shù)據(jù)庫各個相關(guān)數(shù)據(jù)表的增刪改查等操作,向演練子系統(tǒng)動態(tài)輸出課程內(nèi)容與實訓環(huán)境等資源。
(3)實訓監(jiān)控模塊
在實訓教學過程中主要存在幾種常見的管理問題,例如學生需要協(xié)助指導、巡查學生操作是否順利、幫助學生還原初始環(huán)境、實訓系統(tǒng)性能負載等,因此在實訓監(jiān)控模塊應(yīng)能提供物理機的硬件資源消耗監(jiān)控、學生實驗桌面監(jiān)控、環(huán)境恢復初始化、強制關(guān)閉實訓環(huán)境、操作學生實訓虛擬機等功能。
通過監(jiān)控模塊[4]對虛擬實訓環(huán)境中的操作過程進行實時監(jiān)控并記錄。監(jiān)控記錄用于對實訓環(huán)境的實操過程把控,對虛擬實訓環(huán)境中的操作進行記錄可以用于進行實訓技能評估。實現(xiàn)系統(tǒng)用戶的操作行為記錄和查詢;通過SNMP、SYSLOG對目標設(shè)備的實時狀態(tài)信息進行采集,通過流量鏡像和收取對目標網(wǎng)絡(luò)的流量信息進行采集;針對采集到的信息實現(xiàn)標準化處理引擎,通過處理規(guī)則將信息進行標準化處理并輸出,規(guī)則實現(xiàn)默認庫和自定義添加。
為實現(xiàn)對數(shù)據(jù)庫中的日志數(shù)據(jù)進行實時解析,采用Storm實現(xiàn)實時數(shù)據(jù)分析。同時考慮到監(jiān)控模塊需要對物理機操作系統(tǒng)進行性能監(jiān)控,需調(diào)用Python腳本對數(shù)據(jù)進行獲取,Python主要通過psutil組件,可實現(xiàn)對CPU、內(nèi)存、硬盤、網(wǎng)絡(luò)、進程等信息的獲取,調(diào)用代碼如下:
(4)性能測試
考慮到本系統(tǒng)提供大量虛擬化操作系統(tǒng)的訪問,需要較強的性能負載,而傳統(tǒng)的訪問式的性能測試工具如LoadRunner無法提供相應(yīng)功能,因此采用自行編寫的腳本批量創(chuàng)建實訓環(huán)境[5],并隨時觀測其性能狀況。在物理服務(wù)器中分別使用sysstat、iotop、htop、nmon等工具對CPU及硬盤負載進行監(jiān)控并記錄。
測試使用腳本創(chuàng)建100個CentOS實訓環(huán)境,在進入操作系統(tǒng)后隨機時間打開10個門戶網(wǎng)站,測試環(huán)境的CengOS計算資源指標均為2核CPU、4G內(nèi)存。
在測試開始時可見第二硬盤的負載瞬時變大,并產(chǎn)生了少量的突發(fā)硬盤負載,通過對腳本執(zhí)行日志的分析得知約每25個虛擬機的并發(fā)就會觸發(fā)一次小規(guī)模的I/O資源緊張。如圖8所示在全部測試過程中第一硬盤的性能幾乎沒有任何消耗,同時CPU資源雖然存在持續(xù)上升趨勢,如圖9所示,但服務(wù)器總計48核CPU,CPU LOAD為2.5僅占全部CPU性能的約5%。本次測試耗時3分46秒,100個2核CPU、4G內(nèi)存的CentOS已全部加載操作系統(tǒng)并完成10個網(wǎng)頁的瀏覽器訪問。
通過批量創(chuàng)建不同操作系統(tǒng)的實訓環(huán)境分析可知,本系統(tǒng)已實現(xiàn)計算性能的全面優(yōu)化,降低了CPU與硬盤的性能消耗,能夠通過一臺物理服務(wù)器為大量學生提供實訓環(huán)境,并能在短時間內(nèi)完成大量實訓環(huán)境的創(chuàng)建任務(wù),而無須對既有教室或?qū)嵱柺疫M行改造,提高了資源使用率,提升了教學環(huán)境使用效率。
5 ? 結(jié)論(Conclusion)
本文通過調(diào)度底層KVM虛擬化及SDN等相關(guān)技術(shù)將信息安全攻防技術(shù)與實訓教學過程進行了一定程度的結(jié)合,并通過對教學和教務(wù)管理的深入分析,最終設(shè)計并實現(xiàn)了基于底層虛擬化的信息安全教學實訓系統(tǒng)。通過測試,該系統(tǒng)能夠滿足實訓演練教學做一體化的要求,可實現(xiàn)預期設(shè)計目標。
參考文獻(References)
[1] 馬震太,張曉梅.BOSS在KVM平臺中的性能研究與優(yōu)化[J].計算機工程,2017,43(7):70-74.
[2] 許磊,顧進廣,何亨.基于SDN架構(gòu)的網(wǎng)絡(luò)能耗與性能動態(tài)調(diào)節(jié)機制[J].計算機工程,2018,44(4):108-114.
[3] 馬麗.網(wǎng)絡(luò)安全攻防訓練平臺設(shè)計與實現(xiàn)[J].無線互聯(lián)科技,2017(11):75-76
[4] 任永杰,程舟.KVM實戰(zhàn):原理、進階與性能調(diào)優(yōu)[M].北京:機械工業(yè)出版社,2019.
[5] 楊志國.銀行業(yè)數(shù)據(jù)中心性能測試的策略與實踐[M].北京:人民郵電出版社,2019.
作者簡介:
張月紅(1975-),女,碩士,副教授.研究領(lǐng)域:滲透測試,漏洞挖掘,WEB安全.