以Docker為代表的容器技術,直接運行于宿主機操作系統內核,因此對于容器安全,很多人會有著這樣的疑問:EDR(Endpoint Detection and Response)等主機安全方案,能否直接解決容器安全的問題?針對疑問,綠盟君將結合容器安全的建設思路,簡要分析其與EDR之間的一些異同。
一、概述
近兩年,隨著容器技術越來越多的被大家所青睞,容器安全也逐漸得到了廣泛的關注和重視。對于容器環境,或者是容器云,其本質是云計算的一種實現方式,我們可以將其稱為PaaS或者CaaS。因此,其整體的安全建設思路,是遵循云計算安全架構的。
容器云環境的安全建設,如果暫時拋開物理安全的話,可以粗略分為兩個主要方面:一方面是容器云內部的安全建設,這包括基礎設備的安全、東西向網絡的安全、管理平臺的安全、虛擬化安全以及數據安全等;另一方面就是容器云內外之間的網絡通信安全,也就是通常講的南北向網絡安全。
圖1 容器云安全建設思路
這樣,對于容器云的安全方案,可以分別從這兩個方面進行設計:對于南北向的網絡安全,可以通過安全資源池引流的方式,實現相應的安全檢測與防護,這也是很多安全廠商在云安全解決方案上的主要實現方式。對于容器云內部的安全,可以通過特定的容器安全產品進行實現。最后將這兩部分統一接入云安全的集中管理系統,進行統一的安全管理和運營。
二、容器安全的核心問題
早在2018年11月,綠盟科技發布《容器安全技術報告》,報告中詳細闡述了容器環境可能面臨的安全威脅以及相應的處置方式。這里我們將容器安全的核心問題做個簡單的回顧和總結。
概括來說,容器/容器云安全,可以包括以下四個類別:
第一,就是容器環境基礎設施的安全性,比如主機上的安全配置是否會影響到其上面運行的容器,主機上的安全漏洞是否會影響到容器,主機上的惡意進程是否會影響到容器,容器內的進程是否可以利用到主機上的安全漏洞等。
第二,是容器的鏡像安全,這里包括鏡像中的軟件是否存在安全漏洞,鏡像在構建過程中是否存在安全風險,鏡像在傳輸過程中是否被惡意篡改等。
第三,是容器的運行時安全,比如運行的容器間隔離是否充分,容器間的通信是否是安全的,容器內的惡意程序是否會影響到主機或者其它容器,容器的資源使用情況是否是安全的等。
第四,是整個容器生態的安全性,比如Docker/Kubernetes自身的安全性如何,ServiceMesh/Serverless對容器安全有什么影響,容器中安全密鑰的管理和傳統環境有什么不同,容器化后的數據隱私保護跟傳統的數據隱私保護是否一致等。
圖2 容器安全的核心問題
從上述容器安全的核心問題來看,鏡像的概念相對來說是容器所特有的,因此對于容器的鏡像安全,EDR是一定不會覆蓋的。另外就是容器的生態安全,這塊更多的是容器相關的技術棧帶來的安全機遇和挑戰,因此典型的EDR產品肯定也是無能為力的。
行文至此,開篇所提出的問題“EDR等主機安全方案,能否直接解決容器安全的問題?”就已經有了初步的答案:肯定是不可以的。
首先,來看一下,當前部分廠商專門針對容器環境所提供的安全產品和安全服務都能提供什么樣的安全能力,以及技術架構是什么樣的。
三、容器安全產品/服務
首先以Google GCP(Google Cloud Platform)所提供的容器安全(Container Security)服務能力為例,具體分析當前容器安全產品/服務主要實現了什么樣的安全能力。
1Google Container Security
Google在其GCP上保障容器環境的安全時,主要分為了三個方面:
(1)基礎架構安全。主要是指容器管理平臺能夠提供的基本安全功能,確保開發者擁有所需的工具來安全的構建容器化服務,這些功能通常內置于Kubernetes等容器編排系統中。比如使用IAM來管理對項目的訪問權限、使用基于角色的訪問權限控制(RBAC)功能來管理對集群和命名空間的訪問權限、日志審計、網絡隔離、基礎設施ISO合規等。
(2)軟件供應鏈安全。主要就是前文所提到的容器鏡像安全,包括安全的基礎鏡像維護、CVE漏洞掃描、鏡像準入檢測等。
(3)運行時安全。確保安全響應團隊能夠檢測到環境中運行的容器所面臨的安全威脅,并做出響應。這些功能通常內置于安全運營工具中。比如Google通過集成了Stackdriver實現日志分析、通過集成合作伙伴Aqua Security、Capsule8、StackRox、Sysdig Secure、Twistlock等安全產品,實現異常活動的檢測、使用容器運行時沙盒gVisor更好的隔離容器。
下面以Aqua Security為例,簡要分析其所實現的安全能力以及技術架構。
2Aqua Security
Aqua Security是一家2015年成立的以色列容器安全平臺廠商,在DevOps、微服務等業務平臺中,為容器化環境提供先進的安全方案。
2.1主要安全能力
(1)漏洞管理。掃描容器鏡像和無服務器功能,查找已知的漏洞、嵌入的密鑰、配置和權限問題、惡意軟件和開源許可。
(2)運行時防護。通過對鏡像的準入控制,防止不受信任的鏡像運行,并確保容器保持不變,防止對運行中的容器進行任何更改。可以基于自定義策略和機器學習的行為配置文件,實時監視和控制容器的活動。
(3)密鑰管理。在運行時可以安全的將密鑰傳遞給容器,在傳輸和存儲時進行加密,將它們加載到內存中,而不需要在磁盤上進行持久化存儲,在磁盤上它們只對需要它們的容器可見。
(4)容器防火墻。自動發現容器間網絡連接,并得到參考的上下文防火墻規則,通過白名單確定合法的連接,阻止或警告未經授權的網絡活動。可以與流行的網絡插件(如Weave或Flannel)和服務網格(如Istio)無縫連接。
(5)合規和審計。PCI-DSS、HIPAA之類的法規合規性檢測,以及NIST、CIS的最佳實踐檢測。提供細粒度事件日志記錄,并且集成多種日志分析和SIEM工具,如Splunk、ArcSight等,可以集中管理審計日志。
2.2實現架構
如下圖所示是Aqua Security官方提供的系統參考架構圖,結合另外一款容器安全產品的參考架構,可以看出,整個系統基本都是由平臺和探針兩部分組成。
在平臺側,一方面實現相關的安全管理控制的能力,另一方面實現數據相關的分析和智能化能力。
在探針側,則主要通過在每個容器運行的主機上部署一個安全探針,通過這個探針進行相關的安全策略執行以及相關數據的采集。這個分布式的探針,通常會有兩種體現形態,一種是以特權容器的方式融合在容器環境的管理平臺中,另一種是主機安全常見的部署Agent方式。從本質上來講,兩種形態只是部署和管理方式有所區別。
圖3 Aqua Security 架構圖
圖4 某容器安全產品架構圖
四、EDR
既然現有的EDR產品不能直接用來解決容器安全的所有問題,那么對于容器環境面臨的前述安全問題,EDR能否解決其中的一部分呢?
先看一下EDR的定義是什么?典型的EDR產品又能做些什么?
Gartner對于EDR給出了如下的定義:
EDR tools provide an ability to analyze and search detailed, current and historic endpoint data for traces of malicious activity and bring the high-risk data to an analyst's attention with additional capabilities to actively respond to those activities if necessary.
EDR工具集提供一種分析/檢索更詳細/實時/歷史的終端數據能力,進而發現惡意活動的痕跡,讓安全分析師關注高風險的數據,并且在必要時積極的進行響應。
Gartner的這個定義,看上去似乎有些抽象,簡單一點的解釋就是:通過收集終端上的各種數據,在這些數據中分析并發現惡意的活動,進而采取相應的防御手段。那么都會收集什么樣的數據?收集到了這些數據又能發現什么樣的惡意行為?
下面從EDR典型的設計架構開始,進行具體的解釋。
1典型架構
下圖展示了Gartner給出的典型EDR架構,其主要包括兩個部分:一部分是部署在待防護終端上的代理(Agent),這里的終端既可以是虛擬化的云主機,也可以是物理的服務器主機,還可以是辦公的PC機,當然甚至也可以是更輕量的IoT終端設備(跟容器的可運行環境基本是一致的);另一部分則是控制平臺,這里的控制平臺既可以通過本地的集中化方式部署實現,也可以部署在云端,或者是采用云端和本地化混合的部署方式,不同的安全能力部署在不同的位置。
圖5 EDR系統典型架構
2代理都收集什么樣的數據?
(1)終端設備的基本元數據。包括CPU、內存、網卡(IP、MAC)、操作系統、安裝軟件、硬件數據、Device數據等。
(2)網絡數據。包括終端設備上的DNS和ARP表以及其它實時網絡數據、開放的端口以及相關的進程數據、終端的網絡連接數據、可訪問終端的URL數據等。
(3)運行時數據。包括終端上運行的進程/線程以及其對應的元數據、用戶登錄注銷數據、進程間通信(IPC)數據、進程行為數據(例如數據讀寫)等。
(4)存儲數據。文件(通常只包含特定的文件或者可執行文件)以及文件元數據(比如文件名/大小/類型、校驗和等)、文件變更信息、syslog、主引導記錄(MBR)信息等。
(5)其它數據。比如加載的DLL、激活的設備驅動程序、已加載的內核模塊、CMD或者PowerShell歷史命令等數據。
3EDR能發現什么惡意行為?
基于上述收集到的數據,EDR通常可以應用于以下安全場景:
(1)主機風險檢測。結合多種安全基線與規范要求,通過賬戶、網絡、進程、系統配置等多維度風險檢測,系統全面的發現不符合安全管理規范的主機。
(2)可疑行為檢測。通過實時監控主機關鍵的風險入口,結合威脅情報以及相關安全規則,對端口掃描攻擊、暴力破解攻擊、惡意腳本攻擊、系統漏洞攻擊、Webshell攻擊等可疑行為進行高效快速的檢測發現。
(3)威脅狩獵。平臺收集的各種層面的數據,可以提供關于主機健康狀況的大量信息。通過正確的篩選、挖掘,利用這些數據可以發現、追蹤到更多潛在的威脅行為,主動的進行威脅捕獲。
(4)阻止惡意行為。例如主機的微隔離,通過控制主機的進出站流量,實現對異常主機的隔離。
4對比容器安全,有哪些無法滿足?
根據前文對于容器安全核心問題的描述,以及EDR的功能概述,除了容器的鏡像安全和容器生態安全之外,在主機安全以及容器運行時安全方面,EDR確實能夠不同程度的提供相關的安全檢測和防護能力。
相同點:
(1)從功能層面,容器安全和EDR都要求實現其對應主機的安全,包括資源層面、權限層面、網絡層面等多個方面,因此,對于容器安全來說,EDR產品可以100%的進行功能的復用,保障容器環境的主機安全。
(2)從技術層面,在二者的主流技術實現路徑上,均采用了“平臺+探針”的技術架構,可以以最小的成本開銷,實現安全能力的復用和整合。
不同點:
二者之間的不同點,主要來源于容器環境利用namespace和cgroup做了一層資源的隔離,因此:
(1)當前EDR所監測的數據,僅限于主機層面,對于容器內部的行為和活動,是沒有有效的進行關聯的,比如容器內進程行為的監控、容器內用戶權限的監控等。
(2)在網絡安全上,當前EDR更關注于主機的進出站網絡流量,也就是主機物理網卡上的流量,而在容器環境中,還有相當大比例的網絡通信存在于主機內部的容器之間,因此,這種容器間的東西向網絡安全防護,當前EDR也是無法實現的。
(3)權限管理。容器環境之上,通常運行的基于微服務架構的業務應用,因此有著復雜的權限管理以及訪問控制策略,雖然這些通常是由容器業務平臺進行設計和實現,但是作為安全服務,是需要有能力對其進行監控和異常檢測的。而EDR在這方面幾乎還只停留在主機資源的權限管理上,這一點也是無法滿足需求的。
(4)對于容器內應用的密鑰管理、密鑰隱藏等容器業務強相關的安全需求,EDR也是無法滿足的。
五、總結
本文重點圍繞“EDR等主機安全方案,能否直接解決容器安全?”這個問題,分別從容器安全的幾個核心問題、當前容器安全產品和服務所提供的安全能力,以及EDR產品與容器安全需求的吻合度這幾個方面來進行了具體論述。
考慮到容器環境在技術實現上的特點,通過EDR實現容器安全確實有著一定的優勢。但是考慮到容器環境又有著很多特殊性,在安全上還有很多特定的需求,因此,直接利用EDR去應對容器安全的問題,還是遠遠不夠的。
比較好的解決辦法就是,結合各家之所長,一方面有效的利用EDR在主機安全上可以做到的全面、深入的安全檢測能力;另一方面,結合容器環境特定的需求,實現安全能力的有效擴展和延伸。這樣,就可以盡可能高效的實現容器環境的安全防護了。
(審核編輯: 智匯小新)
分享