Kubernetes Hardening
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Kubescape to narzędzie open-source K8s, które zapewnia jednolity widok K8s w wielu chmurach, w tym analizę ryzyka, zgodność z bezpieczeństwem, wizualizator RBAC oraz skanowanie podatności obrazów. Kubescape skanuje klastry K8s, pliki YAML i wykresy HELM, wykrywając błędne konfiguracje zgodnie z wieloma ramami (takimi jak NSA-CISA, MITRE ATT&CK®), podatności oprogramowania oraz naruszenia RBAC (kontrola dostępu oparta na rolach) na wczesnych etapach pipeline CI/CD, natychmiast oblicza wynik ryzyka i pokazuje trendy ryzyka w czasie.
Narzędzie kube-bench to narzędzie, które sprawdza, czy Kubernetes jest wdrożony w sposób bezpieczny, wykonując kontrole udokumentowane w CIS Kubernetes Benchmark. Możesz wybrać:
uruchomienie kube-bench z wnętrza kontenera (dzieląc 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 binarek z strony Wydań,
skompilowanie go ze źródła.
Narzędzie kubeaudit to narzędzie wiersza poleceń oraz pakiet Go do audytowania klastrów Kubernetes pod kątem różnych problemów związanych z bezpieczeństwem.
Kubeaudit może wykryć, czy działa w kontenerze w klastrze. Jeśli tak, spróbuje audytować wszystkie zasoby Kubernetes w tym klastrze:
To narzędzie ma również argument autofix
, aby automatycznie naprawić wykryte problemy.
Narzędzie kube-hunter poszukuje słabości bezpieczeństwa w klastrach Kubernetes. Narzędzie zostało opracowane w celu zwiększenia świadomości i widoczności problemów bezpieczeństwa w środowiskach Kubernetes.
Kubei to narzędzie do skanowania podatności i benchmarków CIS Docker, które pozwala użytkownikom uzyskać dokładną i natychmiastową ocenę ryzyka swoich klastrów kubernetes. Kubei skanuje wszystkie obrazy używane w klastrze Kubernetes, w tym obrazy aplikacji i systemów.
KubiScan to narzędzie do skanowania klastra Kubernetes w poszukiwaniu ryzykownych uprawnień w modelu autoryzacji opartym na rolach (RBAC) Kubernetes.
Mkat to narzędzie stworzone do testowania innych typów wysokiego ryzyka w porównaniu z innymi narzędziami. Posiada głównie 3 różne tryby:
find-role-relationships
: Który znajdzie, które role AWS działają w których podach
find-secrets
: Który próbuje zidentyfikować sekrety w zasobach K8s, takich jak Pody, ConfigMapy i Sekrety.
test-imds-access
: Który spróbuje uruchomić pody i uzyskać dostęp do metadanych v1 i v2. OSTRZEŻENIE: To uruchomi pod w klastrze, bądź bardzo ostrożny, ponieważ być może nie chcesz tego robić!
Popeye to narzędzie, które skanuje działający klaster Kubernetes i zgłasza potencjalne problemy z wdrożonymi zasobami i konfiguracjami. Oczyszcza twój klaster na podstawie tego, co jest wdrożone, a nie tego, co znajduje się na dysku. Skanując twój klaster, wykrywa błędne konfiguracje i pomaga zapewnić, że najlepsze praktyki są wdrożone, co zapobiega przyszłym problemom. Ma na celu zmniejszenie obciążenia poznawczego, z którym boryka się operator klastra Kubernetes w terenie. Ponadto, jeśli twój klaster korzysta z serwera metryk, zgłasza potencjalne nadmiary/niedobory zasobów i stara się ostrzec cię, jeśli twój klaster wyczerpie zasoby.
KICS znajduje podatności bezpieczeństwa, problemy z zgodnością i błędne konfiguracje 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 analizy statycznej kodu dla infrastruktury jako kodu.
Skanuje infrastrukturę chmurową dostarczoną za pomocą Terraform, planu Terraform, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless lub ARM Templates i wykrywa błędne konfiguracje bezpieczeństwa i zgodności za pomocą skanowania opartego na grafach.
kube-score to narzędzie, które wykonuje statyczną analizę kodu definicji obiektów Kubernetes.
Aby zainstalować:
Prekompilowane binaria dla macOS, Linux i Windows
Docker
docker pull zegl/kube-score
(Docker Hub)
Homebrew (macOS i Linux)
brew install kube-score
Krew (macOS i Linux)
kubectl krew install score
Możesz skonfigurować kontekst bezpieczeństwa Podów (z PodSecurityContext) oraz kontenerów, które będą uruchamiane (z SecurityContext). Aby uzyskać więcej informacji, przeczytaj:
Kubernetes SecurityContext(s)Bardzo ważne jest, aby chronić dostęp do serwera API Kubernetes, ponieważ złośliwy aktor z wystarczającymi uprawnieniami mógłby go nadużyć i wyrządzić wiele szkód w środowisku. Ważne jest zabezpieczenie zarówno dostępu (whitelist źródeł do dostępu do serwera API i odrzucenie wszelkich innych połączeń), jak i uwierzytelniania (zgodnie z zasadą najmniejszych uprawnień). I zdecydowanie nigdy nie pozwalaj na anonimowe żądania.
Typowy proces żądania: Użytkownik lub K8s ServiceAccount –> Uwierzytelnianie –> Autoryzacja –> Kontrola przyjęć.
Wskazówki:
Zamknij porty.
Unikaj dostępu anonimowego.
NodeRestriction; Brak dostępu z określonych węzłów do API.
Zasadniczo zapobiega kubeletom w dodawaniu/usuwaniu/aktualizowaniu etykiet z prefiksem node-restriction.kubernetes.io/. Ten prefiks etykiety jest zarezerwowany dla administratorów do etykietowania obiektów Node w celu izolacji obciążenia, a kubeletom nie będzie dozwolone modyfikowanie etykiet z tym prefiksem.
A także pozwala kubeletom dodawać/usuwać/aktualizować te etykiety i prefiksy etykiet.
Zapewnij za pomocą etykiet bezpieczną izolację obciążenia.
Unikaj dostępu do API dla określonych podów.
Unikaj wystawiania ApiServer na internet.
Unikaj nieautoryzowanego dostępu RBAC.
Port ApiServer z zaporą i białą listą IP.
Domyślnie użytkownik root będzie używany, gdy pod jest uruchamiany, jeśli nie zostanie określony inny użytkownik. Możesz uruchomić swoją aplikację w bardziej bezpiecznym kontekście, używając szablonu podobnego do poniższego:
Powinieneś aktualizować swoje środowisko Kubernetes tak często, jak to konieczne, aby mieć:
Zaktualizowane zależności.
Łatki błędów i zabezpieczeń.
Cykle wydania: Co 3 miesiące pojawia się nowe wydanie mniejsze -- 1.20.3 = 1(Major).20(Minor).3(patch)
Najlepszym sposobem na aktualizację klastra Kubernetes jest (z tutaj):
Zaktualizuj komponenty węzła głównego, postępując według tej sekwencji:
etcd (wszystkie instancje).
kube-apiserver (wszystkie hosty kontrolne).
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.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)