前言
在 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 都值得加入你的練習工具箱。

發佈留言