Kubernetes Hardening

htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!

HackTricks를 지원하는 다른 방법:

클러스터 분석 도구

Kubescape는 K8s 오픈 소스 도구로, 리스크 분석, 보안 규정 준수, RBAC 시각화 및 이미지 취약점 스캐닝을 포함한 멀티 클라우드 K8s 단일 창을 제공합니다. Kubescape는 K8s 클러스터, YAML 파일 및 HELM 차트를 스캔하여 NSA-CISA, MITRE ATT&CK®와 같은 다양한 프레임워크에 따른 잘못된 구성, 소프트웨어 취약점 및 RBAC (역할 기반 액세스 제어) 위반을 조기 단계에서 감지하며, 즉시 리스크 점수를 계산하고 시간에 따른 리스크 트렌드를 보여줍니다.

kubescape scan --verbose

kube-benchCIS Kubernetes Benchmark에 문서화된 체크를 실행하여 Kubernetes가 안전하게 배포되었는지 확인하는 도구입니다. 다음 중 하나를 선택할 수 있습니다:

  • 호스트와 PID 네임스페이스를 공유하는 컨테이너 내에서 kube-bench 실행

  • 호스트에 kube-bench를 설치하는 컨테이너를 실행한 다음, 호스트에서 kube-bench 직접 실행

  • 릴리스 페이지에서 최신 이진 파일 설치

  • 소스에서 컴파일

kubeaudit은 다양한 보안 문제에 대해 Kubernetes 클러스터를 감사하기 위한 명령 줄 도구 및 Go 패키지입니다.

Kubeaudit은 클러스터 내에서 컨테이너에서 실행 중인지 여부를 감지할 수 있습니다. 그렇다면 해당 클러스터의 모든 Kubernetes 리소스를 감사하려고 시도합니다:

kubeaudit all

이 도구에는 자동으로 감지된 문제를 자동으로 수정하는 autofix 인자도 있습니다.

도구 kube-hunter는 Kubernetes 클러스터에서 보안 취약점을 찾습니다. 이 도구는 Kubernetes 환경에서 보안 문제에 대한 인식과 가시성을 높이기 위해 개발되었습니다.

kube-hunter --remote some.node.com

Kubei는 사용자가 Kubernetes 클러스터의 정확하고 즉각적인 위험 평가를 얻을 수 있는 취약점 스캐닝 및 CIS Docker 벤치마크 도구입니다. Kubei는 애플리케이션 팟과 시스템 팟의 이미지를 포함한 Kubernetes 클러스터에서 사용되는 모든 이미지를 스캔합니다.

KubiScan은 Kubernetes 클러스터를 스캔하여 Kubernetes의 역할 기반 액세스 제어 (RBAC) 권한 모델에서 위험한 권한을 찾는 도구입니다.

IaC 코드 감사

Popeye는 실제 Kubernetes 클러스터를 스캔하고 배포된 리소스와 구성에 잠재적인 문제를 보고하는 유틸리티입니다. 디스크에 있는 것이 아니라 배포된 내용을 기반으로 클러스터를 정리합니다. 클러스터를 스캔하여 잘못된 구성을 감지하고 최상의 관행이 적용되도록 도와 미래의 문제를 예방하는 데 도움을 줍니다. 이는 야생에서 Kubernetes 클러스터를 운영할 때 직면하는 인지 부하를 줄이는 것을 목표로 합니다. 또한, 클러스터에 메트릭 서버가 사용되는 경우 잠재적인 리소스 과/부하 할당을 보고하고 클러스터가 용량 부족 상태가 되면 경고를 시도합니다.

KICS는 다음과 같은 인프라스트럭처 코드 솔루션 (Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM 및 OpenAPI 3.0 사양)에서 보안 취약점, 규정 준수 문제 및 인프라스트럭처 구성 오류를 찾습니다.

Checkov는 인프라스트럭처-로드 코드에 대한 정적 코드 분석 도구입니다.

Terraform, Terraform plan, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless 또는 ARM Templates을 사용하여 프로비저닝된 클라우드 인프라스트럭처를 스캔하고 그래프 기반 스캐닝을 사용하여 보안 및 규정 준수 구성 오류를 감지합니다.

kube-score는 Kubernetes 객체 정의의 정적 코드 분석을 수행하는 도구입니다.

설치 방법:

배포판명령어 / 링크

macOS, Linux 및 Windows용 미리 빌드된 이진 파일

Docker

docker pull zegl/kube-score (Docker Hub)

Homebrew (macOS 및 Linux)

brew install kube-score

Krew (macOS 및 Linux)

kubectl krew install score

Kubernetes PodSecurityContext 및 SecurityContext

팟의 보안 컨텍스트 (PodSecurityContext를 사용하여) 및 실행될 컨테이너보안 컨텍스트 (SecurityContext를 사용하여)를 구성할 수 있습니다. 자세한 정보는 다음을 참조하십시오:

pageKubernetes SecurityContext(s)

Kubernetes API 강화

악의적인 사용자가 충분한 권한으로 Kubernetes API 서버에 악용하여 환경을 다양한 방식으로 손상시킬 수 있으므로 Kubernetes API 서버에 대한 액세스를 보호하는 것이 매우 중요합니다. 액세스보호하고 인증을 (최소 권한의 원칙을 따라) 거부함으로써 보안을 강화하는 것이 중요합니다. 그리고 절대로 익명 요청을 허용하지 않습니다.

일반적인 요청 프로세스: 사용자 또는 K8s 서비스 계정 –> 인증 –> 권한 부여 –> 입장 제어.

:

  • 포트를 닫습니다.

  • 익명 액세스를 피합니다.

  • NodeRestriction; 특정 노드에서 API에 대한 액세스를 차단합니다.

  • 기본적으로 kubelet이 노드 제한 접두사인 node-restriction.kubernetes.io/ 접두사를 가진 레이블을 추가/제거/업데이트하지 못하도록 합니다. 이 레이블 접두사는 워크로드 격리를 위해 관리자가 노드 개체에 레이블을 지정하는 데 사용되며, kubelet은 해당 접두사가 있는 레이블을 수정할 수 없습니다.

  • 또한, kubelet이 이러한 레이블과 레이블 접두사를 추가/제거/업데이트할 수 있도록 합니다.

  • 레이블을 사용하여 안전한 워크로드 격리를 보장합니다.

  • 특정 팟이 API에 액세스하지 못하도록 합니다.

  • ApiServer를 인터넷에 노출하지 않습니다.

  • 무단 액세스 RBAC를 피합니다.

  • 방화벽 및 IP 화이트리스트를 사용하여 ApiServer 포트를 보호합니다.

SecurityContext 강화

기본적으로 Pod가 시작될 때 root 사용자가 사용됩니다. 다음과 유사한 템플릿을 사용하여 더 안전한 컨텍스트에서 애플리케이션을 실행할 수 있습니다:

apiVersion: v1
kind: Pod
metadata:
name: security-context-demo
spec:
securityContext:
runAsUser: 1000
runAsGroup: 3000
fsGroup: 2000
volumes:
- name: sec-ctx-vol
emptyDir: {}
containers:
- name: sec-ctx-demo
image: busybox
command: [ "sh", "-c", "sleep 1h" ]
securityContext:
runAsNonRoot: true
volumeMounts:
- name: sec-ctx-vol
mountPath: /data/demo
securityContext:
allowPrivilegeEscalation: true

일반적인 강화

의존성을 최신 상태로 유지하기 위해 Kubernetes 환경을 필요에 따라 업데이트해야 합니다:

  • 최신 버전의 종속성.

  • 버그 및 보안 패치.

릴리스 주기: 3개월마다 새로운 마이너 릴리스가 있습니다 -- 1.20.3 = 1(메이저).20(마이너).3(패치)

Kubernetes 클러스터를 업데이트하는 가장 좋은 방법은 (여기서부터) 여기입니다:

  • 다음 순서대로 마스터 노드 구성 요소를 업그레이드합니다:

  • etcd (모든 인스턴스).

  • kube-apiserver (모든 컨트롤 플레인 호스트).

  • kube-controller-manager.

  • kube-scheduler.

  • 사용하는 경우 클라우드 컨트롤러 매니저.

  • kube-proxy, kubelet과 같은 워커 노드 구성 요소를 업그레이드합니다.

htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!

HackTricks를 지원하는 다른 방법:

最終更新