Kubernetes Hardening

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Narzędzia do analizy klastra

Kubescape to otwarte narzędzie K8s, które zapewnia wielochmurowe K8s jedno okno, w tym analizę ryzyka, zgodność z zasadami bezpieczeństwa, wizualizację RBAC i skanowanie podatności obrazu. Kubescape skanuje klastry K8s, pliki YAML i wykresy HELM, wykrywając błędy konfiguracji zgodnie z wieloma ramami (takimi jak NSA-CISA, MITRE ATT&CK®), podatności oprogramowania i naruszenia RBAC (role-based-access-control) we wczesnych fazach potoku CI/CD, oblicza wynik ryzyka natychmiast i pokazuje trendy ryzyka w czasie.

kubescape scan --verbose

Narzędzie kube-bench jest narzędziem, które sprawdza, czy Kubernetes jest wdrożony w sposób bezpieczny, uruchamiając sprawdzanie opisane w CIS Kubernetes Benchmark. Możesz wybrać:

  • uruchomienie kube-bench wewnątrz kontenera (udostępniającego przestrzeń nazw PID z hostem)

  • uruchomienie kontenera, który instaluje kube-bench na hoście, a następnie uruchomienie kube-bench bezpośrednio na hoście

  • zainstalowanie najnowszych binariów ze strony Releases,

  • skompilowanie go ze źródeł.

Narzędzie kubeaudit to narzędzie wiersza poleceń i pakiet Go do audytu klastrów Kubernetes pod kątem różnych zagrożeń związanych z bezpieczeństwem.

Kubeaudit może wykryć, czy działa wewnątrz kontenera w klastrze. Jeśli tak, spróbuje przeprowadzić audyt wszystkich zasobów Kubernetes w tym klastrze:

kubeaudit all

Ten narzędzie ma również argument autofix, który automatycznie naprawia wykryte problemy.

Narzędzie kube-hunter poszukuje słabości związanych z bezpieczeństwem w klastrach Kubernetes. Narzędzie to zostało opracowane w celu zwiększenia świadomości i widoczności problemów związanych z bezpieczeństwem w środowiskach Kubernetes.

kube-hunter --remote some.node.com

Kubei to narzędzie do skanowania podatności i testowania zgodności z normami CIS Docker, które umożliwia użytkownikom dokładną i natychmiastową ocenę ryzyka ich klastrów Kubernetes. Kubei skanuje wszystkie obrazy używane w klastrze Kubernetes, w tym obrazy aplikacji i systemowe.

KubiScan to narzędzie do skanowania klastra Kubernetes w poszukiwaniu ryzykownych uprawnień w modelu autoryzacji opartym na kontrolach dostępu opartych na rolach (RBAC) Kubernetes.

Audituj kod IaC

Popeye to narzędzie, które skanuje działający klaster Kubernetes i raportuje potencjalne problemy z zasobami i konfiguracjami. Oczyszcza klaster na podstawie tego, co jest wdrożone, a nie tego, co znajduje się na dysku. Skanując klaster, wykrywa błędy konfiguracji i pomaga upewnić się, że stosowane są najlepsze praktyki, zapobiegając przyszłym problemom. Ma na celu zmniejszenie obciążenia poznawczego, z którym spotyka się osoba zarządzająca klasterem Kubernetes w środowisku produkcyjnym. Ponadto, jeśli klaster korzysta z serwera metryk, raportuje potencjalne nadmierne/przypisania zasobów i próbuje ostrzec, gdy klaster osiągnie limit pojemności.

KICS znajduje podatności związane z bezpieczeństwem, problemy zgodności i błędy konfiguracji infrastruktury w następujących rozwiązaniach Infrastructure as Code: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM i specyfikacje OpenAPI 3.0.

Checkov to narzędzie do statycznej analizy kodu dla infrastruktury jako kod.

Skanuje infrastrukturę chmurową wdrażaną za pomocą Terraform, planu Terraform, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless lub szablonów ARM i wykrywa błędy konfiguracji związane z bezpieczeństwem i zgodnością za pomocą skanowania opartego na grafie.

kube-score to narzędzie, które wykonuje statyczną analizę kodu zdefiniowanych obiektów Kubernetes.

Aby zainstalować:

Wskazówki

Kubernetes PodSecurityContext i SecurityContext

Możesz skonfigurować kontekst bezpieczeństwa dla Podów (za pomocą PodSecurityContext) oraz kontekst kontenerów, które zostaną uruchomione (za pomocą SecurityContext). Aby uzyskać więcej informacji, przeczytaj:

Zabezpieczanie interfejsu API Kubernetes

Bardzo ważne jest zabezpieczenie dostępu do serwera API Kubernetes, ponieważ złośliwy użytkownik posiadający wystarczające uprawnienia może go wykorzystać i wyrządzić wiele szkód w środowisku. Ważne jest zabezpieczenie zarówno dostępu (whitelistowanie pochodzenia, które ma dostęp do serwera API, i odmowa innych połączeń), jak i uwierzytelniania (zgodnie z zasadą najmniejszych uprawnień). I zdecydowanie nigdy nie zezwalaj na anonimowe żądania.

Proces żądania ogólnego Użytkownik lub K8s ServiceAccount –> Uwierzytelnianie –> Autoryzacja –> Kontrola dostępu.

Wskazówki:

  • Zamknij porty.

  • Unikaj anonimowego dostępu.

  • NodeRestriction; Brak dostępu z określonych węzłów do interfejsu API.

  • W zasadzie uniemożliwia kubeletom dodawanie/usuwanie/aktualizowanie etykiet z prefiksem node-restriction.kubernetes.io/. Ten prefiks etykiety jest zarezerwowany dla administratorów do oznaczania obiektów Node w celu izolacji obciążeń, a kubelety nie będą miały uprawnień do modyfikowania etykiet z tym prefiksem.

  • Pozwala kubeletom dodawać/usuwać/aktualizować te etykiety i prefiksy etykiet.

  • Zapewnij bezpieczną izolację obciążenia za pomocą etykiet.

  • Unikaj dostępu do API przez określone pody.

  • Unikaj wystawiania ApiServera na zewnątrz internetu.

  • Unikaj nieautoryzowanego dostępu RBAC.

  • Port ApiServera z zapory ogniowej i whitelistą adresów IP.

Zabezpieczanie SecurityContext

Domyślnie użytkownik root zostanie użyty, gdy uruchamiany jest Pod, jeśli nie zostanie określony inny użytkownik. Możesz uruchomić swoją aplikację w bardziej bezpiecznym kontekście, korzystając z szablonu podobnego do poniższego:

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

Ogólne zabezpieczanie

Powinieneś regularnie aktualizować swoje środowisko Kubernetes, aby:

  • Mieć zaktualizowane zależności.

  • Instalować poprawki błędów i zabezpieczeń.

Cykle wydań: Co 3 miesiące jest nowe wydanie drobnej wersji -- 1.20.3 = 1(Główne).20(Drobne).3(poprawka)

Najlepszym sposobem na aktualizację klastra Kubernetes jest (z tutaj):

  • Zaktualizuj komponenty węzła głównego, postępując zgodnie z tą sekwencją:

  • etcd (wszystkie instancje).

  • kube-apiserver (wszystkie hosty płaszczyzny kontrolnej).

  • kube-controller-manager.

  • kube-scheduler.

  • menedżer kontrolera chmury, jeśli go używasz.

  • Zaktualizuj komponenty węzła roboczego, takie jak kube-proxy, kubelet.

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated