汪 敏,勞志修,朱 劍,黎國光,趙 磊,林 源
(1.自然資源部國土空間大數據工程技術創新中心廣西分中心,南寧 530028;2.廣西壯族自治區自然資源信息中心,南寧 530028)
隨著以虛擬化、容器化為代表的云計算環境快速發展,越來越多的政府部門逐步將業務遷移至云端,政務信息化系統呈現傳統服務器技術、虛擬化技術、云原生技術等綜合要素構建的云環境新面貌。同時,混合的形態也帶來了區別于傳統網絡架構的安全風險。例如,云環境的邊界隔離措施失效、主機防護效率低下、云架構持續開發與運行模式不安全等問題。
廣西自然資源云在架構不斷更迭的過程中,通過引入基于軟件定義網絡(software defined network,SDN)的“東西向”流量定向檢測措施,在虛擬化環境中構建了虛擬網絡邊界,實現了虛擬主機之間的訪問控制、主機加固和應用層攻擊防護。本文從虛擬化和容器技術各自的特點出發,分別針對傳統基于虛擬機管理器(Hypervisor)的虛擬化架構及容器的云原生架構,探討存在的安全風險,提出一種行之有效、覆蓋相對完整的安全防護思路,并進行了具體實踐。
根據不同的應用需求,政務云往往會采用不同的云計算技術部署業務系統。例如,對于需求變更頻繁、功能迭代周期短的各類小型業務,基于容器技術的云原生架構敏捷、高彈性、資源池特點實現應用的快速開發和部署上線。基于Hypervisor 的虛擬化則可以提供完整的操作系統層[1],方便部署與操作系統關聯性強(如.NET 需要大量調用操作系統的動態鏈接庫)、邏輯較復雜、進程關聯性強、中央處理器響應要求高的一些業務。這些虛擬化技術本質都是將原有獨立的物理服務器資源虛擬池化,使得計算資源高度集中、高效利用,但也帶來了區別于傳統業務部署模式的安全風險。
(1)模糊的安全邊界。傳統業務部署模式的安全模式根據業務特點,基于物理交換機劃分虛擬局域網(virtual local area network,VLAN)、防火墻劃分安全區域。對每個安全區域采取物理安全設備隔離保護。虛擬化技術引入后,形成了邏輯的虛擬化網絡,虛擬機之間、容器之間互訪并不經過外部而直接通過虛擬化技術提供的邏輯交換機完成,傳統的物理安全設備不能部署到邏輯交換機,導致傳統的防護手段失效。因此,自然資源云作為云環境的一種行業分支,需要一種全新手段將邏輯的安全設備插入邏輯交換機,對虛擬化網絡進行安全隔離。
(2)臃腫的主機防護。早期傳統的虛擬化防護方式在每個虛擬機部署殺毒軟件客戶端。但每個防病毒軟件客戶端會消耗同一個物理主機的資源,當對所有防病毒軟件客戶端下發全局殺毒策略時,這種資源消耗更嚴重,會直接影響整個虛擬化平臺的使用效率。這種方式并不適合部署較大數量虛擬化主機的數據中心或云環境。
(3)云原生架構安全風險。容器技術與Hypervisor 存在本質的技術差異。容器技術會帶來新的安全風險,例如,不安全的鏡像[2]引發供應鏈攻擊,云原生組件之間應用程序接口(application programming interface,API)訪問不受控制,容器編排過程存在不安全配置。
(4)虛擬化宿主機自身的風險。虛擬化基礎組件、容器技術自身存在安全缺陷,容器技術一直存在容器逃逸[3]的問題。這些安全風險不僅影響宿主機自身,還導致攻擊行為在虛擬機主機之間擴散。宿主機的防護主要依賴傳統的防護措施,如入侵防御系統(intrusion prevention system,IPS)虛擬補丁、防火墻訪問控制等,這些內容不在本文的討論范圍。
Hypervisor 虛擬化環境下的安全防護重點在于邏輯環境中構建網絡邊界,實現虛擬機之間的訪問控制及應用層面的虛擬機防護。
網絡層面主要關注虛擬機之間的互訪流量,這一般被稱為“東西向”網絡流量。防護技術的核心點在于對“東西向”網絡流量進行不同方式的引導,實現虛擬機內部網絡流量的可視化與訪問控制。2017 年前,較常用的方法通過策略路由將虛擬機內部的流量引導至外部物理安全設備,如虛擬以太網端口聚合器(virtual ethernet port aggregator,VEPA)技術[4];流量經過外部物理安全設備分析過濾后返回虛擬機內部。這種方式可以對不同網段的虛擬機流量進行過濾。對于同一個網段內互訪的虛擬機,流量只存在于虛擬網絡的邏輯交換機,該方式無法對流量進行外部引導,所以只是一種不完全的虛擬化安全解決方案。
近年來,隨著SDN 的不斷發展,對流量的重定向成為一種更便捷有效的方法。SDN 控制器作為整個SDN 網絡的大腦,負責對全網數據進行轉發和策略編排。支持覆蓋(overlay)網絡的邏輯交換機是具體的數據轉發設備,邏輯交換機基于OpenFlow 協議接收控制器策略并形成流表[5],能夠改變網絡數據包經過的網絡路徑。旁路部署于虛擬化網絡中的一個或多個安全設備實例,形成網絡層安全防護服務鏈,其運行邏輯如圖1所示。
在圖1 中,用戶首先設置訪問控制列表(access control list,ACL)規則,定義需要重定向至安全防護服務鏈的流量。控制器通過OpenFlow 協議將ACL 下發至邏輯交換機,形成轉發表項。當虛擬機流量匹配ACL 規則時,業務邏輯交換機將轉發流量通過overlay 隧道協議進行封裝并加上本地數據報頭,將其發送給安全服務鏈所在邏輯交換機。拆解overlay 數據報頭后,安全設備對流量進行過濾并調換源地址和目標地址,將其重新返回業務邏輯交換機并發送至目標虛擬機。
對于主機層面,本研究在廣西自然資源云的虛擬化環境中部署“無代理防病毒”[6],對操作系統進行病毒掃描與防護。雖然不同的虛擬化存在不同的實現技術,但是平臺隔離及查殺方式大同小異。通常整個無代理病毒防護包括基于SDN技術的控制器、虛擬化平臺文件自檢組件(guest introspection,GI)、虛擬機監控工具的GI 驅動、第三方集中管理的虛擬化防病毒組件4 個組件。無代理防病毒工作流程如圖2 所示。

圖2 無代理防病毒工作流程
(1)第三方防病毒管理中心在SDN 控制器注冊防病毒安全虛擬機模板,控制器通過與虛擬化管理中心API 自動虛擬化集群下發、部署基于模板的防病毒安全虛擬機,并負責將病毒庫同步到所有的防病毒虛擬機。
(2)受保護的虛擬機安裝了GI 驅動,通過驅動實時收集虛擬機內的文件活動(如新建、修改、運行等),并且通過虛擬機通信接口(virtual machine communication interface,VMCI)傳輸到宿主機內核(VMKernel),VMKernel 端口用于管理、傳遞虛擬化環境中的所有非虛擬機流量。
(3)GI 組件從VMkernel 獲取受保護的虛擬機文件活動信息,并通過邏輯交換機將信息傳輸到防病毒虛擬機。
(4)防病毒虛擬機病毒庫與GI 報告的文件活動進行對比,匹配時防病毒引擎發送查殺命令(一般阻斷文件的生成、運行)到宿主機內核。
(5)VMkernel 通過虛擬機通信接口VMCI下發查殺命令并發送到受保護虛擬機的GI 驅動,由GI 驅動完成具體的文件處理工作。
Hypervisor 自身的安全性保障也是必須考慮的內容,通常會采用虛擬可信平臺模塊(virtual trusted platform module,vTPM)[7]。
區別于Hypervisor 技術,基于容器技術的云原生架構具有持續集成、持續交付的特點。在持續開發的過程中,鏡像會不斷打包、更新、保存,惡意攻擊者很容易在打包鏡像中插入惡意的程序、代碼段。基于零信任的原則,相關人員必須關注鏡像構建到鏡像實例運行的每個環節安全性。云原生架構安全防護如圖3 所示。

圖3 云原生架構安全防護
構建階段主要對容器鏡像的生成、傳輸、保存使用等環節進行保護。
(1)基于鏡像構建文件(Dockerfile)構建、生成鏡像文件。Dockerfile對于用戶是完全透明的,所有指令都是可控且可回溯的。在Dockerfile 構建文件中,只安裝必要的軟件包,避免過多程序導致攻擊面增加。盡量使用安全的Dockerfile 操作命令,開發人員注意不要存儲密碼、令牌、密鑰和用戶機密信息,即使這些數據在容器創建后被刪除也存在風險隱患。
(2)結合數字證書確保鏡像傳輸與訪問的安全性。為方便開發人員能夠隨時構建、測試鏡像,鏡像倉庫通常放置于互聯網。由于互聯網的不可靠性,本研究團隊采用通用串行總線秘鑰(universal serial bus key,USB Key)證書加密方式連接倉庫,確保數據在互聯網傳輸的機密性。USB Key 還能夠對訪問人員進行身份驗證,避免弱口令問題及非授權訪問。限制鏡像的使用權限,尤其是嚴格限制倉庫內鏡像文件的寫權限,防止惡意攻擊者插入惡意代碼。開發人員構建鏡像后必須對鏡像進行數字簽名,下載人員在拉取鏡像前通過公鑰證書驗證數字簽名的有效性,防止獲取已被惡意篡改的鏡像。
(3)鏡像安全掃描。在鏡像生成和容器創建前,對鏡像文件進行風險掃描。區別于傳統業務系統,鏡像是經過多層打包形成的文件,逐層進行惡意程序檢測、敏感配置檢測。這里可以采用基于模糊哈希、YARA 規則、機器學習的文本分類算法等檢測方式[8]。此外,還需要對鏡像文件構建的歷史命令進行定期掃描,尤其對構建中的高危命令進行標記并告警。
在運行階段,容器運行單元(Pod)運行網絡安全及編排系統的合規性配置是云安全管理團隊需要重點解決的問題。
(1)網絡微隔離與入侵檢測聯動。與Hypervisor 虛擬化技術類似,容器技術環境需要對不同的Pod 進行網絡微隔離,限制非授權訪問。云原生架構具有一套網絡策略(network policy)規范,能夠定義多Pod 及與其他網絡端點間的通信規則。云原生架構中常用的網絡插件都支持網絡策略,能夠持續對網絡策略對象的增刪改查做出響應,并在宿主機上生成對應的互通協議(interworking protocol,IP)地址清單(IP Tables)規則,實現Pod 之間的訪問控制。通過端口鏡像方式將流量鏡像到入侵檢測安全容器節點并進行攻擊檢測分析,當發現流量存在攻擊行為時,安全容器會聯動生成網絡策略規則,并將其發送至網絡插件生成防火墻的IP 地址清單規則[9],快速阻斷失陷容器。此外,云原生架構也支持overlay的SDN 網絡。
(2)安全編排。在云原生環境中,容器的編排系統處于核心地位,在各類微服務架構項目中支撐其核心業務。云原生安全提倡在應用程序生命周期的早期階段引入安全工具,通過安全測試盡早識別合規問題、錯誤配置等,盡早發現安全問題[10]。Kubernetes 社區提供Pod 安全管理規范[11],定義了一組必須運行的條件及相關字段的默認值,用于控制Pod 規范及管理安全。相關人員可以參考此規范建立適合實際環境的計算資源配置基線,還可以借助第三方編排掃描工具對容器集群中的編排文件進行合規掃描,掃描出環境中不合規配置。系統管理員可以依據修復建議進行合規的編排文件配置。
廣西自然資源云系統既采用了Hypervisor 虛擬化技術,又使用了云原生的服務架構。云原生架構主要應用于不動產登記系統,面向每個市、縣快速部署獨立的Pod,一個或多個Pod 支撐一個市或縣的不動產業務訪問。傳統業務系統如電子政務系統、地理信息系統云管理平臺則部署在Hypervisor 虛擬化平臺,廣西自然資源云架構如圖4 所示。

圖4 廣西自然資源云架構
廣西自然資源云的Hypervisor 虛擬化云平臺通過部署SDN 控制器實現一系列邏輯網絡設備和服務,如邏輯交換機、第三方安全服務等。SDN 控制器隱藏了底層網絡細節和配置等信息,用戶只需簡單配置部署安全服務和ACL 規則即可快速地完成部署。標準的SDN 控制器能夠支持基于內核的虛擬機(kernel-based virtual machine,KVM)、開源云計算管理平臺(open source cloud computing infrastructure,OpenStack)等虛擬化平臺,在實踐中可以概括為以下幾個步驟。
(1)第三方網絡安全虛擬機(network security virtual machine,NSVM)模板注冊到SDN控制器,控制器通過虛擬化管理中心的API 將NSVM 部署到集群的每個宿主機。
(2)在SDN 控制器上配置邏輯交換機開放虛擬交換標準(Open vSwitch,OVS),OVS 支持通過SDN 控制器編程實現大規模網絡自動化及OpenFlow 協議轉發。通過OVS 分別創建業務邏輯交換機和管理邏輯交換機。
(3)在SDN 控制器中定義overlay 覆蓋網絡,綁定NSVM 實例,形成安全服務鏈。
(4)配置需要重定向的對象及安全服務鏈,形成ACL 規則。SDN 控制器依據ACL 規則下發至OVS,形成引流的流表。
(5)網絡中匹配的IP 對象進入OVS 后會立即觸發流量重定向,通過通用網絡虛擬化封裝(generic network virtualization encapsulation,GENEVE)隧道協議建立的overlay 網絡傳輸至NSVM 并進行網絡層與應用層的訪問過濾。
(6)主機層面通過安裝虛擬機GI 驅動并結合安全服務鏈,完成文件病毒查殺。
(7)部署完成后,管理員根據資產屬性、風險、業務性質等因素劃分虛擬安全域。
建立不同的安全域后,系統管理員可以根據不同的安全域配置訪問控制,并啟用應用層防護IPS 過濾。每個宿主機都有NSVM,安全策略通過安全管理中心統一下發到所有宿主機的NSVM,虛擬機遷移后也能實現一樣的防護效果。整個部署對于用戶來說完全是無感知的,并且不影響原有網絡的路由走向和拓撲結構。管理員通過安全管理中心還能夠直觀地了解業務或用戶被黑客入侵或控制、業務漏洞威脅、萬維網服務器被植入黑鏈等情況,并采取有效的防護措施。這種功能抽象、快速部署的特性極大提升設備的上線速度和安全管理員的工作效率。
目前,基于Hypervisor 的虛擬化安全防護技術基本都需要結合虛擬化基礎架構形成具體方案,存在一定的局限性。為了簡化用戶操作,這些解決方案屏蔽了過多的底層細節,部署完成后一旦發生故障,用戶很難定位故障原因。下一步,本研究希望能夠尋求一種標準化、適用于主流虛擬化基礎架構的開源安全組件,使得管理人員能在充分了解底層架構的基礎上更好地對虛擬化安全進行部署與管理。
基于新興容器技術的云原生架構雖然具有相關的安全防護方法和思路,但是落地的解決方案仍處于初級應用階段,涉及技術底層的很多安全細節仍待解決。下一步,研究團隊將更深入學習云原生架構及系統底層實現原理,從中不斷總結可能的安全風險點,并進行針對性加固。