iT邦幫忙

2026 iThome 鐵人賽

DAY 30
0
Kubernetes

資安這條路:從攻擊者視角看 Kubernetes系列 第 30 篇

Day 30|30 天攻防總結:從 ATT&CK 矩陣到實戰防禦體系

  • 分享至 

  • xImage
  •  

資安這條路:從攻擊者視角看 Kubernetes

最後一篇——回顧 30 天建構的攻防體系,評估你的防禦成熟度,規劃下一步。

學習目標

完成本日實作後,你將能夠:

  • 用防禦成效數據回顧 30 天的攻防成果
  • 透過成熟度自評框架定位自己的 K8s 安全等級
  • 根據自評結果制定具體的下一步行動計畫
  • 理解 KOAD 開源專案的架構與使用方式

閱讀前置條件

本篇是 30 天的總回顧。建議的最低閱讀量:

等級 天數 內容
必備 Day 1 ATT&CK 概念 + 靶場部署
建議 Day 24 Kill Chain(理解 35 場景的完整攻擊鏈)
建議 Day 28 攻防矩陣(ATT&CK × D3FEND 對照)
可跳過 Day 2–23 各場景細節(本篇會彙整重點)

快速路徑:如果是第一次接觸 KOAD,從本篇開始,再按需回讀對應的 Day。


30 天建構了什麼

攻擊面全景

我們用 MITRE ATT&CK Containers Matrix 作為骨架,建構了 35 個攻擊場景:

攻擊面全景

戰術 場景 覆蓋天數
Initial Access S01–S03 Day 2
Execution S04–S08 Day 4
Persistence S09–S12 Day 6
Privilege Escalation S13 Day 8
Defense Evasion S14, S18–S22 Day 9–11, 14
Credential Access S24–S26 Day 16
Discovery S27–S29 Day 18
Lateral Movement S30 Day 19
Impact S31–S35 Day 20
Defense Impairment S23 Day 15

10 個戰術、28 個技術、35 個場景——ATT&CK Containers Matrix 100% 覆蓋。

防禦體系

對應攻擊面,我們建構了四層防禦:

防禦層 工具 功能 覆蓋天數
Admission Control Kyverno 7 策略 部署前攔截危險配置 Day 5, 27
網路隔離 Calico NetworkPolicy 4 條 阻斷橫向移動路徑 Day 3, 27
Runtime 偵測 Falco 26 條自訂規則 即時偵測攻擊行為 Day 25–26
自動回應 Falco Talon 4 條規則 偵測後自動隔離/終止 Day 26

防禦成效實測

Day 24 的完整攻擊鏈演練,量化了防禦體系的效果:

防禦配置 攻擊成功率 說明
無防禦 100% 35 場景全部成功
Kyverno Audit 100% 只記錄不阻擋,但產生 357 條違規紀錄
Kyverno Enforce 52% 阻擋了特權容器、hostPath 掛載等高風險配置
+ NetworkPolicy 31% default-deny-all 切斷橫向移動和外部通訊
+ Falco + Talon 31% 成功率相同,但所有攻擊行為都被偵測並自動回應

關鍵發現:Kyverno Enforce + NetworkPolicy 兩層就能把攻擊成功率從 100% 降到 31%。加上 Falco 後,剩下的 31% 雖然能執行,但每一步都會觸發告警——攻擊者無法隱身。


防禦成熟度自評

根據 30 天的內容,我設計了四個等級的成熟度框架。對照你目前的環境,看看落在哪一級:

Level 1:基礎防禦(Day 1–7 內容)

檢查項 是否完成
Minikube + Calico 叢集正常運作 [ ]
RBAC 已配置,沒有不必要的 cluster-admin [ ]
NetworkPolicy default-deny-all 已套用 [ ]
kubelet anonymous-auth 已關閉 [ ]
ServiceAccount automountServiceAccountToken 設為 false [ ]

達標標準:5 項中完成 4 項。
對應 CKS 領域:Cluster Setup (15%) + Cluster Hardening (15%)

Level 2:縱深防禦(Day 8–17 內容)

檢查項 是否完成
PSS Restricted 已套用到生產 Namespace [ ]
seccomp RuntimeDefault 已啟用 [ ]
Kyverno/OPA 策略已部署(至少 Audit 模式) [ ]
容器使用 non-root + readOnlyRootFilesystem [ ]
Secret 靜態加密(etcd EncryptionConfiguration)已啟用 [ ]
映像簽章驗證流程已建立(Cosign + Kyverno) [ ]

達標標準:6 項中完成 5 項。
對應 CKS 領域:System Hardening (10%) + Minimize Microservice Vulnerabilities (20%)

Level 3:主動偵測(Day 18–27 內容)

檢查項 是否完成
Falco 已部署並正常產生 alert [ ]
自訂 Falco 規則覆蓋主要攻擊場景 [ ]
Audit Log 已開啟並有分析流程 [ ]
CIS Benchmark 掃描分數 > 70% [ ]
映像漏洞掃描整合到 CI/CD [ ]
有 Incident Response SOP(Day 29) [ ]

達標標準:6 項中完成 4 項。
對應 CKS 領域:Supply Chain Security (20%) + Monitoring/Runtime Security (20%)

Level 4:自動化回應(Day 26–29 內容)

檢查項 是否完成
Falco Talon 或 Tetragon 自動回應已部署 [ ]
偵測到攻擊後能自動隔離 Pod [ ]
完整攻擊鏈演練(Day 24)通過 [ ]
IR 演練至少執行過一次 [ ]
備份恢復(Velero)已測試 [ ]

達標標準:5 項中完成 3 項。

自評結果對照

你的等級 現況 建議下一步
未達 Level 1 叢集缺乏基本安全配置 從 Day 1 開始,優先做 RBAC + NetworkPolicy
Level 1 有基本防護,但攻擊者進來後沒有偵測能力 進入 Day 8–13 理解逃逸風險,部署 PSS
Level 2 能擋住大部分已知攻擊模式 部署 Falco(Day 25),建立偵測能力
Level 3 能偵測攻擊,但需要人工介入 部署自動回應(Day 26),建立 IR SOP(Day 29)
Level 4 完整的偵測 + 自動回應體系 持續更新規則,關注新 CVE,準備 CKS

四週學習路線回顧

第一週:入口與基礎防禦(Day 1–7)

核心問題:攻擊者怎麼進來?怎麼擋?

  • Day 1 部署了完整靶場:35 場景 + Falco + Kyverno + NetworkPolicy
  • Day 2–3 學了三條入侵路徑(SSRF、kubelet、kubeconfig)和對應防禦
  • Day 4–5 學了容器內執行攻擊和 Admission Control 防禦
  • Day 6–7 學了持久化手法和 Audit Log 偵測

這週最重要的一件事:NetworkPolicy default-deny-all。一條規則就切斷了大部分橫向移動路徑。

第二週:容器逃逸全解析(Day 8–13)

核心問題:攻擊者怎麼從容器跳到宿主機?怎麼防?

  • Day 8–11 拆解了七種逃逸手法:privileged、cgroup、docker.sock、/proc、ptrace、CVE
  • Day 12–13 用三層防禦封堵:PSS Restricted + seccomp + AppArmor,再加 gVisor 沙箱

這週最重要的一件事:PSS Restricted。大部分逃逸都需要特權或特殊 Capability,Restricted 直接從根源擋住。

第三週:隱匿到橫向移動(Day 14–20)

核心問題:攻擊者進來後怎麼擴大戰果?

  • Day 14–15 學了攻擊者如何隱藏蹤跡和破壞防禦工具
  • Day 16–17 學了憑證竊取和防護(etcd 加密、Vault、OIDC)
  • Day 18–19 學了內部偵察和橫向移動
  • Day 20 學了最終破壞:資料刪除、Resource Bomb、挖礦

這週最重要的一件事:SA Token 管理。關閉自動掛載 + 最小權限 RBAC,攻擊者拿到容器也走不遠。

第四週:進階防禦與總結(Day 21–30)

核心問題:怎麼建構完整的偵測和回應體系?

  • Day 21–23 學了 Impact 防禦和供應鏈安全
  • Day 24 跑了完整攻擊鏈,量化了防禦成效
  • Day 25–26 設計了 26 條 Falco 規則 + Talon 自動回應 + Tetragon
  • Day 27 做了 NetworkPolicy + Kyverno + CIS Benchmark 全覆蓋
  • Day 28 建構了 ATT&CK × D3FEND 完整攻防矩陣
  • Day 29 設計了 Incident Response SOP

這週最重要的一件事:分層防禦不是理論。實測數據證明 Kyverno + NetworkPolicy + Falco 三層疊加,攻擊成功率從 100% 降到 31%,且全程可偵測。


30 天數字總結

類別 指標 數字
攻擊 ATT&CK 戰術覆蓋 10 / 10(100%)
攻擊 ATT&CK 技術覆蓋 28 / 28(100%)
攻擊 KOAD 場景總數 35
攻擊 容器逃逸手法 7 種
防禦 Falco 自訂規則 26 條
防禦 Kyverno 策略 7 條
防禦 NetworkPolicy 4 條
防禦 Tetragon TracingPolicy 4 條
成效 Falco alert(攻擊鏈演練) 174 條
成效 Kyverno violation(攻擊鏈演練) 357 條
成效 防禦後攻擊成功率 31%
文章 CKS 考點覆蓋 6 / 6 領域

KOAD 開源專案

KOAD 原始碼在 GitHub 上公開,任何人都能部署自己的攻防靶場。

專案結構

專案架構

koad/
├── scenarios/          # 35 攻擊場景 YAML
│   ├── initial-access/
│   ├── execution/
│   ├── persistence/
│   ├── privilege-escalation/
│   ├── defense-evasion/
│   ├── credential-access/
│   ├── discovery/
│   ├── lateral-movement/
│   └── impact/
├── defense/            # 防禦配置
│   ├── falco/          # 26 條自訂規則 + values
│   ├── kyverno/        # 7 條策略
│   ├── network-policies/  # 4 條 NetworkPolicy
│   └── tetragon/       # 4 條 TracingPolicy
├── attacker/           # 攻擊者 Pod + 工具
└── docs/               # 場景對照表 + 部署指南

部署方式

完整部署步驟在 Day 1 已詳細說明。快速回顧:

# 1. 啟動叢集
minikube start --cni=calico --memory=8192 --cpus=4 \
  --kubernetes-version=v1.30.0

# 2. 部署場景 + 防禦
kubectl apply -f scenarios/ -R
helm install falco falcosecurity/falco -n falco --create-namespace \
  -f defense/falco/values-custom.yaml
helm install kyverno kyverno/kyverno -n kyverno --create-namespace
kubectl apply -f defense/kyverno/
kubectl apply -f defense/network-policies/

# 3. 驗證
kubectl get pods -A | grep -E "falco|kyverno"
kubectl get clusterpolicy
kubectl get networkpolicy -A

部署驗證清單和常見問題排除,見 Day 1 的 Troubleshooting 區段。

最低系統需求

元件 需求
CPU 4 核心(建議 8 核心)
記憶體 8 GB(建議 16 GB)
磁碟 40 GB
核心版本 >= 5.8(modern_ebpf 需求)
Minikube >= 1.33

近年重大 K8s / 容器 CVE

持續追蹤這些 CVE,對照 KOAD 場景理解攻擊原理:

CVE 影響 嚴重性 對應 KOAD
CVE-2024-21626 runc 容器逃逸(Leaky Vessels) Critical S13-S18 逃逸系列
CVE-2023-2728 SA Token 繞過 mountable secrets 限制 High S25 SA Token 竊取
CVE-2023-5528 Windows Node 權限提升 High S13 特權逃逸概念
CVE-2022-0185 Linux 核心 heap overflow → 容器逃逸 Critical S19 核心漏洞逃逸
CVE-2022-0811 CRI-O 容器逃逸(cr8escape) Critical S13-S14 逃逸類型
CVE-2021-25741 symlink 攻擊繞過 subPath volume mount High S15 掛載類攻擊

讀完 30 天後的行動清單

根據你的角色和目標,選擇對應的路徑:

路徑 A:準備 CKS 考試

KOAD 30 天覆蓋了 CKS 全部 6 大領域:

CKS 領域對照

CKS 領域 佔比 對應 Day 重點練習
Cluster Setup 15% Day 2–3 kubelet 強化、API Server 認證
Cluster Hardening 15% Day 6–7 RBAC、SA Token、Audit Log
System Hardening 10% Day 12–13 seccomp、AppArmor、PSS
Minimize Vulnerabilities 20% Day 8–13 SecurityContext、Capability
Supply Chain Security 20% Day 22–23 Trivy、Cosign、映像策略
Runtime Security 20% Day 25–27 Falco、NetworkPolicy、kube-bench

建議:先跑一次 Day 24 完整攻擊鏈,體感理解每個領域的重要性,再逐領域深入練習。

路徑 B:強化生產環境

按優先順序逐步套用:

  1. 第一週做完:RBAC 最小權限 + NetworkPolicy default-deny + kubelet 強化
  2. 第二週做完:PSS Restricted + seccomp RuntimeDefault + 關閉 SA Token 自動掛載
  3. 第三週做完:部署 Falco + 映像掃描整合 CI/CD + etcd 加密
  4. 第四週做完:Kyverno Enforce + CIS Benchmark 掃描 + IR SOP

每一步都有對應的 Day 可以回讀具體做法。

路徑 C:持續深入研究

方向 具體目標 資源
Service Mesh 安全 Istio/Linkerd mTLS + AuthorizationPolicy Day 27 mTLS 基礎
eBPF 深度應用 自己寫 Tetragon TracingPolicy Day 26 Tetragon 基礎
GitOps 安全 ArgoCD/Flux 的 RBAC 和 Secret 管理 Day 7 Audit Log 基礎
多叢集安全 跨叢集策略同步 + Cilium ClusterMesh Day 27 NetworkPolicy 基礎
AI + Security LLM 分析 Falco alert + 自動分類 Day 25–26 Falco 基礎

30 天最大的收穫

寫完 30 天,我自己最大的收穫是三件事:

第一,攻擊者視角改變了我看防禦的方式。 以前看到 PSS Restricted,只覺得是一堆限制。親手用 nsenter 從特權容器逃逸到宿主機(Day 8)之後,才真正理解每一條限制擋住的是什麼。

第二,防禦不需要完美,需要分層。 Day 24 的實測數據說明了一切:沒有任何單一工具能擋住所有攻擊,但 Kyverno + NetworkPolicy + Falco 三層疊加,攻擊成功率從 100% 降到 31%,且全程可偵測。

第三,系統性思考比單點技術重要。 ATT&CK 矩陣讓我用結構化的方式理解攻擊面,D3FEND 讓我用同樣的結構組織防禦。有了框架,新的 CVE 出來時,我能快速定位它在矩陣中的位置,評估現有防禦是否能覆蓋。


完成度自我檢查(30 天總檢)

  • [ ] KOAD 靶場已成功部署並通過驗證清單
  • [ ] 完成防禦成熟度自評,知道自己在哪個等級
  • [ ] 至少完成一次完整的攻擊鏈演練(Day 24)
  • [ ] 至少完成一次 IR 演練(Day 29)
  • [ ] 能說出 ATT&CK Containers Matrix 的 10 個戰術
  • [ ] 能解釋分層防禦(Kyverno + NetworkPolicy + Falco)的效果
  • [ ] 有明確的下一步行動計畫(CKS / 生產強化 / 深入研究)

今日重點回顧

  1. 防禦成效有數據:三層防禦把攻擊成功率從 100% 降到 31%,全程可偵測
  2. 成熟度四等級:基礎防禦 → 縱深防禦 → 主動偵測 → 自動化回應
  3. 行動導向:CKS 備考、生產強化、持續研究三條路徑各有具體步驟
  4. KOAD 開源:35 場景 + 完整防禦配置,任何人都能部署自己的攻防靶場

上一篇
Day 29|Incident Response:當 Falco 告警響起的 SOP
系列文
資安這條路:從攻擊者視角看 Kubernetes 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言