반응형
🔐 Kubernetes API 서버 우회 위험 및 대응 가이드
📌 왜 중요한가?
- Kubernetes API 서버는 클러스터의 중앙 관문이야.
- 보안 로깅, 정책 적용(admission control) 등 많은 보안 기능들이 API 서버를 통해서만 작동함.
- 그런데, 어떤 요소들은 이 API 서버를 우회해서 동작할 수 있어! → 이게 보안 구멍
1️⃣ Static Pod 우회
문제점
- kubelet이 직접 파일시스템 또는 URL에서 static pod manifest를 읽어 실행
- 이 방식은 API 서버를 거치지 않음 → admission controller나 audit log가 작동 안 함
- hostPath 같은 민감한 리소스를 마운트할 수 있음
- namespace가 유효하지 않으면 API에 표시되지도 않음 → 탐지 어려움
대응법
- static Pod 기능은 정말 필요할 때만 켜기
- 해당 디렉토리/URL의 쓰기 권한을 제한할 것
- kubelet 설정 파일에 대한 접근도 제한
- 정기적으로 파일 접근 감시 및 중앙 로그화
2️⃣ Kubelet API 우회
문제점
- kubelet이 노드에서 포트 10250을 통해 HTTP API 제공
- API 서버를 거치지 않고:
- Pod 정보 보기
- 로그 가져오기
- 컨테이너 안에서 명령어 실행 가능!
- 기본 설정은 익명 접근 허용이므로 매우 위험
- Kubernetes audit log로 기록도 안 됨
대응법
- RBAC으로 Node 객체의 서브 리소스 접근 제한
- kubelet 포트는 신뢰된 IP만 접근 가능하도록 네트워크 레벨에서 제한
- kubelet 인증 설정은 반드시 webhook 또는 certificate 모드로
- kubelet의 read-only 포트는 비활성화
3️⃣ etcd API 직접 접근
문제점
- etcd는 Kubernetes 전체 데이터를 저장함
- 포트 2379에서 API 제공 → API 서버 외에는 접근할 필요 없음
- 인증만 있고, 권한(authorization) 통제는 약함
- etcd 인증서 있으면 모든 데이터를 읽거나 조작 가능
- audit log, admission controller 모두 우회됨
대응법
- etcd가 신뢰하는 인증서 발급기관(CA)은 etcd 전용으로만 사용
- etcd 서버 인증서, API 서버의 etcd 클라이언트 인증서 비공개키 철저히 보호
- etcd 포트는 네트워크 레벨에서 접근 제한 (IP 제한)
4️⃣ 컨테이너 런타임 소켓(socket) 접근
문제점
- kubelet이 사용하는 컨테이너 런타임 소켓은 주로 Unix socket (/run/containerd/containerd.sock 등)
- 이 소켓에 접근하면:
- 컨테이너 조작
- 새 컨테이너 실행 가능
- 공격자가 static pod처럼 악용 가능
대응법
- 런타임 소켓 파일은 루트(root) 사용자만 접근 가능하도록 제한
- kubelet과 다른 컴포넌트는 namespace 등으로 격리
- hostPath로 소켓이 노출되지 않도록 방지, 부득이할 경우 읽기 전용
- 노드에 SSH 등으로 직접 접근은 철저히 제한 (특히 root 권한)
✅ 정리: 우회 경로와 방어 전략
우회 수단 위험 방어 방법
Static Pod | API 서버 우회, 감시 어려움 | 필요 시에만 사용, 디렉토리 접근 제어 |
Kubelet API | Pod 로그/exec, 익명 접근 위험 | 인증 설정 변경, 포트 접근 제한 |
etcd API | 전체 데이터 접근, 인증서만 있으면 조작 가능 | 인증서 철저히 관리, 네트워크 제한 |
컨테이너 런타임 소켓 | 컨테이너 탈출 가능성 | 소켓 접근 제한, hostPath 마운트 주의 |
🎯 클러스터 운영자가 해야 할 핵심 체크리스트
- kubelet static pod 기능 꺼져 있거나, 접근 제한 OK
- kubelet 포트 10250은 인증 설정되어 있고, 외부 접근 제한됨
- etcd 포트는 오직 API 서버만 접근 가능
- etcd 인증서/키는 안전하게 저장됨
- 컨테이너 런타임 소켓은 root만 접근 가능
- hostPath 마운트는 제한되었고, 필요한 경우 readOnly로 설정됨
반응형
'Certificated 도전 > KCSA - Kubernetes' 카테고리의 다른 글
[KCSA]Kubernetes 보안 체크리스트 요약 (한눈에 보기) (0) | 2025.03.30 |
---|---|
[KCSA] SecurityContext란? (0) | 2025.03.30 |
[KCSA]Kubernetes 인증 메커니즘 하드닝 가이드 (0) | 2025.03.30 |
[KCSA]멀티 테넌시(Multi-tenancy)란 (0) | 2025.03.30 |
Kubernetes Secrets 보안 모범 사례 (0) | 2025.03.30 |