本發(fā)明涉及信息安全,具體涉及一種基于容器技術的動態(tài)創(chuàng)建模擬環(huán)境方法。
背景技術:
1、隨著信息技術的快速發(fā)展和網絡安全威脅的不斷增加,攻防演練已成為檢驗和提升網絡安全防護能力的重要手段。在攻防演練實戰(zhàn)中,快速構建與真實環(huán)境高度相似的模擬環(huán)境對于發(fā)現(xiàn)潛在的安全漏洞、評估防御策略的有效性以及提高應急響應能力至關重要。
2、目前在攻防演練實戰(zhàn)中,需要結合演練單位提供的拓撲圖信息來搭建對應的模擬環(huán)境,首先需要分析拓撲圖中包含的信息,接著再根據(jù)分析的信息去創(chuàng)建在局域網環(huán)境中分布于不同網段的多個容器,這一過程往往需要耗費較長的時間和精力,但是往往一場演練的時間有限,如果想要在有限的時間里取得更好的實戰(zhàn)成果,就需要想方設法去壓縮這一過程的時間。但是目前搭建模擬環(huán)境只能通過人工去手動搭建模擬環(huán)境,效率低且容易出錯,從而影響演練效果。
技術實現(xiàn)思路
1、本發(fā)明的目的在于克服現(xiàn)有技術的問題,提出一種基于容器技術的動態(tài)創(chuàng)建模擬環(huán)境方法。為達到上述技術目的,本發(fā)明的技術方案如下:
2、一種基于容器技術的動態(tài)創(chuàng)建模擬環(huán)境方法,包括如下步驟:
3、s1.拓撲圖信息的錄入
4、首先,錄入拓撲圖中的網段;然后錄入拓撲圖中的多臺主機對應的ip地址、端口號、名稱等數(shù)據(jù),同時錄入各主機所對應的網關的ip地址;生成本次演練中模擬環(huán)境所需要的基礎信息,便于后續(xù)的查詢;
5、s2.docker環(huán)境的基礎配置
6、以docker作為應用容器的引擎,在linux環(huán)境下進行docker環(huán)境的一系列配置,并開啟docker遠程連接為后續(xù)操作打下基礎;
7、s3.遠程自連接docker
8、連接時輸入docker的ip地址、端口號以及dockerapi版本號,由程序自動測試docker是否能夠連通;若不能連通則返回s2步驟對docker環(huán)境重新配置,若可以連通則進入下一步驟;
9、s4.創(chuàng)建鏡像
10、創(chuàng)建docker的只讀模板作為鏡像,鏡像中包含運行程序的所有內容;
11、s5.創(chuàng)建網絡
12、搭建出網絡相互隔離的不同網段,進而模擬現(xiàn)實中各個不同的局域網環(huán)境;
13、s6.創(chuàng)建容器
14、將應用程序及其依賴項打包到一個可移植的容器中,從而實現(xiàn)應用程序與底層系統(tǒng)的隔離。
15、作為改進,所述s2步驟具體包括如下步驟:
16、s2-1.準備服務器,并下載linux版docker;
17、s2-2.在linux環(huán)境下創(chuàng)建對應的docker目錄,然后拷貝下載好的資源到此目錄;
18、s2-3.解壓壓縮包并把解壓后的docker文件復制到/usr/bin/目錄下;
19、s2-4.創(chuàng)建docker.service文件,目的是將docker注冊為service服務;
20、s2-5.開啟遠程連接,暴露指定端口作為docker遠程連接端口;
21、s2-6.給docker.service文件添加執(zhí)行權限;
22、s2-7.重新加載配置文件,每次有修改docker.service文件時,均需要重新加載配置文件;
23、s2-8.啟動docker并設置為開機啟動;
24、s2-9.檢查docker服務狀態(tài),如狀態(tài)值為active說明docker已安裝成功。
25、作為改進,所述s4步驟具體包括如下步驟:
26、s4-1.鏡像拉取
27、由于創(chuàng)建jdk鏡像需要用到centos7,因此先拉取centos7;先調用鏡像拉取的api接口,通過輸入鏡像名稱和鏡像版本號即可完成鏡像拉取;
28、s4-2.鏡像導入
29、將jdk的安裝包導入對應的dockerfile文件中;首先,在dockerfile文件中需要配置jdk安裝包的路徑,java環(huán)境路徑,并指定在centos7環(huán)境中執(zhí)行;然后,調用鏡像導入接口,上傳jdk安裝包和對應的dockerfile文件,并記錄dockerfile文件的存儲路徑,完成鏡像的導入;
30、s4-3.創(chuàng)建鏡像
31、輸入鏡像的標簽和標志;其中鏡像的標簽是鏡像的名稱以及鏡像的版本號,而鏡像的標志是鏡像詳情標志的定義,鏡像的標志可以自定義;
32、將鏡像的標簽數(shù)據(jù)轉換為一個鍵值對數(shù)組;其中,鍵為鏡像名稱,值為鏡像的版本號;標志數(shù)據(jù)同樣轉換為一個鍵值對數(shù)組;其中,鍵為固定值,值為自定義的標志名,以及獲取到步驟s4-2中記錄的dockerfile文件的路徑,隨后將上述數(shù)據(jù)作為創(chuàng)建鏡像api接口的入?yún)?,完成?chuàng)建鏡像的操作;
33、s4-4.鏡像查看
34、通過鏡像查看api接口即可查看到所創(chuàng)建的鏡像列表數(shù)據(jù)。
35、作為改進,所述s5步驟通過調用創(chuàng)建網絡api接口完成,具體包括如下步驟:
36、首先,查詢在步驟s1中錄入的網關ip地址、指定的子網網段,然后錄入創(chuàng)建網絡的名稱以及選擇的網絡驅動模式;最后調用創(chuàng)建網絡api接口,傳入以上參數(shù)完成網絡的創(chuàng)建。
37、作為改進,所述網絡驅動模式為網橋模式,host、container或none。
38、作為改進,所述s6步驟具體包括如下步驟:
39、s6-1.輸入容器的端口號
40、容器的端口號用于與步驟s1中錄入的主機端口號建立端口映射,若未輸入容器端口號,則默認與步驟s1中錄入的主機端口號一致;
41、s6-2.輸入掛載路徑
42、掛載路徑包括主機路徑和容器路徑,用于做宿主機到虛擬機上的路徑映射;
43、s6-3.輸入容器名稱
44、s6-4.選擇步驟s4中創(chuàng)建的鏡像名稱,為該鏡像創(chuàng)建對應的容器;
45、s6-5.選擇步驟s5中創(chuàng)建的網絡名稱,為該容器配置對應的網絡環(huán)境;
46、s6-6.輸入容器環(huán)境;
47、本步驟為非必填項,例如,以mysql創(chuàng)建容器環(huán)境時需要添加密碼;
48、s6-7.配置是否允許交互式輸入
49、配置是否允許交互式輸入,參數(shù)為布爾類型;默認為true,即允許從容器中附加標準輸入流,此時用戶可以與容器進行交互;例如,可以在容器中運行shell腳本;反之則不允許交互式輸入;
50、s6-8.分配偽終端
51、分配一個偽終端,參數(shù)為布爾類型,默認為true,作用是可以為該容器分配一個偽服務,即一個一直在運行的進程,此時容器不會退出;若設置為false,例如,在centos啟動后,
52、如果容器內無任何進程運行后,容器會自動退出;
53、s6-9.把以上參數(shù)作為調用容器創(chuàng)建api接口的入?yún)?,完成容器?chuàng)建的操作。
54、本發(fā)明優(yōu)點在于:
55、1.在本發(fā)明可以實現(xiàn)docker的遠程連接、配置以及動態(tài)管理,減少人工輸入命令行管理創(chuàng)建docker容器的繁瑣操作,能夠根據(jù)實際需要,快速搭建出演練模擬環(huán)境以提升演練參與人員的效率,從而提高演練實戰(zhàn)中的效率。以便于能夠節(jié)省出更多時間來投入到后續(xù)的工作環(huán)節(jié)中。
56、2.本發(fā)明可以實現(xiàn)對模擬環(huán)境的可視化面板管理,在遠程連接docker成功后,即可查看在該服務器上的所有容器,以及該容器的運行狀態(tài),能夠實現(xiàn)對容器的啟動、停止和刪除,支持查看容器的詳情以及容器的日志,可以使得演練參與人更加直觀地看到演練模擬環(huán)境的全局情況,為下一步決策提供數(shù)據(jù)支撐。
57、3.本發(fā)明在創(chuàng)建容器時,能夠靈活的添加容器環(huán)境信息,便于用戶根據(jù)場景的需要,能夠配置容器所需的環(huán)境。
58、4.本發(fā)明在創(chuàng)建網絡和容器等操作時,可以實現(xiàn)ip地址和端口號,網段、網關ip地址的快速關聯(lián),即只用輸入一次拓撲圖數(shù)據(jù),后續(xù)在這場演練下這個拓撲圖關聯(lián)的模擬場景下創(chuàng)建網絡的操作即可實現(xiàn)自動關聯(lián)對應的指定子網網段和網關ip地址數(shù)據(jù),而在容器創(chuàng)建操作中所需要的端口映射也可以實現(xiàn)用戶勾選之前錄入的端口號信息,避免在手動敲入命令行時可能會出現(xiàn)的參數(shù)錯誤的問題,提高整個模擬過程的準確性。