소개
K8SLANPARTY 풀이를 통해서 k8s 환경에서 발생할 수 있는 보안 문제를 CTF 형식으로 풀어보았는데요.
이와는 다르게 k8s 환경에서 발생할 수 있는 다양한 보안 문제를 시나리오 기반으로 배우면서 학습할 수 있는 사이트가 있어 공유해보려합니다.
Kubernetes Goat
Kubernetes Goat 는 현재 약 20개의 시나리오를 기반으로 취약한 보안 문제를 가지고 있는 kubernetes 환경을 제공해 줍니다.
이 취약한 k8s 환경을 기반으로 어떻게 하면 k8s 를 더 안전하게 구현할 수 있을지 배우고 학습할 수 있도록 해주고 있는데요.
웹 해킹 실습서버인 DVWA 와도 비슷한 컨셉입니다.
시나리오는 지속적으로 업데이트가 되고 있으며, 각 취약한 시나리오별로 문제를 풀어볼 수 있습니다.
풀이 설명 또한 Documentation 으로 친절히 제공 해주고 있는데요.
차근차근 하나씩 문제를 풀어가다 보면 k8s 에 대한 이해도와 보안 구성과 관련된 지식을 쌓을 수 있을듯합니다.
필요한 사전 준비 사항
Kubernetes Goat 을 활용하기 위해서는 아래와 같은 사전 준비가 필요합니다.
- kubernetes cluster, kubectl 설치 필요
- helm 설치 필요
k8s cluster 같은 경우, 로컬에 설치되어있는 환경이라면 그것을 이용하면 되겠습니다.
혹시 GCP GKE, AWS EKS, Fargate, Azure AKS, K3S 등의 환경에서 사용하고자 한다면 별도의 가이드도 제공해주고 있습니다.
저는 이전 multipass + kubespray 를 이용하여 로컬에 kubernetes 를 설치해 놓은 상태라 이를 이용하였습니다.
Kubernetes Goat 설치
Docs 를 통해서도 쉽게 설치가 가능합니다만, 간단히 설치 과정을 살펴보겠습니다.
git clone 을 먼저 합니다.
git clone https://github.com/madhuakula/kubernetes-goat.git
cd kubernetes-goat
bash setup-kubernetes-goat.sh
helm 으로 설치가 진행 됩니다. (namespace 는 default 에 설치하였습니다.)
kubectl get pods
로 설치가 제대로 되었는지 확인해봅니다.
모두 잘 설치가 되었네요.
사실 저는 최초 설치시 health-check-deployment
가 실패하였는데요. github 을 확인해보니 menifast 수정이 필요한 부분이 있어 아래와 같이 수정하였습니다. 혹시나 해당 deployment 에러가 발생하신다면 함께 확인해보시면 될듯합니다.
# path : scenarios/health-check/deployment.yaml 에서 수정
volumes:
- name: docker-sock-volume
hostPath:
path: /var/run/containerd/containerd.sock
type: Socket
이제 리소스를 로컬에서 접근가능하도록 해줍니다.
bash access-kubernetes-goat.sh
이제 http://127.0.0.1:1234
로 접속해 봅니다.
잘 접속이 되는군요! 준비는 끝났으니 kubernetes goat 놀이터에서 놀면 될듯합니다. 🔥