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