◆謝超群
高校數據中心Docker容器應用的安全體系設計
◆謝超群
(福建中醫藥大學現代教育技術中心 福建 350000)
隨著信息化的發展,高校數據中心中基于Docker容器技術的各種微應用越來越多,學校數據中心面臨著由容器技術所帶來的各種安全問題。本文結合高校數據中心Docker容器應用的安全情況,從Docker容器生命周期的各個環節全面分析Docker容器技術的安全漏洞,提出了每個環節的安全措施,建立了一套Docker容器安全問題的安全防護體系。實踐證明該安全體系能解決數據中心Docker容器的大多數安全問題,提高了高校數據中心的信息化安全水平。
Docker;容器技術;安全;數據中心
隨著高校信息化的不斷深入,高校數據中心業務系統采用微服務容器架構的越來越多。由于容器技術封裝應用環境,可移植性強,資源利用率高,相比傳統的業務應用從安裝操作系統、中間件到應用的復雜部署方式,容器技術從應用開發、發布和部署都更加快速、靈活。目前容器技術已經廣泛應用到高校數據中心的應用部署中,由于Docker是開源新技術,對比傳統的虛擬化技術其隔離性更差,安全風險點也不少,從應用的開發、應用容器鏡像的制作和發布、應用容器的部署和運行都存在潛在的安全風險,因此需要從這些風險點構建一套安全體系來保障高校數據中心的容器應用安全。
Docker容器技術的應用生命周期,包括從應用的開發,應用容器鏡像的制作和發布,應用容器的部署和運行。Docker容器技術的安全風險在容器應用的生命周期每個環節都有可能存在,Docker容器技術的安全風險分析圖如圖1所示,下面將針對Docker容器技術在每個環節可能遇到的安全風險進行詳細分析。
在容器應用開發的環節,開發者在編碼時所寫的代碼存在安全漏洞,或者開發人員所使用的應用開發環境存在安全漏洞,這樣當這個軟件應用和運行環境打包成容器后就會帶有這些安全隱患,導致后期制作的容器鏡像以及鏡像生成容器在生產環境運行時都會有可以被攻擊者利用的安全漏洞。攻擊者可以通過安全漏洞控制運行的容器,甚至獲得宿主機的控制權限。
在應用容器鏡像的制作和發布環節,應用鏡像的dockerfile可能被寫入惡意代碼,導致制作的鏡像在編譯時取得執行任意代碼的運行權限。同時應用鏡像所打包的軟件應用環境也可能存在漏洞,鏡像可能集成了有安全漏洞的操作系統和中間件,導致后期攻擊者可以利用這些漏洞提權。容器鏡像發布時,可能存在黑客在發布的鏡像中植入惡意程序和容器鏡像倉庫被攻陷,倉庫中的正常鏡像被改寫的風險,從而導致用倉庫中的鏡像生成的容器應用都會成為攻擊和控制的目標[1]。
在應用容器的部署和運行環節,首先Docker容器運行的底層機制可能存在問題,比如Docker本身實現的代碼存在一定程度的缺陷,造成權限的惡意提升和利用。Docker是利用linux的內核機制namespaces和cgroup來隔離容器和分配容器資源,但linux的隔離機制還不夠完善,存在關鍵系統目錄,系統時鐘等沒有被完全隔離的問題,有可能被攻擊者獲取到系統關鍵信息來進行惡意攻擊。Docker容器運行時由于一臺服務器上的容器共享底層linux的內核,攻擊者可能會利用一個已經被控制的容器執行惡意代碼,導致底層linux的內核崩潰,從而使所有服務器上容器都無法正常運行。其次Docker容器部署時是基于容器的鏡像來生成容器,可能存部署的容器鏡像存在安全漏洞導致生成的容器也存在漏洞,從而被攻擊者利用漏洞提權和控制[2]。容器部署時也可能存在部署不當而導致安全風險的問題,比如當部署啟動容器時,容器啟動選項使用參數-cap-add=sys_admin,導致啟動的容器獲得讀寫系統關鍵目錄的權限,并獲得修改某些內核參數的權限,從而使攻擊者利用這些權限達到攻擊容器和宿主系統的目的。最后Docker容器運行時的通訊采用的是生成宿主機虛擬網橋,來橋接各個容器的虛擬網絡接口來實現容器之間的通信。在虛擬網橋默認配置模式下,為提高通訊效率,Docker容器之間的通訊數據沒有進行過濾和加密,攻擊者可以利用這個缺陷,發動MAC Flood和ARP欺騙攻擊或者監聽容器之間通信的敏感信息。同時在虛擬網橋模式下,容器之間默認可以相互通訊,無法對容器間通訊流量進行監控和控制。由于容器的創建和銷毀也比傳統的虛擬機頻繁,新容器的IP地址有可能被以前的舊容器使用過,導致舊容器所遭受的攻擊會重新定位到新容器上[3]。

圖1 Docker容器安全風險分析圖
針對Docker在整個應用生命周期的每個環節中所遇到的安全問題,結合高校容器應用的實際情況,從每個環節采取各種安全措施,構建容器安全體系保障高校數據中心各種容器應用安全運行。
面對在容器應用開發的環節中可能遇到的安全問題,可以采取以下的安全措施:一是在應用開發的階段需按照統一的代碼安全規范來編寫容器應用,避免容器應用本身的代碼安全漏洞。二是使用經過安全驗證的可靠的應用運行環境進行開發,避免容器應用中開發環境所帶的安全漏洞。三是要對開發完成的容器應用進行完善的安全測試,消除應用程序中所存在的可被攻擊者利用的漏洞。
面對在應用容器鏡像的制作和發布環節中可能遇到的安全問題,可以采取以下的安全措施:一是構建安全可信的本地容器鏡像倉庫,并部署鏡像漏洞掃描器Clair對發布的鏡像都進行漏洞掃描,保證每個發布的鏡像都是安全可信的。二是啟用鏡像發布客戶端的證書,對客戶端與鏡像倉庫之間的通訊進行加密,防止攻擊者發起中間人攻擊,對發布鏡像的動作進行竊聽和攻擊。三是在制作容器應用鏡像時使用安全可信的基礎鏡像,強制使用Docker或者Alpine-linux的經過安全驗證的官方基礎鏡像。四是在制作容器鏡像時,進行恰當的權限設置,如可以在Dockerfile中定義容器以非root的身份運行并刪除setuid和setgid權限,避免攻擊者通過容器獲取宿主服務器的權限。五是采用鏡像制作的最小化安裝原則,只在鏡像中打包需要的程序,避免安裝無關的不安全程序,導致后期被攻擊者利用。六是啟用鏡像發布客戶端的鏡像簽名機制,保證下載和上傳的鏡像的完整性和可靠性,防止容器鏡像被惡意篡改和保證鏡像的完整性[4]。
面對在應用容器的部署和運行環節中可能遇到的安全問題,可以采取以下的安全措施:一是在Docker宿主機的內核層面采取相應的安全措施。比如按照要求及時升級操作系統內核,修復可能存在的內核安全漏洞;利用linux的安全加固組件SELinux、AppArmor、GRSEC等對容器應用的系統執行權限,文件系統掛載權限,網絡讀寫權限進行限制;合理利用linux的Namespace隔離功能,確保容器只能讀寫自己命名空間的資源,防止出現攻擊者跳出容器的命名空間獲得操作系統的更高權限[5];配置linux的cgroup功能,對容器對CPU,內存資源的使用進行控制和審計,防止出現攻擊者利用容器大量消耗宿主機資源導致其他容器無法正常運行的情況。開啟Sec-comp安全計算模式,設置系統調用白名單,對容器對系統的調用進行訪問控制,防止執行非法的系統調用命令[6]。二是在Docker容器應用運行層面采取相應的安全措施。比如以最低的操作系統權限和必要的最小資源運行Docker容器,避免攻擊者控制容器后的進一步攻擊;建立統一的ELK日志監控平臺對容器的運行日志進行采集分析,實時掌握容器的運行情況和安全威脅;確保容器上運行的服務只包含必要的應用服務,除非必要否則禁止在容器上開放ssh服務;確保容器不采用p-rivileged標記運行在特權模式下,并給每個容器掛載只讀的獨立目錄,實現每個容器對應的文件目錄權限不同,防止攻擊者由于權限設置不當提升權限或獲取未經授權的資源。三是在Docker的網絡設置層面采取相應的安全措施。比如設置Docker的守護進程的運行參數為–icc=false,限制同一服務器上的容器相互通訊,防止攻擊者利用容器網絡進行監聽和ARP欺騙攻擊等;為docker的守護進程配置TLS身份認證,防止未經授權的用戶訪問Docker服務,獲得Docker的控制權限;使用iptables設置安全規則,控制所有容器之間的網絡通信,并控制Docker容器與外界網絡的訪問;禁用Docker容器的hos-t網絡模式,隔離宿主機和容器的網絡通信;配置容器只開放必要的網絡端口,禁用與容器業務端口無關的網絡端口開放,利用Nmap端口掃描工具定期對運行容器開放的端口進行掃描,并關閉無用的容器端口,防止因為配置不當導致的容器端口對外無限制開放;部署多臺Docker主機集群時,容器網絡盡量使用Overlay Network網絡架構,隔離每個主機容器網絡的直接通訊,并開啟IPsec 通道加密主機之間的容器通訊,防止攻擊者竊聽或劫持[7]。
Docker容器技術為高校部署業務應用提供了新的方式,讓高校數據中心部署各種應用更加高效,靈活,且資源利用率高,但容器技術也存在各種安全上隱患,本文從Docker容器生命周期的各個環節分析了該技術的各個安全風險點,并針對安全風險提出了每個環節的安全措施,建立了一套Docker容器的安全體系解決方案,為高校微應用容器安全提供了保障。
[1]艾明振.基于Docker平臺的安全信息管理的研究與實現[D].北京:北京郵電大學,2018.
[2]楊文林,譚曦等. Docker脆弱性分析與安全增強[J]. 信息安全與技術,2016(04):21-23.
[3]王鵑,胡威等.基于Docker的可信容器[J]. 武漢大學學報(理學版),2017(02):102-108.
[4]魏興慎,蘇大威等. SecDr:一種內容安全的Docker鏡像倉庫[J].計算機與現代化,2018(05):70-73.
[5]陳莉君,張義飛.基于LKM的Docker資源信息隔離方法[J].計算機系統應用,2016(12):250-254.
[6]李平平,陳莉君.基于LSM的Docker訪問控制機制研究[J].信息技術,2016(11):134-138
[7]簡智強.Docker容器安全監控系統設計與實現[D].重慶:重慶郵電大學,2017.