Kubernetes Hardening

HackTricks 지원

클러스터 분석 도구

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

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은 쿠버네티스 클러스터의 정확하고 즉각적인 위험 평가를 가능하게 하는 취약점 스캐닝 및 CIS 도커 벤치마크 도구입니다. Kubei는 쿠버네티스 클러스터에서 사용되는 모든 이미지를 스캔하며, 응용 프로그램 팟 및 시스템 팟의 이미지를 포함합니다.

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

Mkat은 다른 유형의 고위험 체크를 테스트하기 위해 만들어진 도구입니다. 주로 3가지 다른 모드를 가지고 있습니다:

  • find-role-relationships: 어떤 AWS 역할이 어떤 팟에서 실행되는지 찾습니다.

  • find-secrets: 팟, ConfigMaps 및 Secrets와 같은 K8s 리소스에서 비밀을 식별하려고 시도합니다.

  • test-imds-access: 팟을 실행하고 메타데이터 v1 및 v2에 액세스를 시도합니다. 경고: 이 작업은 클러스터에서 팟을 실행하므로 신중해야 합니다. 아마도 이 작업을 수행하고 싶지 않을 수도 있습니다!

IaC 코드 감사

Popeye은 라이브 쿠버네티스 클러스터를 스캔하고 배포된 리소스 및 구성에서 잠재적인 문제를 보고하는 유틸리티입니다. 클러스터를 스캔하여 잘못된 구성을 감지하고 최상의 실천 방법이 준수되도록 도와 미래의 머리 아픔을 방지합니다. 이는 야생에서 쿠버네티스 클러스터를 운영할 때 직면하는 인지 부하를 줄이기 위해 목표로 합니다. 또한 클러스터에 메트릭 서버가 사용되면 잠재적인 리소스 과부하/과소 할당을 보고하고 클러스터가 용량을 초과할 경우 경고를 시도합니다.

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은 쿠버네티스 객체 정의의 정적 코드 분석을 수행하는 도구입니다.

설치 방법:

배포판명령어 / 링크

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

쿠버네티스 PodSecurityContext 및 SecurityContext

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

Kubernetes SecurityContext(s)

쿠버네티스 API 강화

쿠버네티스 API 서버에 대한 액세스 보호는 매우 중요합니다. 충분한 권한을 가진 악의적인 사용자가 악용하여 환경을 많은 방법으로 손상시킬 수 있습니다. 액세스를 안전하게 보호하고 (API 서버에 액세스할 수 있는 출처를 화이트리스트하고 다른 연결을 거부) 및 인증을 보호하는 것이 중요합니다(최소 권한의 원칙을 따릅니다). 그리고 절대로 익명 요청허용하지 않습니다.

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

:

  • 포트를 닫습니다.

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

  • NodeRestriction; 특정 노드에서 API로의 액세스를 금지합니다.

  • 기본적으로 kubelets가 노드 객체를 워크로드 격리 목적으로 레이블링하기 위해 예약된 node-restriction.kubernetes.io/ 접두사가 있는 레이블을 추가/제거/업데이트하는 것을 방지합니다. 또한 kubelets가 이러한 레이블 및 레이블 접두사를 추가/제거/업데이트할 수 있습니다.

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

  • 특정 팟이 API 액세스를 피합니다.

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

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

  • 방화벽 및 IP 화이트리스트로 ApiServer 포트를 보호합니다.

SecurityContext 강화

기본적으로 다른 사용자가 지정되지 않은 경우 팟이 시작될 때 루트 사용자가 사용됩니다. 다음과 유사한 템플릿을 사용하여 더 안전한 컨텍스트에서 응용 프로그램을 실행할 수 있습니다:

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과 같은 워커 노드 구성 요소를 업그레이드합니다.

HackTricks 지원

Last updated