Endurecimento do Kubernetes
Reading time: 10 minutes
tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Ferramentas para analisar um cluster
Steampipe - Kubernetes Compliance
Ele realiza várias verificações de conformidade no cluster Kubernetes. Inclui suporte para CIS, National Security Agency (NSA) e para o relatório técnico de Cybersecurity da Cybersecurity and Infrastructure Security Agency (CISA) sobre hardening do Kubernetes.
# Install Steampipe
brew install turbot/tap/powerpipe
brew install turbot/tap/steampipe
steampipe plugin install kubernetes
# Start the service
steampipe service start
# Install the module
mkdir dashboards
cd dashboards
powerpipe mod init
powerpipe mod install github.com/turbot/steampipe-mod-kubernetes-compliance
# Run the module
powerpipe server
Kubescape
Kubescape é uma ferramenta K8s de código aberto que fornece um único painel K8s multi-cloud, incluindo análise de risco, compliance de segurança, visualizador de RBAC e varredura de vulnerabilidades em imagens. Kubescape escaneia clusters K8s, arquivos YAML e HELM charts, detectando misconfigurações de acordo com múltiplos frameworks (como o NSA-CISA , MITRE ATT&CK®), vulnerabilidades de software e violações de RBAC (role-based-access-control) em estágios iniciais do pipeline CI/CD, calcula a pontuação de risco instantaneamente e mostra tendências de risco ao longo do tempo.
curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash
kubescape scan --verbose
Popeye
Popeye é uma utilidade que escaneia clusters Kubernetes ao vivo e relata problemas potenciais com recursos e configurações implantadas. Ele sanitiza seu cluster com base no que está implantado e não no que está no disco. Ao escanear seu cluster, detecta misconfigurações e ajuda a garantir que as melhores práticas estejam em vigor, evitando dores de cabeça futuras. Tem como objetivo reduzir a _over_load que se enfrenta ao operar um cluster Kubernetes em ambiente real. Além disso, se seu cluster empregar um metric-server, ele relata potenciais alocações de recursos em excesso/falta e tenta alertar caso seu cluster fique sem capacidade.
Kube-bench
A ferramenta kube-bench é uma ferramenta que verifica se o Kubernetes está implantado de forma segura executando as verificações documentadas no [CIS Kubernetes Benchmark].
Você pode escolher:
- run kube-bench from inside a container (sharing PID namespace with the host)
- run a container that installs kube-bench on the host, and then run kube-bench directly on the host
- install the latest binaries from the Releases page,
- compile it from source.
Kubeaudit
[DEPRECATED] A ferramenta kubeaudit é uma ferramenta de linha de comando e um pacote Go para auditar clusters Kubernetes por várias preocupações diferentes.
Kubeaudit pode detectar se está sendo executado dentro de um container em um cluster. Se sim, ele tentará auditar todos os recursos Kubernetes nesse cluster:
kubeaudit all
Esta ferramenta também possui o argumento autofix para corrigir automaticamente os problemas detectados.
Kube-hunter
[DEPRECADO] A ferramenta kube-hunter procura por vulnerabilidades de segurança em clusters Kubernetes. A ferramenta foi desenvolvida para aumentar a conscientização e a visibilidade sobre problemas de segurança em ambientes Kubernetes.
kube-hunter --remote some.node.com
Trivy
Trivy possui scanners que procuram por problemas de segurança, e alvos onde ele pode encontrar esses problemas:
- Imagem de Container
- Sistema de arquivos
- Repositório Git (remoto)
- Imagem de Máquina Virtual
- Kubernetes
Kubei
[Parece descontinuado]
Kubei é uma ferramenta de scanning de vulnerabilidades e CIS Docker benchmark que permite aos usuários obter uma avaliação de risco precisa e imediata de seus clusters kubernetes. Kubei escaneia todas as imagens que estão sendo usadas em um cluster Kubernetes, incluindo imagens de pods de aplicação e pods do sistema.
KubiScan
KubiScan é uma ferramenta para escanear clusters Kubernetes em busca de permissões arriscadas no modelo de autorização Role-based access control (RBAC) do Kubernetes.
Managed Kubernetes Auditing Toolkit
Mkat é uma ferramenta construída para testar outros tipos de verificações de alto risco em comparação com as outras ferramentas. Ela possui principalmente 3 modos diferentes:
find-role-relationships: Que encontrará quais AWS roles estão sendo executadas em quais podsfind-secrets: Que tenta identificar Secrets em recursos K8s, como Pods, ConfigMaps e Secrets.test-imds-access: Que tentará executar pods e acessar o metadata v1 e v2. AVISO: Isto executará um pod no cluster; tenha muito cuidado, pois talvez você não queira fazer isso!
Auditar código IaC
KICS
KICS encontra vulnerabilidades de segurança, problemas de conformidade e más configurações de infraestrutura nas seguintes soluções de Infraestrutura como Código: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM, e especificações OpenAPI 3.0
Checkov
Checkov é uma ferramenta de análise estática de código para infraestrutura como código.
Ele escaneia infraestrutura de nuvem provisionada usando Terraform, Terraform plan, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless ou ARM Templates e detecta más configurações de segurança e conformidade usando varredura baseada em grafo.
Kube-score
kube-score é uma ferramenta que realiza análise estática de código das definições de objetos do seu Kubernetes.
To install:
| Distribution | Command / Link |
|---|---|
| Pre-built binaries for macOS, Linux, and Windows | GitHub releases |
| Docker | docker pull zegl/kube-score (Docker Hub) |
| Homebrew (macOS and Linux) | brew install kube-score |
| Krew (macOS and Linux) | kubectl krew install score |
Ferramentas para analisar arquivos YAML & Helm Charts
Kube-linter
# Install Kube-linter
brew install kube-linter
# Run Kube-linter
## lint ./path/to/yaml/or/chart
Checkov
# Install Checkov
pip install checkov
# Run Checkov
checkov -d ./path/to/yaml/or/chart
kube‑score
# Install kube-score
brew install kube-score
# Run kube-score
kube-score score ./path/to/yaml
# or
helm template chart /path/to/chart | kube-score score -
# or if the chart needs some values
helm template chart /path/to/chart \
--set 'config.urls[0]=https://dummy.backend.internal' \
| kube-score score -
Kubesec
# Install Kubesec
## Download from https://github.com/controlplaneio/kubesec/releases
# Run Kubesec in a yaml
kubesec scan ./path/to/yaml
# or
helm template chart /path/to/chart | kubesec scan -
# or if the chart needs some values
helm template chart /path/to/chart \
--set 'config.urls[0]=https://dummy.backend.internal' \
| kubesec scan -
Dicas
Kubernetes PodSecurityContext and SecurityContext
Você pode configurar o contexto de segurança dos Pods (com PodSecurityContext) e dos containers que serão executados (com SecurityContext). Para mais informações leia:
Endurecimento da API do Kubernetes
É muito importante proteger o acesso ao Kubernetes Api Server, pois um ator malicioso com privilégios suficientes poderia abusar dele e causar muitos danos ao ambiente.
É importante proteger tanto o acesso (whitelist as origens que podem acessar o API Server e negar qualquer outra conexão) quanto a autenticação (seguindo o princípio do mínimo privilégio). E definitivamente nunca permita requisições anônimas.
Processo comum de requisição:
User or K8s ServiceAccount –> Authentication –> Authorization –> Admission Control.
Dicas:
- Feche portas.
- Evite acesso anônimo.
- NodeRestriction; Sem acesso de nós específicos à API.
- https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction
- Basicamente previne que kubelets adicionem/removam/atualizem labels com o prefixo node-restriction.kubernetes.io/. Esse prefixo de label é reservado para administradores rotularem seus objetos Node para fins de isolamento de workload, e os kubelets não poderão modificar labels com esse prefixo.
- E também, permite que kubelets adicionem/removam/atualizem esses labels e prefixos de label.
- Assegure, com labels, o isolamento seguro das workloads.
- Evite que pods específicos tenham acesso à API.
- Evite a exposição do ApiServer à Internet.
- Evite acesso não autorizado via RBAC.
- Proteja a porta do ApiServer com firewall e whitelist de IPs.
Endurecimento do SecurityContext
Por padrão o usuário root será usado quando um Pod for iniciado se nenhum outro usuário for especificado. Você pode executar sua aplicação dentro de um contexto mais seguro usando um template similar ao seguinte:
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
- https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
- https://kubernetes.io/docs/concepts/policy/pod-security-policy/
Endurecimento Geral
Você deve atualizar seu ambiente Kubernetes com a frequência necessária para ter:
- Dependências atualizadas.
- Correções de bugs e de segurança.
Release cycles: A cada 3 meses há um novo minor release -- 1.20.3 = 1(Major).20(Minor).3(patch)
A melhor forma de atualizar um Kubernetes Cluster é (a partir de here):
- Atualize os componentes do Master Node seguindo esta sequência:
- etcd (all instances).
- kube-apiserver (all control plane hosts).
- kube-controller-manager.
- kube-scheduler.
- cloud controller manager, if you use one.
- Atualize os componentes dos Worker Nodes como kube-proxy, kubelet.
Kubernetes monitoring & security:
- Kyverno Policy Engine
- Cilium Tetragon - eBPF-based Security Observability and Runtime Enforcement
- Network Security Policies
- Falco - Runtime security monitoring & detection
tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
HackTricks Cloud