作者簡介萬紹遠,CNCF 基金會官方認證Kubernetes CKACKS 工程師,雲原生解決方案架構師。對ceph、Openstack、Kubernetes、prometheus 技術和其他雲原生相關技術有較深入的研究。參與設計並實施過多個金融、保險、製造業等多個行業IaaS 和PaaS 平台設計和應用雲原生改造指導。
前言NeuVector 是業界首個端到端的開源容器安全平台,唯一為容器化工作負載提供企業級零信任安全的解決方案。 NeuVector可以提供實時深入的容器網絡可視化、東西向容器網絡監控、主動隔離和保護、容器主機安全以及容器內部安全,容器管理平台無縫集成並且實現應用級容器安全的自動化,適用於各種雲環境、跨雲或者本地部署等容器生產環境。
此前,我們介紹了NeuVector 的安裝部署、高可用架構設計和多雲安全管理(超鏈接:https://mp.weixin.qq.com/s/kOGNT2L2HVMibyyM6Ri2KQ),本篇將演示NeuVector的基礎功能,主要包括:
1.安全漏洞管理
2.合規性檢查和機密性檢查
3.策略管理
4.准入控制策略
5.動態安全響應
6.行為監控
項目地址:https://github.com/neuvector/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,《通用数据保护条例》 )為歐盟條例。
在合規性檢查中也會檢查是否存在密文洩漏情況。
包括如以下密文洩漏情況:
GeneralPrivateKeys
Generaldetectionofcredentialsincluding'apikey','api_key','password','secret','passwd'etc.
Generalpasswordsinyamlfilesincluding'password',passwd','api_token'etc.
Generalsecretskeysinkey/valuepairs
PuttyPrivatekey
XmlPrivatekey
AWScredentials/IAM
Facebookclientsecret
Facebookendpointsecret
Facebookappsecret
TwitterclientId
Twittersecretkey
Githubsecret
SquareproductId
Stripeaccesskey
SlackAPItoken
Slackwebhooks
LinkedInclientId
LinkedInsecretkey
GoogleAPIkey
SendGridAPIkey
TwilioAPIkey
HerokuAPIkey
MailChimpAPIkey
MailGunAPIkey3.策略管理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
kubectlcreatedeploymenttest-web1--image=nginx
kubectlexposedeployment/test-web1--port=80--type=NodePort
kubectlcreatedeploymenttest-con1--image=nginx
kubectlcreatedeploymenttest-con2--image=nginx
kubectlcreatedeploymenttest-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 將發出警報,並且可以在“通知安全事件”中找到這些威脅。在保護模式下將收到警報和阻止;還可以根據威脅檢測創建響應規則。
包含的威脅檢測如下:
SYNfloodattack
ICMPfloodattack
IPTeardropattack
TCPsplithandshakeattack
PINGdeathattack
DNSfloodDDOSattack
DetectSSHversion1,2or3
DetectSSLTLSv1.0
SSLheartbeedattack
DetectHTTPnegativecontent-lengthbufferoverflow
HTTPsmuggingattack
HTTPSlowlorisDDOSattack
TCPsmallwindowattack
DNSbufferoverflowattack
DetectMySQLaccessdeny
DNSzonetransferattack
ICMPtunnelingattack
DNSnulltypeattack
SQLinjectionattack
ApacheStrutsRCEattack
DNStunnelingattack
TCPSmallMSSattack
CipherOverflowattack
Kubernetesman-in-the-middleattackperCVE-2020-85543.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 的配置策略和管理使用。