Docker安全性分析及安全防護(hù)_第1頁
Docker安全性分析及安全防護(hù)_第2頁
Docker安全性分析及安全防護(hù)_第3頁
Docker安全性分析及安全防護(hù)_第4頁
Docker安全性分析及安全防護(hù)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Docker平安性分析及平安防護(hù)李俊灝【摘要】伴隨著云計(jì)算的開展,Docker容器技術(shù)以其輕量級(jí)和高性能的優(yōu)勢(shì)迅速取得了廣泛的市場應(yīng)用。Docker具有共享內(nèi)核的特性,這帶來了一些平安上的問題。本文從平安隔離、資源限制、內(nèi)容信任和內(nèi)核平安防護(hù)四個(gè)維度對(duì)Docker的固有平安特性進(jìn)行了闡述,分析實(shí)際應(yīng)用過程中可能存在的七大平安風(fēng)險(xiǎn),并提出針對(duì)性的防護(hù)建議。【關(guān)鍵字】虛擬化;容器;Docker;平安;風(fēng)險(xiǎn);威脅;平安防護(hù)中圖分類號(hào):TP309文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):2095-2457202120-0240-002DOI:10.19694/j ki.issn2095-2457.2021.20.112

2、0引言近年來,伴隨著云計(jì)算的迅猛開展,虛擬化技術(shù)得到了廣泛的應(yīng)用,以滿足云計(jì)算環(huán)境對(duì)密集計(jì)算、靈活擴(kuò)展以及平安可靠的需求。當(dāng)前主流的虛擬化技術(shù)可以分為兩類,分別是基于虛擬機(jī)的虛擬化技術(shù)hypervisor-based和基于容器的虛擬化技術(shù)container-based。相較而言,虛擬機(jī)技術(shù)在平安隔離方面更勝一籌,而容器技術(shù)那么具備輕量而高效的優(yōu)勢(shì)。Docker開源容器工程在2021年一經(jīng)推出便備受矚目,短短幾年里迅速成為了容器虛擬化領(lǐng)域的主流方案。本文從平安角度出發(fā),詳細(xì)分析了Docker本身的平安特性,并對(duì)可能存在的平安風(fēng)險(xiǎn)提出了針對(duì)性的平安防護(hù)建議。1Docker概述Docker致力于提供

3、一整套從開發(fā)、交付到運(yùn)行的一體化應(yīng)用解決方案。Docker的成功絕非偶然,2021年Docker工程啟動(dòng)的時(shí)候,容器技術(shù)已經(jīng)有了十余年的開展,在前輩LXCLinuxcontainer的根底上,Docker帶來了全新的特性:提供了能夠簡單而平安的創(chuàng)立和控制容器的接口,提供了一次打包、隨處運(yùn)行的便利,實(shí)現(xiàn)了相比其它技術(shù)更高的硬件資源利用效率,以及與第三方工具配合工作以簡化管理部署流程的能力。Docker基于CS架構(gòu)設(shè)計(jì),主要組件包括Dockerclient、Dockerdaemon、Dockerregistry三局部。Dockerdaemon是Docker的功能核心,它負(fù)責(zé)偵聽DockerAPI請(qǐng)

4、求并管理Docker對(duì)象,比方鏡像image、容器container、網(wǎng)絡(luò)和卷volume。一個(gè)Dockerdaemon還可以與其它Dockerdaemon通信來實(shí)現(xiàn)效勞管理。Dockerclient是Docker為用戶提供的操作接口,可通過該接口輸入命令完成對(duì)鏡像、容器、倉庫的操作。一個(gè)Dockerclient可同時(shí)與多個(gè)Dockerdaemon進(jìn)行通信。Dockerregistry用于存儲(chǔ)Docker鏡像。DockerHub是一個(gè)公開的Dockerregistry,默認(rèn)配置下,Docker會(huì)在DockerHub上查找所需的鏡像。通過使用DockerDatacenterDDC內(nèi)含的Docke

5、rTrustedRegistryDTR組件,任何人都可以搭建私有的Dockerregistry。2Docker平安特性2.1平安隔離虛擬化技術(shù)在多租戶環(huán)境下必須首先解決平安隔離的問題,Docker借助Linux內(nèi)核的namespace命名空間功能和Cgroups機(jī)制來實(shí)現(xiàn)平安隔離。以下從進(jìn)程、文件系統(tǒng)、設(shè)備、進(jìn)程間通信IPC、網(wǎng)絡(luò)等5個(gè)方面來評(píng)估Docker平安隔離的實(shí)現(xiàn)程度。2.1.1進(jìn)程隔離Docker通過PIDnamespace來實(shí)現(xiàn)進(jìn)程隔離,從而讓運(yùn)行中的容器無法感知到運(yùn)行在其它容器或者宿主機(jī)上的進(jìn)程。PIDnamespace具有層次結(jié)構(gòu),父namespace可以感知到子namespa

6、ce中的進(jìn)程,反之或平級(jí)之間那么不行,這就保證了宿主機(jī)系統(tǒng)進(jìn)程可以控制容器進(jìn)程,但容器進(jìn)程卻無法感知宿主機(jī)或者其它容器上的進(jìn)程。另外,容器中的進(jìn)程編號(hào)PID都是獨(dú)立的,這樣每個(gè)容器都可以有PID為1的類init進(jìn)程,當(dāng)發(fā)現(xiàn)異常時(shí),只要管理員結(jié)束掉這個(gè)類init進(jìn)程,這個(gè)容器就被徹底的關(guān)閉了。2.1.2文件系統(tǒng)隔離Docker通過mountnamespace來實(shí)現(xiàn)容器間的文件系統(tǒng)隔離,讓各個(gè)容器以及宿主機(jī)上的文件系統(tǒng)掛載操作保持獨(dú)立且互不干擾。但需要注意的是,為了保證容器內(nèi)的正常操作,宿主機(jī)上的一些特殊目錄例如/sys、/proc/sys、/proc/sysrq-trigger、/proc/ir

7、q以及/proc/bus等并不受namespace限制,換句話說,容器內(nèi)可以直接訪問這些宿主機(jī)目錄。為了降低該問題導(dǎo)致的風(fēng)險(xiǎn),Docker做了兩點(diǎn)限制:1容器對(duì)這些特殊的目錄沒有寫入權(quán)限。2移除容器的CAP_SYS_ADMIN能力,從而使容器內(nèi)無法重新掛載這些特殊目錄。此外,由于多個(gè)容器可以共用同一個(gè)鏡像,每個(gè)容器在運(yùn)行過程中都會(huì)生成私有的數(shù)據(jù),為了最大化的重用資源,Docker使用了COW寫時(shí)拷貝技術(shù)和unioFS文件系統(tǒng),在只讀文件系統(tǒng)上為每個(gè)容器疊加一層可寫入文件系統(tǒng),保證不同容器的數(shù)據(jù)操作完全獨(dú)立,互不影響。2.1.3設(shè)備隔離Docker利用Cgroups來控制容器可訪問的設(shè)備,并阻止

8、容器內(nèi)的進(jìn)程創(chuàng)立新的設(shè)備節(jié)點(diǎn)。另外,Docker在掛載時(shí)使用了nodev選項(xiàng),這樣即便在鏡像中創(chuàng)立了設(shè)備節(jié)點(diǎn),容器中也同樣無法使用這些節(jié)點(diǎn)來與內(nèi)核通信。需要指出的是,以上均假設(shè)容器未運(yùn)行在“特權(quán)模式下,以“特權(quán)模式啟動(dòng)的容器可以訪問所有設(shè)備。2.1.4進(jìn)程間通信隔離Docker通過IPCnamespace來實(shí)現(xiàn)進(jìn)程間通信隔離,不同的IPCnamespace中的進(jìn)程無法互相通信,Docker為每個(gè)容器都分配了一個(gè)IPCnamespace,以此來保證容器之間的進(jìn)程通信隔離。2.1.5網(wǎng)絡(luò)隔離Docker通過networknamespace來為每個(gè)容器分配了一塊獨(dú)立的網(wǎng)絡(luò)協(xié)議棧,使每個(gè)容器都有自己的

9、IP地址、路由表以及網(wǎng)絡(luò)設(shè)備等。為了實(shí)現(xiàn)容器間以及容器與宿主機(jī)間的網(wǎng)絡(luò)通信,默認(rèn)情況下Docker會(huì)在宿主機(jī)上創(chuàng)立一個(gè)虛擬以太網(wǎng)網(wǎng)橋docker0,所有容器的eth0接口均通過一定的方式與該虛擬網(wǎng)橋相連,以此來實(shí)現(xiàn)網(wǎng)絡(luò)通信。由于默認(rèn)情況下虛擬網(wǎng)橋不進(jìn)行包過濾,這會(huì)造成一定的平安風(fēng)險(xiǎn)。2.2資源限制拒絕效勞DoS是最常見的攻擊方式之一,通過控制某些進(jìn)程去消耗系統(tǒng)的所有資源,從而破壞其他進(jìn)程的正常運(yùn)行。在容器環(huán)境下,所有容器共享內(nèi)核資源,如果未作限制,一旦某個(gè)容器被攻擊者以一定方式控制,宿主機(jī)資源將很可能被消耗殆盡。為了防范DoS,每個(gè)容器的可用資源必須受到合理的限制。Docker借助linux的

10、Cgroups來實(shí)現(xiàn)這種限制,以控制單個(gè)容器可用的CPU、內(nèi)存和磁盤I/O等資源,從而確保每個(gè)容器獲得公平的資源份額,并防止任何容器消耗所有資源。2.3內(nèi)容信任Docker內(nèi)容信任DCT提供了在與遠(yuǎn)程Dockerregistry數(shù)據(jù)通信過程中使用數(shù)字簽名的能力,這些簽名可被用來驗(yàn)證鏡像的發(fā)行方以及數(shù)據(jù)的完整性。通過DCT,鏡像發(fā)布者可以對(duì)其鏡像進(jìn)行簽名,而鏡像使用者可以確保他們使用的鏡像已簽名。2.4內(nèi)核平安防護(hù)確保內(nèi)核平安和利用內(nèi)核提供的平安技術(shù)進(jìn)行自身平安加強(qiáng)都是Docker平安的重要方面,Docker在這方面也做了很多整合工作,主要是通過采用能力機(jī)制capabilities、Seccom

11、psecurecomputingmode平安特性、強(qiáng)制訪問控制MAC對(duì)容器的權(quán)能和系統(tǒng)調(diào)用進(jìn)行限制;通過利用內(nèi)核相關(guān)平安模塊Iptables、Trafic、controller來加強(qiáng)自身網(wǎng)絡(luò)平安,以及通過利用內(nèi)核相關(guān)完整性保護(hù)技術(shù)確保鏡像和系統(tǒng)的完整性等;通過已有平安框架Grsecurity/PAX等對(duì)內(nèi)核進(jìn)行平安強(qiáng)化。3平安風(fēng)險(xiǎn)及防護(hù)建議3.1宿主機(jī)及內(nèi)核平安3.1.1風(fēng)險(xiǎn)描述Docker引擎及容器都運(yùn)行在宿主機(jī)上,一旦宿主機(jī)被攻破,Docker的平安便無從談起。3.1.2防護(hù)建議1做好訪問控制及通信加密。2保證系統(tǒng)和軟件包括docker本身能夠得到及時(shí)的更新。3盡量使用最小化系統(tǒng),比方Co

12、reOS、RedHatAtomic、RancherOS等。4啟用強(qiáng)制訪問控制MAC,如Seccomp、AppArmor、SELinux等。3.2容器逃逸3.2.1風(fēng)險(xiǎn)描述容器逃逸指的是某個(gè)Docker容器繞過了隔離檢查,訪問到了宿主機(jī)的敏感信息或者取得了宿主機(jī)的控制權(quán)限。3.2.2防護(hù)建議1去除非必要的能力capabilities,例如CAP_SYS_ADMIN。2如無必要,不要以特權(quán)模式運(yùn)行容器,必須這樣做的情況下,要確認(rèn)鏡像來源可信。3.3鏡像認(rèn)證3.3.1風(fēng)險(xiǎn)描述默認(rèn)情況下,Docker并不對(duì)鏡像做認(rèn)證和校驗(yàn),從任何渠道獲取的鏡像都可以直接運(yùn)行。如果無法保證鏡像的發(fā)布者是可信的,并且鏡像

13、在傳遞的過程中內(nèi)容沒有被篡改,那么就存在著鏡像內(nèi)容被惡意植入的風(fēng)險(xiǎn)。3.3.2防護(hù)建議1不使用未經(jīng)驗(yàn)證的軟件,不使用未在信任列表中的源。2強(qiáng)制使用鏡像的簽名驗(yàn)證機(jī)制。3.4容器資源濫用3.4.1風(fēng)險(xiǎn)描述一臺(tái)宿主機(jī)上往往會(huì)同時(shí)運(yùn)行數(shù)量龐大的容器群,雖然這是充分利用資源的一種表現(xiàn),但同時(shí)也意味著更劇烈的資源競爭。如果資源使用上不加限制,那么很容易就能夠發(fā)起一次拒絕效勞DoS攻擊。常見的資源類型包括CPU、內(nèi)存、存儲(chǔ)、網(wǎng)絡(luò)帶寬、I/O帶寬、交換文件等。3.4.2防護(hù)建議1雖然Docker默認(rèn)情況下不做資源限制,但只要按需添加命令行參數(shù)就可以做到這一點(diǎn)。試著通過一系列的測(cè)試來確定正常情況下一個(gè)容器需要

14、的資源量范圍,并以此為標(biāo)準(zhǔn)進(jìn)行限制。2如果斷定暫時(shí)不做實(shí)際限制,至少應(yīng)該配置相關(guān)的監(jiān)控和告警,在資源使用量超限時(shí)第一時(shí)間得到通知。3.5鏡像內(nèi)漏洞3.5.1風(fēng)險(xiǎn)描述每個(gè)Docker鏡像常常被設(shè)計(jì)為實(shí)現(xiàn)某一功能的黑盒,在這種情況下如果容器運(yùn)行時(shí)功能正常,使用者往往會(huì)忽略鏡像中存在的平安問題。舉例而言,一個(gè)Apache效勞器鏡像內(nèi)包含的Apache版本可能非常老舊,以至于存在大量的未修補(bǔ)漏洞,攻擊者很容易利用這些的漏洞對(duì)效勞器發(fā)動(dòng)攻擊,并有可能進(jìn)一步影響到整個(gè)容器甚至整個(gè)宿主機(jī)的平安。3.5.2防護(hù)建議1定期為鏡像中的軟件升級(jí)平安補(bǔ)丁,然后重新編譯和發(fā)布新版本鏡像。2盡量保持鏡像功能單一,如果有可

15、能,將復(fù)雜功能的鏡像拆分為多個(gè)單一功能的鏡像。3定期進(jìn)行平安掃描,并及時(shí)對(duì)掃描出的漏洞進(jìn)行修補(bǔ)。3.6敏感信息3.6.1風(fēng)險(xiǎn)描述在Docker容器運(yùn)行過程中,不可防止的會(huì)接收、保存和傳遞一些敏感信息,比方密鑰、憑據(jù)和證書等。如果處理不得當(dāng)?shù)脑?,非常容易造成敏感信息的泄露?.6.2防護(hù)建議1不通過環(huán)境變量傳遞敏感信息。2不將任何敏感信息保存在鏡像中。3如有必要,部署一套Docker憑據(jù)管理軟件。3.7運(yùn)行時(shí)平安監(jiān)控3.7.1風(fēng)險(xiǎn)描述即便做到了以上說到的每一條,平安風(fēng)險(xiǎn)仍然存在,比方攻擊者利用的是使用者自身代碼的漏洞或者0day漏洞。運(yùn)行時(shí)的平安風(fēng)險(xiǎn)千變?nèi)f化,必須要有動(dòng)態(tài)的風(fēng)險(xiǎn)監(jiān)測(cè)機(jī)制來發(fā)現(xiàn)問題

16、并及時(shí)處置。3.7.2防護(hù)建議1做好運(yùn)行時(shí)平安的監(jiān)控和告警。例如借助態(tài)勢(shì)感知系統(tǒng)進(jìn)行綜合性的攻擊和入侵預(yù)判。2非本地化的保存運(yùn)行日志信息,以供事后追溯分析。4結(jié)束語通過對(duì)Docker固有平安特性的分析,能看到Docker的設(shè)計(jì)者為Docker創(chuàng)立了一整套的平安防護(hù)體系,能夠較好的覆蓋整個(gè)Docker應(yīng)用生命周期。當(dāng)然,默認(rèn)配置下,Docker是存在一定的平安隱患的,通過啟用鏡像簽名機(jī)制、限制容器資源使用、以非特權(quán)模式運(yùn)行容器以及啟用MAC方案等,Docker的平安能力將得到極大的提升。平安和效率在生產(chǎn)實(shí)踐中始終是一對(duì)矛盾體,如何采取有效的管理手段,將Docker環(huán)境的風(fēng)險(xiǎn)暴露面降低到一個(gè)合理可接受的水平,這將是一個(gè)需要長期探討和研究的課題?!緟⒖嘉墨I(xiàn)】【1】謝超群.高校數(shù)據(jù)中心Docker容器應(yīng)用的平安體系設(shè)計(jì)J.網(wǎng)絡(luò)平安技術(shù)與應(yīng)用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論