Kubernetes Hardening
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 fará vários checks de conformidade sobre o cluster Kubernetes. Inclui suporte para CIS, Agência de Segurança Nacional (NSA) e o relatório técnico de cibersegurança da Agência de Segurança Cibernética e Infraestrutura (CISA) para o endurecimento 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 de código aberto K8s que fornece uma visão única multi-nuvem do K8s, incluindo análise de risco, conformidade de segurança, visualizador de RBAC e verificação de vulnerabilidades de imagem. O Kubescape escaneia clusters K8s, arquivos YAML e gráficos HELM, detectando configurações incorretas de acordo com múltiplos frameworks (como o NSA-CISA, MITRE ATT&CK®), vulnerabilidades de software e violações de RBAC (controle de acesso baseado em função) nas primeiras etapas 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 ferramenta que escaneia clusters Kubernetes ativos e relata problemas potenciais com recursos e configurações implantados. Ele sanitiza seu cluster com base no que está implantado e não no que está armazenado em disco. Ao escanear seu cluster, ele detecta configurações incorretas e ajuda a garantir que as melhores práticas estejam em vigor, prevenindo assim dores de cabeça futuras. Seu objetivo é reduzir a sobrecarga cognitiva que se enfrenta ao operar um cluster Kubernetes no ambiente. Além disso, se seu cluster empregar um metric-server, ele relata potenciais alocações de recursos excessivas ou insuficientes e tenta avisá-lo 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:
- executar kube-bench de dentro de um contêiner (compartilhando o namespace PID com o host)
- executar um contêiner que instala kube-bench no host e, em seguida, executar kube-bench diretamente no host
- instalar os binários mais recentes da página de Releases,
- compilá-lo a partir do código-fonte.
Kubeaudit
[DEPRECATED] A ferramenta kubeaudit é uma ferramenta de linha de comando e um pacote Go para auditar clusters Kubernetes em relação a várias preocupações de segurança diferentes.
Kubeaudit pode detectar se está sendo executado dentro de um contêiner em um cluster. Se sim, tentará auditar todos os recursos Kubernetes nesse cluster:
kubeaudit all
Esta ferramenta também possui o argumento autofix
para corrigir automaticamente problemas detectados.
Kube-hunter
[DEPRECADO] A ferramenta kube-hunter busca por fraquezas 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 podem encontrar esses problemas:
- Imagem de Contêiner
- Sistema de Arquivos
- Repositório Git (remoto)
- Imagem de Máquina Virtual
- Kubernetes
Kubei
[Parece não estar mantido]
Kubei é uma ferramenta de escaneamento de vulnerabilidades e benchmark CIS Docker 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 de sistema.
KubiScan
KubiScan é uma ferramenta para escanear clusters Kubernetes em busca de permissões arriscadas no modelo de autorização de controle de acesso baseado em função (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 funções AWS estão sendo executadas em quais podsfind-secrets
: Que tenta identificar segredos em recursos K8s, como Pods, ConfigMaps e Secrets.test-imds-access
: Que tentará executar pods e tentar acessar os metadados v1 e v2. AVISO: Isso executará um pod no cluster, tenha muito cuidado porque talvez você não queira fazer isso!
Auditar Código IaC
KICS
KICS encontra vulnerabilidades de segurança, problemas de conformidade e configurações incorretas 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 de código estático para infraestrutura como código.
Ela escaneia a infraestrutura em nuvem provisionada usando Terraform, plano Terraform, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless ou ARM Templates e detecta configurações incorretas de segurança e conformidade usando escaneamento baseado em grafo.
Kube-score
kube-score é uma ferramenta que realiza análise de código estático das definições de objetos do Kubernetes.
Para instalar:
Distribuição | Comando / Link |
---|---|
Binários pré-compilados para macOS, Linux e Windows | Lançamentos do GitHub |
Docker | docker pull zegl/kube-score (Docker Hub) |
Homebrew (macOS e Linux) | brew install kube-score |
Krew (macOS e Linux) | kubectl krew install score |
Dicas
Kubernetes PodSecurityContext e SecurityContext
Você pode configurar o contexto de segurança dos Pods (com PodSecurityContext) e dos contêineres 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 pode ser capaz de abusar dele e causar danos de várias maneiras ao ambiente.
É importante garantir tanto o acesso (whitelist de origens para acessar o API Server e negar qualquer outra conexão) quanto a autenticação (seguindo o princípio do menor privilégio). E definitivamente nunca permitir requisições anônimas.
Processo Comum de Requisição:
Usuário ou K8s ServiceAccount –> Autenticação –> Autorização –> Controle de Admissão.
Dicas:
- Fechar portas.
- Evitar acesso anônimo.
- NodeRestriction; Sem acesso de nós específicos ao API.
- https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction
- Basicamente impede que kubelets adicionem/removam/atualizem rótulos com um prefixo node-restriction.kubernetes.io/. Este prefixo de rótulo é reservado para administradores rotularem seus objetos Node para fins de isolamento de carga de trabalho, e kubelets não poderão modificar rótulos com esse prefixo.
- E também, permite que kubelets adicionem/removam/atualizem esses rótulos e prefixos de rótulo.
- Assegure com rótulos o isolamento seguro de carga de trabalho.
- Evite que pods específicos acessem a API.
- Evite a exposição do ApiServer à internet.
- Evite acesso não autorizado RBAC.
- Porta do ApiServer com firewall e whitelist de IP.
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 semelhante 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 segurança.
Ciclos de lançamento: A cada 3 meses há um novo lançamento menor -- 1.20.3 = 1(Maior).20(Menor).3(patch)
A melhor maneira de atualizar um Cluster Kubernetes é (a partir de aqui):
- Atualize os componentes do Nó Master seguindo esta sequência:
- etcd (todas as instâncias).
- kube-apiserver (todos os hosts do plano de controle).
- kube-controller-manager.
- kube-scheduler.
- cloud controller manager, se você usar um.
- Atualize os componentes do Nó Worker, como kube-proxy, kubelet.
Monitoramento e segurança do Kubernetes:
- Kyverno Policy Engine
- Cilium Tetragon - Observabilidade de Segurança e Aplicação em Tempo de Execução baseada em eBPF
- Políticas de Segurança de Rede
- Falco - Monitoramento e detecção de segurança em tempo de execução
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.