← 返回上一頁
Kubernetes

Kubernetes 安全靶場 KubeGoat 部署教學:用 Minikube + Helm 快速搭建 K8s 攻防演練環境

本頁目錄

前言

在 Kubernetes 叢集安全越來越受重視的今天,如何有效地學習和演練 K8s 安全攻防技術?Kubernetes Goat(KubeGoat)是一個專為 K8s 安全設計的互動式靶場環境,由安全研究員 Madhu Akula 開發維護。它內建多個真實場景的安全漏洞,讓你在安全可控的環境中練習容器逃逸、權限提升、機密洩漏等攻擊手法。

本文將帶你從零開始,在本地環境透過 Minikube 部署 KubeGoat 靶場,包含 Docker 安裝、Minikube 設定、Helm 安裝以及 KubeGoat 部署的完整流程。

環境準備:安裝 Docker

KubeGoat 依賴容器執行環境,我們先安裝 Docker 作為底層引擎。

移除舊版 Docker

sudo apt-get remove docker docker-engine docker-ce docker.io

新增 GPG 金鑰與套件庫

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

安裝並啟動 Docker

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

sudo systemctl start docker
sudo systemctl enable docker

安裝 Minikube 本地 K8s 叢集

Minikube 讓你在筆電或虛擬機上快速啟動單節點 Kubernetes 叢集,非常適合靶場環境。

安裝前置相依與 kubectl

sudo apt-get install -y apt-transport-https
sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

sudo tee /etc/apt/sources.list.d/kubernetes.list <<-'EOF'
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

sudo apt-get update
sudo apt-get install -y kubectl

安裝 Minikube 並啟動

# 將目前使用者加入 docker 群組
sudo usermod -aG docker $USER && newgrp docker

# 下載安裝 Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

# 啟動叢集(使用中國鏡像加速)
minikube start --image-mirror-country=cn \
  --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \
  --kubernetes-version=1.23.8

注意:搭配 Docker 使用時,建議 Kubernetes 版本不要超過 1.24,因為 K8s 從 1.24 版本開始移除了對 dockershim 的直接支援,需要額外安裝 cri-docker。

設定快速啟動別名

# 編輯 .bashrc 加入別名
echo 'alias minikube.cn="minikube start --image-mirror-country=cn --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version=1.23.8"' >> ~/.bashrc
source ~/.bashrc

驗證叢集狀態

kubectl get po -A

安裝 Helm 套件管理工具

KubeGoat 使用 Helm Chart 部署部分元件,因此需要先安裝 Helm。

curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

# 確認安裝成功
helm version

部署 KubeGoat 靶場

拉取原始碼並執行安裝腳本

git clone https://github.com/madhuakula/kubernetes-goat.git
cd kubernetes-goat
bash setup-kubernetes-goat.sh

如果出現 Error: Could not find kubectl or an other error happened 錯誤,可以在 setup-kubernetes-goat.sh 腳本中暫時註解掉 kubectl 偵測的區段,然後重新執行。

確認所有 Pod 正常運行

kubectl get pod

確保所有 Pod 狀態為 Running 且 READY 欄位顯示正常。

開放靶場存取

bash access-kubernetes-goat.sh

同樣如果有 kubectl 偵測報錯,註解掉對應區段即可。

存取靶場介面

腳本執行完畢後,可透過瀏覽器存取 http://<你的IP>:1234 進入 KubeGoat 靶場互動介面,裡面包含多個安全攻防情境供你練習。

KubeGoat 內建的安全練習場景

KubeGoat 靶場涵蓋以下常見 Kubernetes 安全問題:

  • 容器逃逸:從受限容器中突破隔離
  • 敏感資訊洩漏:探索環境變數與 Secret 中的機密
  • RBAC 權限濫用:利用過度授權的 ServiceAccount
  • 供應鏈攻擊:探索惡意映像檔的風險
  • 網路策略繞過:測試叢集內部的橫向移動

總結

KubeGoat 是學習 Kubernetes 安全的絕佳工具。透過 Minikube 在本地環境搭建靶場,你可以安全地實踐各種攻防技術,加深對 K8s 安全機制的理解。建議搭配 OWASP Kubernetes Top 10 一起研讀,系統性地提升容器安全能力。無論你是 DevOps 工程師還是安全研究人員,KubeGoat 都值得加入你的練習工具箱。

分享這篇
X LinkedIn Facebook Hacker News Reddit

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料