보안이 중요하다는 것은 다들 알지만 솔직히 크게 와닿지는 않습니다. 이번 포스팅에서는 쿠버네티스를 해킹해서 secret 리소스에 있는 비밀번호를 찾아내는 실습을 통해 쿠버네티스 보안의 중요성을 알아보겠습니다.

사전 세팅하기

우리는 세 가지 리소스를 만들 것입니다.

1. etcd 해킹하기

ETCD는 쿠버네티스의 클러스터 상태를 저장하는 키-값 데이터 저장소입니다. 쿠버네티스에 선언된 모든 정보가 여기에 저장되기 때문에 secret도 etcd를 조회해보면 알 수 있습니다.

1.1. etcdctl로 비밀번호 찾기

이 방법은 만약 마스터 플레인의 정보가 노출되었고, etcd가 암호화되어 있지 않으며, etcd가 있는 서버에 접근할 수 있다는 많은 전제를 바탕으로 합니다.

Untitled

  1. kube-apiserver 옵션을 조회해 etcd ca, cert, key를 가져옵니다.
  2. etcd를 편하게 조작할 수 있는 etcdctl 명령을 통해 비밀번호를 찾습니다.

1.2.etcd DB에 직접 접근해서 가져오기

etcd의 인증 정보는 모르지만 etcd가 존재하는 서버에 칩입을 했다고 가정해봅시다. etcd가 동작하는 프로세스를 찾고, 해당 프로세스의 데이터를 모두 뒤져보면 원하는 비밀 번호를 찾을 수 있을 것입니다.

Untitled

  1. ps aux | grep etcd - etcd의 PID를 가져옵니다.
  2. ll /proc/<pid>/fd를 보면 db라고 적힌 link 파일이 보입니다.