快速上手雲原生安全平臺 NeuVector

Rancher發表於2022-04-09
作者簡介
萬紹遠,CNCF 基金會官方認證 Kubernetes CKA&CKS 工程師,雲原生解決方案架構師。對 ceph、Openstack、Kubernetes、prometheus 技術和其他雲原生相關技術有較深入的研究。參與設計並實施過多個金融、保險、製造業等多個行業 IaaS 和 PaaS 平臺設計和應用雲原生改造指導。

前 言

NeuVector 是業界首個端到端的開源容器安全平臺,唯一為容器化工作負載提供企業級零信任安全的解決方案。NeuVector 可以提供實時深入的容器網路視覺化、東西向容器網路監控、主動隔離和保護、容器主機安全以及容器內部安全,容器管理平臺無縫整合並且實現應用級容器安全的自動化,適用於各種雲環境、跨雲或者本地部署等容器生產環境。

此前,我們介紹了 NeuVector 的安裝部署、高可用架構設計和多雲安全管理,本篇將演示 NeuVector 的基礎功能,主要包括:

  1. 安全漏洞管理
  2. 合規性檢查和機密性檢查
  3. 策略管理
  4. 准入控制策略
  5. 動態安全響應
  6. 行為監控

專案地址:https://github.com/neuvector/...

本文主要基於 NeuVector 首個開源版 NeuVector:5.0.0-preview.1 進行介紹。

1.安全漏洞管理

NeuVector 整合了 CVE 漏洞庫,每天自動更新,支援對平臺(Kubernetes)、主機、容器、映象倉庫進行安全漏洞掃描。

配置自動掃描,當平臺漏洞庫有更新,或有新的節點和容器加入時,會自動進行掃描。

針對不同漏洞,有不同的風險級別提示、對應的元件版本提示和修復版本提示。

針對每個漏洞,NeuVector 可以展示對應的漏洞釋出時間、漏洞影響範圍、對應的元件影響版本。

對漏洞進行過濾,檢測是否已經修復,以及漏洞等級、釋出時間等。

1.1. 配置對接映象倉庫漏洞掃描

支援對接多種映象倉庫如 docker-registry(harbor)、JFrog Artifactory、Nexus 等。

以對接 Harbor 為例。配置連線方式,填寫連線方式和認證資訊,過濾器表示需要掃描的範圍,如掃描 uat 專案下全部映象則 uat/*,如果需要掃描整個 Harbor 內全部映象則 * 。測試設定可以驗證編寫的表示式的關聯情況。

2.合規性檢查和機密性檢查

NeuVector 的合規性稽核包括 CIS 基線測試、自定義檢查、機密稽核以及 PCI、GDPR 和其他法規的行業標準模板掃描。

“型別”表示對應的那個基線標準,如 K.4.1.1 對應 Kubernetes CIS 基線測試,4.1.1 容器對應的基線標準為 D 開頭,映象對應的基線標準為 I 開頭。

注:GDPR (General Data Protection Regulation,《通用資料保護條例》)為歐盟條例。

在合規性檢查中也會檢查是否存在密文洩漏情況。

包括如以下密文洩漏情況:

General Private Keys
General detection of credentials including 'apikey', 'api_key', 'password', 'secret', 'passwd' etc.
General passwords in yaml files including 'password', passwd', 'api_token' etc.
General secrets keys in key/value pairs
Putty Private key
Xml Private key
AWS credentials / IAM
Facebook client secret
Facebook endpoint secret
Facebook app secret
Twitter client Id
Twitter secret key
Github secret
Square product Id
Stripe access key
Slack API token
Slack web hooks
LinkedIn client Id
LinkedIn secret key
Google API key
SendGrid API key
Twilio API key
Heroku API key
MailChimp API key
MailGun API key

3.策略管理

NeuVector 通過組的方式對容器和主機進行管理,對組進行合規性檢查、網路規則、程式和檔案訪問規則、DLP/WAF 的檢測配置。

NeuVector 會自動將當前叢集主機加入到 nodes 組,對於叢集內容器會自動建立以 nv.開頭的組。

NeuVector 的組支援 3 種模式:學習模式、監控模式和保護模式;各個模式實現作用如下:

  • 學習模式
    學習和記錄容器、主機間網路連線情況和程式執行資訊。
    自動構建網路規則白名單,保護應用網路正常行為。
    為每個服務的容器中執行的程式設定安全基線,並建立程式配置檔案規則白名單。
  • 監控模式
    NeuVector 監視容器和主機的網路和程式執行情況,遇到非學習模式下記錄的行為將在 NeuVector 中進行告警。
  • 保護模式
    NeuVector 監視容器和主機的網路和程式執行情況,遇到非學習模式下記錄的行為直接拒絕。

新建的容器業務被自動發現預設為學習模式,也可以通過設定將預設模式設定為監控模式或保護模式。

不同組策略衝突情況下,適用的有效模式如下表:

為了保證業務的穩定執行,當出現模式不一致時,有效模式以限制最小的模式執行。

生產環境最佳實踐使用路徑可以是:

  • 上新業務時,先學習模式執行一段時間,進行完整的功能測試和呼叫測試,得到實際執行此業務的網路連線情況和程式執行情況資訊。
  • 監控模式執行一段時間,看看有沒有額外的特殊情況,進行判斷,新增規則。
  • 最後全部容器都切換到保護模式,確定最終形態。

3.1. 動態微隔離

使用場景一:POD 間通過網路策略互相隔離

在 Kubernetes 平臺中建立四個 Nginx,名稱和用途如下:
workload_name:test-web1 image:nginx   用途:web 伺服器
workload_name:test-con1 image:nginx   用途:連線客戶端 1
workload_name:test-con2 image:nginx   用途:連線客戶端 2
workload_name:test-con3 image:nginx   用途:連線客戶端 3

建立 workload

kubectl create deployment test-web1 --image=nginx
kubectl expose deployment/test-web1 --port=80 --type=NodePort
kubectl create deployment test-con1 --image=nginx
kubectl create deployment test-con2 --image=nginx
kubectl create deployment test-con3 --image=nginx

此時在 NeuVector 中會自動生成這幾個組:

在 test-con1 中通過 curl 訪問 test-web1

此時可以正常訪問,因為在學習模式下 NeuVector 也會自動新增此訪問規則。

將 test-web1 和 test-con2 都設定為監控模式

然後在 test-con2 中 curl 訪問 test-web1

此時 test-con2 可以正常訪問 test-web1,但在 NeuVector 中會生成告警

同時,相應地,在網路活動拓撲圖中也可以看見對應的連線鏈路變為紅色。

將 test-web1 和 test-con2 都設定為保護模式,在通過 test-con2 去 curl test-web1

因為 curl 在學習模式時沒有使用,也不是 NeuVector 預設允許的可執行程式,所以程式直接就無法訪問了。

將 test-con1 設定為保護模式,此時 test-con1 無法訪問外部網路。

可以通過自定義新增網路規則方式開通訪問。

在網路規則頁,此處規則已經是在學習模式下生成的規則列表。

新增外部訪問規則

NeuVector 深度瞭解應用程式行為,並將分析有效負載,以確定應用程式協議。協議包括:HTTP,HTTPS,SSL,SSH,DNS,DNCP,NTP,TFTP,ECHO,RTSP,SIP,MySQL,Redis,Zookeeper,Cassandra,MongoDB,PostgresSQL,Kafka,Couchbase,ActiveMQ,ElasticSearch,RabbitMQ,Radius,VoltDB,Consul,Syslog,Etcd,Spark,Apache,Nginx,Jetty,NodeJS,Oracle,MSSQL 和 GRPC。

現在 test-con1 的 curl 可以正常訪問 www.baidu.com

總結:
除上述策略外,NeuVector 也內建網路威脅檢測,能夠快速識別常用網路攻擊,保護業務容器安全執行。

無論保護模式如何,在“學習和監視”模式下,NeuVector 將發出警報,並且可以在“通知>安全事件”中找到這些威脅。在保護模式下將收到警報和阻止;還可以根據威脅檢測建立響應規則。

包含的威脅檢測如下:

SYN flood attack
ICMP flood attack
IP Teardrop attack
TCP split handshake attack
PING death attack
DNS flood DDOS attack
Detect SSH version 1, 2 or 3
Detect SSL TLS v1.0
SSL heartbeed attack
Detect HTTP negative content-length buffer overflow
HTTP smugging attack
HTTP Slowloris DDOS attack
TCP small window attack
DNS buffer overflow attack
Detect MySQL access deny
DNS zone transfer attack
ICMP tunneling attack
DNS null type attack
SQL injection attack
Apache Struts RCE attack
DNS tunneling attack
TCP Small MSS attack
Cipher Overflow attack
Kubernetes man-in-the-middle attack per CVE-2020-8554

3.2. 程式管理

NeuVector 支援對容器和主機內程式進行管理,在學習模式下,執行的程式和命令會自動新增到規則中。

此時在 test-con1 中執行 df -h 會發現報錯 bash: /bin/df: Operation not permitted在 nv.test-con1.default 組中新增 df 程式規則:

然後再重新執行即可。

程式管理也支援對 node 節點,可以在 node 組中進行限制,約束宿主機程式執行。如限制執行 docker cp 執行,通過學習模式得知是 docker-tar 程式在後端執行,將節點切換到保護模式,限制 docker-tar 程式即可。

這些在節點就無法執行 docker cp

4.准入策略控制

NeuVector 支援與 Kubernetes 准入控制(admission-control)功能對接,實現 UI 配置准入控制規則,對請求進行攔截,對請求的資源物件進行校驗。 

NeuVector 支援多種准入控制策率配置,如映象 CVE 漏洞情況限制、部署特權模式、映象內使用 root 使用者、特定標籤等。

在策略-准入控制中開啟此功能,注意:需要 Kubernetes 叢集提前開啟 admission-control 功能

NeuVector 准入策略控制支援兩種模式:監控模式和保護模式,對應的含義和組的模式一樣的。這裡我們直接切換到保護模式,新增策略。

新增完後,在 Rancher 中部署特權模式,容器會提示解決,策略生效。

5.動態安全響應

NeuVector 事件響應機制可以將響應規則設定為根據安全事件情況進行動態響應,包括以下事件:漏洞掃描結果、CIS 基準測試、准入控制事件等。

響應動作包括隔離、webhook 通知和日誌抑制:

  • 隔離模式:對應的容器網路進出流量將全部被切斷。 
  • Webhook 通知:將觸發資訊通過 webhook 方式進行告警。
  • 日誌抑制:對觸發告警資訊進行抑制。

6.行為監控

以 CVE 漏洞配置為例,配置包含 CVE 漏洞名稱為 CVE-2020-16156 的容器進入隔離模式。

組名對應的是影響範圍,如果為空,表示對全部的組都生效,填寫組名可以設定對特定組生效。

配置策略後,在叢集去 curl nginx 容器,發現無法訪問,在 NeuVector 中檢視容器狀態為隔離狀態。 

刪除策略時,也可以配置將對應隔離狀態容器解除隔離。

注意:

  • 隔離操作不適用於為主機事件觸發的規則。
  • 每個規則可以有多個操作。

6.1. 網路流量視覺化

網路流量視覺化,可以清晰可見容器叢集內的網路連線關係、當前容器連線會話,並且過濾網路連線資訊,進行圖示展示;能夠快速進行網路問題定位。

6.2. POD 流量抓包

針對容器可進行網路抓包,讓故障無需進入主機獲取高許可權,就能進行網路問題深入排查。

採集到的資料包可直接下載,通過 Wireshark 進行解包分析。

總 結

本次我們主要講解了 NeuVector 的基礎功能,後續將深入介紹 DLP 和 WAF 的配置策略和管理使用。

相關文章