吳祖康 徐志成 陳若鵬



摘要:基于云原生架構的容器平臺技術具備“技術組件標準化、軟件架構微服務化、服務管控實時化,資源編排靈活化、對外接口統一化、資源調度彈性化”等巨大靈活性優勢,在為企業數字化轉型提供了極大技術支撐的同時也帶來了新的網絡與信息安全挑戰。針對容器自身的安全威脅特性,如鏡像軟件可能存在漏洞或木馬病毒,租戶之間存在橫向攻擊威脅,容器逃逸攻擊宿主機風險,容器網絡DDoS攻擊風險,容器編排訪問權限濫用、未經授權訪問、容器組件安全合規風險等,文章從容器平臺全生命周期出發,通過探索實踐,實現了對容器平臺高效、精準、全面的安全管控能力,助力企業數字化轉型的快速、穩步發展。
關鍵詞:云原生;容器安全;風險評估;威脅檢測
中圖分類號:TP393 ? ? ? ?文獻標識碼:A
文章編號:1009-3044(2022)13-0034-03
隨著技術的發展,基于Kubernetes和Docker構建容器云服務平臺是大型企業構建生產環境容器云服務平臺的較優選擇之一[1],但同時,容器技術由于自身特性,存在其特有的安全風險問題,包括:(1)容器鏡像中可能包含有漏洞和惡意軟件,存在潛在的安全風險;(2)容器運行在低安全系數的環境下,易遭受外部攻擊;(3)容器之間存在通過主機虛擬網絡相互攻擊的安全風險;(4)容器管理平臺本身由于權限濫用或配置不當等情況,使容器面臨安全風險[2]。
研究團隊針對這些風險問題,經過探索研究,實現了圍繞容器生命周期的容器安全平臺。平臺通過主動掃描、實時監測、智能化分析,實現了容器安全的可視化、智能化;采用鏡像深度掃描技術對鏡像文件進行深度的漏洞、惡意程序等方面的安全檢查,保障鏡像文件的安全性,避免由不安全的鏡像創建含有漏洞或惡意程序的容器;研究并實現了容器網絡可視化技術,通過網絡信息收集,建立對集群內各容器、POD、節點及服務之間的關聯關系,以直觀的圖形方式進行全面可視化展示,使容器安全狀態顯性化;運用多層次的容器安全隔離機制,通過制定安全策略限制容器與容器、容器和主機之間的訪問,從而增強容器隔離性,降低容器安全風險。
平臺以容器的生命周期[3]為脈絡,從以下幾個方面實現對容器的安全檢測與防護:
1 基于鏡像文件深度掃描技術,對鏡像進行漏洞、惡意程序等的掃描,實現鏡像文件安全風險評估與管控
在容器平臺實現并部署“掃描容器”,獲取容器平臺中的倉庫鏡像、節點鏡像,使用掃描容器中的鏡像文件掃描器分離鏡像文件中的層和軟件包,基于CVE安全漏洞庫、Webshell庫、病毒木馬庫等威脅情報對軟件包進行深度掃描,發現其中存在的漏洞、惡意程序,同時逐層進行敏感檢測,在容器鏡像部署到生產環境之前及時發現并降低安全風險。掃描的內容主要包括:
1)鏡像中軟件包
掃描器獲取到鏡像后,將它分離成相應的層和軟件包,對軟件包進行檢查。
2)鏡像中文件
對鏡像中的文件進行分層提取后,同時逐層進行惡意代碼檢測、敏感檢測。這里主要采用模糊哈希、YARA規則和機器學習的CNN-Text-Classfication 分類算法三種檢測方式[4]。
鏡像掃描可以采取單獨部署掃描容器的方式,通過掃描容器對鏡像進行掃描,并實現掃描統一管理。并基于威脅情報,如CVE安全漏洞庫、WebShell庫、病毒木馬庫,對鏡像進行病毒木馬檢測。
鏡像掃描整體過程整體描述如下。
①掃描容器提取容器鏡像并保存為tar格式的壓縮包。
②拆包器將tar格式鏡像拆分成各個鏡像層。
③提取manifest.json文件中的鏡像層信息。
④根據layer id解析出數據文件。
⑤惡意病毒與WebShell檢測模塊對可疑文件進行檢測打分。
⑥解析鏡像中的軟件包版本。
⑦匹配CVE漏洞,檢測鏡像軟件安全漏洞風險。
⑧對鏡像歷史行為、證書文件分析。
⑨根據漏洞信息綜合打分。
⑩輸出鏡像掃描報告。
掃描之后,可以根據掃描報告結果進行安全加固處理,生成安全鏡像并更新倉庫。當發現鏡像中存在安全風險時,通過安全容器對鏡像進行修復,修復動作主要包括:
(1)替換基礎鏡像。對于鏡像文件中的基礎鏡像存在安全風險的情況,使用最新已加固的基礎鏡像版本替換當前存在風險的基礎鏡像。
(2)清除惡意文件。對于鏡像文件中發現存在惡意文件的情況,對發現的惡意文件進行清除操作。
(3)敏感信息清除。自動清除鏡像文件中所發現的敏感信息。
(4)軟件包版本升級。鏡像中的軟件包由于版本原因存在安全漏洞時,使用較新版無漏洞的軟件包替換,以消除該漏洞風險。
2通過實時入侵行為檢測及智能威脅檢測,實現容器運行狀態的安全防護
分析容器運行狀態下WebShell攻擊、反彈網絡連接、挖礦行為、勒索病毒、提權逃逸行為、敏感文件操作、危險命令、可疑進程以及容器特有的未經授權訪問ApiServer等惡意行為的特征,制訂容器危險行為的檢測規則,實時監測所有操作是否有黑客入侵的跡象。另外,采用機器學習算法檢測容器異常行為,對于利用漏洞發起的攻擊以及通過竊取管理權限進而攻擊宿主機的逃逸行為進行實時監測和阻斷,保障容器運行過程中的安全。主要包括以下功能:
1)入侵行為檢測
根據惡意行為特征,制訂容器入侵行為檢測規則,實時監控所有容器操作,監測是否有黑客入侵的跡象。入侵行為規則主要包括兩大類:命令執行類和文件、數據讀寫類。
2)智能威脅檢測
采用機器學習算法,對容器操作行為經過一定時段的學習,形成正常操作行為模型,通過模型實時監測檢測容器操作行為,及時發現超出模型外的威脅行為。操作行為模型主要包括:容器操作行為模型、進程信息模型、文件信息模型、網絡信息模型、配置信息模型。
智能威脅檢測主要采用基于Apriori算法的容器安全檢測方法,能夠準確檢測容器中的未知異常行為,方法步驟如圖3所示:
如圖3所示,智能威脅檢測主要包括以下步驟:
①數據的獲取及特征提取。獲取進程數據并提取特征,包括獲取正常行為數據集及測試行為數據集,本發明中獲取程序運行期間,各種不同程序行為產生的系統調用序列,用于不同的容器行為存在大量循環和重復的操作。因此,會存在大量的重復子序列,設置相應的閾值T1,將超過閾值T1的重復子序列作為該行為的特征。
②基于Apriori算法的特征建模。抽取正常的容器行為的特征,通過Apriori算法進行挖掘,產生正常的行為模式,然后獲取測試數據特征,進行挖掘,將測試行為數據集中挖掘出的模式與正常行為模式比較,設置相應的閾值,當距離達到一定的閾值時,判斷該行為為異常行為。
③確定風險等級。根據距離的大小,設置相應的風險等級,本發明中可將風險等級設置為低、中、高。
④異常行為報警。當發現存在異常的容器行為時,進行報警,并根據風險等級設置報警級別,本發明中根據風險等級將報警級別設置為提示、異常、緊急。
⑤異常行為處理。技術人員在收到報警信息后,根據不同的風險等級,對該行為進行不同的處理。
3)容器運行服務威脅檢測
利用防御容器中應用掃描模塊,一方面通過容器平臺API獲取集群中的服務信息,另一方面,通過調用容器集群內部DNS插件,以域名方式訪問集群內的服務,從而完成容器內的服務及應用的自動發現。隨后制訂掃描任務,對服務所對應的域名和端口進行掃描:使用爬蟲模塊對應用程序進行頁面抓取以獲取頁面文件與目錄信息;通過端口掃描模塊,獲取所對應的服務以及版本信息。之后通過指紋識別模塊識別出應用程序的名稱以及版本信息,將以上信息收集后交由通用漏洞檢測模塊以及exploit檢測模塊檢測應用程序漏洞,最終通過漏洞匯總模塊將發現的應用程序漏洞入庫。
4)威脅告警
對入侵行為檢測及智能威脅檢測所發現的惡意行為,立即觸發告警,郵件通知相關安全管理、維護人員,并且將告警轉發至集中的告警監控平臺。
5)關聯分析
基于圖形可視化和列表形式展現對象關聯關系,為安全分析人員、運維人員快速定位威脅范圍提供強有力的工具支撐。
3部署網絡探針收集、抓取容器網絡連接,實現容器網絡安全可視化分析以及容器之間的網絡隔離及漏洞掃描,對容器網絡全面安全防護
通過網絡探針在網絡收集層收集網絡鏈接信息,并以圖形可視化方式直觀展現各容器、POD、節點及服務之間的關聯關系。同時,采用容器網絡隔離技術,根據業務實際安全需求,制訂容器之間ACL訪問控制策略,阻止容器之間需求之外的訪問通道,減小容器之間橫向滲透的攻擊面。通過雙向控制、訪問可視化、訪問過程溯源等功能,基于容器、容器組和業務視角對容器平臺進行超細粒度的雙向網絡訪問控制,能夠監控非法訪問軌跡并溯源整個非法行為的訪問過程。
容器網絡可視化主要包括:
1) 網絡探針層
通過eBPF(一種用于內核追蹤、應用性能監控、流控的工具)或Conntrack(系統命令)工具抓取網絡連接信息,通過容器平臺的API獲取服務信息,從/proc獲取進程信息,將以上抓取的網絡信息發送到網絡收集層。
2) 網絡收集層
定時從各個網絡探針獲取網絡信息,將以上網絡信息拍攝快照,入庫。
3) 網絡繪制層
網絡鏈接繪制層通過分析網絡快照信息,繪制出容器、服務、POD、進程、節點之間的連接關系。
平臺的網絡隔離能力實現了網絡的微隔離,支持東西向網絡微分段、隔離策略管理,從而遏制網絡威脅橫向擴散,減少損失。容器網絡隔離以隔離的對象進行分類,主要包括:
1)租戶隔離
租戶之間默認禁止直接通信,可以通過配置RBAC、Pod安全策略、網絡策略、準入控制以及運行時沙箱等手段,實現按需放通租戶間的訪問通道,有效避免網絡、容器資源的濫用。
2)節點隔離
節點之間默認網絡互通,可以配置互通策略,將業務按策略調度到所需的節點上,策略通過匹配Pod的Label值實現。
3)Pod隔離
配置Pod間的訪問規則,阻斷或者允許來自其他命名空間的所有流量,阻斷或者允許來自外部客戶端的流量等。
容器隔離能力一方面基于Iptables技術實現的對Docker網絡通信的細粒度控制,可以通過Iptables規則限制容器通信的IP和端口[5]。另一方面也實現了基于NetworkPolicy的訪問控制,可以按照業務需求,設置不同的namespace、不同Pod的流量出入站策略,阻止攻擊者在內網的橫向移動,極大減少攻擊面和業務風險,減少安全運維成本。
4 采用基于規則模板的自動化合規檢測方法對容器平臺進行合規檢測,以高效方式滿足等保2.0、行業規范的基線合規要求
依據行業監管相關指導文件、規范,容器云平臺相關行業標準以及國家等保2.0要求和國際流行CIS標準等,制訂對應安全檢測規則模板,并實現自動化的容器合規檢測、分析引擎,實現容器平臺安全合規基線配置核查以及平臺相關開源組件的安全漏洞掃描。
研究團隊研究并采用了基于規則模板的自動化合規檢測方法,通過適配規則模板語法要求,針對不同檢查項所對應的檢查命令或腳本進行靈活的模板配置,使其適用于不同合規項的不同要求。一方面降低了專業性的要求,能夠使普通的運維人員也可以參與到對檢查項及檢查規則制訂與維護的工作中來,提高了制訂、維護配置核查規則的效率;另一方面,也更加便于對檢查執行的過程進行排錯,提高了檢查項、檢查規則的復用性。
容器合規基線檢測內容主要包括如下方面:
1) 容器合規檢查
實現容器合規檢查,從主機安全配置、守護進程配置、守護程序文件配置、容器鏡像和構建文件、容器運行時保護、安全操作、集群配置等方面對容器進行合規檢查。
2) K8S集群合規檢查
容器平臺負責管理所有容器,一旦發生安全性問題,則會造成其大量容器、應用服務面臨安全威脅。根據平臺配置合規性相關要求,對容器平臺進行配置合規檢測,及時檢測發現配置不當的情況,及時發現、及時處理。
3) 主機節點合規
從Docker守護進程安全配置、Docker守護程序文件權限配置、容器運行安全、Docker安全選項、Dockerswarm集群安全配置等方面進行檢測。
4) 編排文件合規
在K8S系統中,各類資源均需要通過編排文件構建,編排文件編寫是否規范,將直接影響到構建資源的安全性、規范性與可用性。對于部署資源所編寫的編排文件,系統支持自動接?入,自動掃描,根據掃描結果指出編排文件中存在風險或不規范的配置項,并給出修復建議,保障資源合規且安全地創建。
參考文獻:
[1] 王駿翔,郭磊.基于Kubernetes和Docker技術的企業級容器云平臺解決方案[J].上海船舶運輸科學研究所學報,2018,41(3):51-57.
[2] 任蘭芳,莊小君,付俊.Docker容器安全防護技術研究[J].電信工程技術與標準化,2020,33(3):73-78.
[3] 王歡.構建全生命周期的容器安全防護體系[J].數字通信世界,2020(11):152-153.
[4] 趙立農,曹莉,曾藝驍.Docker鏡像安全深度掃描[J].通信技術,2021,54(2):457-463.
[5] 王鵑,胡威,張雨菡,等.基于Docker的可信容器[J].武漢大學學報(理學版),2017,63(2):102-108.
【通聯編輯:代影】