Kubernetes Hardening

Apoie o HackTricks e obtenha benefícios!

Ferramentas para analisar um cluster

Kubescape

Kubescape é uma ferramenta de código aberto do K8s que fornece uma visão única do K8s em várias nuvens, incluindo análise de riscos, 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 vários 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 as tendências de risco ao longo do tempo.

kubescape scan --verbose

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 o kube-bench de dentro de um contêiner (compartilhando o namespace PID com o host)

  • executar um contêiner que instala o kube-bench no host e, em seguida, executar o kube-bench diretamente no host

  • instalar os binários mais recentes na página de lançamentos,

  • compilá-lo a partir do código-fonte.

Kubeaudit

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.

O kubeaudit pode detectar se está sendo executado dentro de um contêiner em um cluster. Se sim, ele tentará auditar todos os recursos do Kubernetes nesse cluster:

kubeaudit all

Esta ferramenta também possui o argumento autofix para corrigir automaticamente os problemas detectados.

Kube-hunter

A ferramenta kube-hunter busca por vulnerabilidades de segurança em clusters Kubernetes. A ferramenta foi desenvolvida para aumentar a conscientização e visibilidade de problemas de segurança em ambientes Kubernetes.

kube-hunter --remote some.node.com

Kubei

Kubei é uma ferramenta de varredura de vulnerabilidades e benchmark CIS Docker que permite aos usuários obter uma avaliação precisa e imediata do risco de seus clusters Kubernetes. O Kubei verifica todas as imagens que estão sendo usadas em um cluster Kubernetes, incluindo imagens de pods de aplicativos e pods do sistema.

KubiScan

KubiScan é uma ferramenta para varredura de clusters Kubernetes em busca de permissões arriscadas no modelo de autorização de controle de acesso baseado em função (RBAC) do Kubernetes.

Auditar o código IaC

Popeye

Popeye é uma utilidade que verifica o cluster Kubernetes em tempo real e relata possíveis problemas com recursos e configurações implantados. Ele limpa seu cluster com base no que está implantado e não no que está no disco. Ao verificar seu cluster, ele detecta configurações incorretas e ajuda a garantir que as melhores práticas estejam em vigor, evitando assim dores de cabeça futuras. Seu objetivo é reduzir a sobrecarga cognitiva enfrentada ao operar um cluster Kubernetes em ambiente real. Além disso, se o seu cluster usa um servidor de métricas, ele relata possíveis alocações excessivas ou insuficientes de recursos e tenta avisá-lo caso seu cluster fique sem capacidade.

Kicks

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.

Ele verifica a infraestrutura em nuvem provisionada usando Terraform, Terraform plan, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless ou ARM Templates e detecta configurações incorretas de segurança e conformidade usando varredura baseada em gráfico.

Kube-score

kube-score é uma ferramenta que realiza análise de código estático das definições de objetos Kubernetes.

Para instalar:

DistribuiçãoComando / Link

Binários pré-compilados para macOS, Linux e Windows

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

Monitoramento com Falco

Kubernetes PodSecurityContext e 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:

pageKubernetes SecurityContext(s)

Fortalecimento da API do Kubernetes

É muito importante proteger o acesso ao servidor de API do Kubernetes, pois um ator mal-intencionado com privilégios suficientes pode abusar dele e causar danos ao ambiente de várias maneiras. É importante garantir tanto o acesso (permitindo apenas origens na lista branca para acessar o servidor de API e negando qualquer outra conexão) quanto a autenticação (seguindo o princípio do privilégio mínimo). E definitivamente nunca permita solicitações anônimas.

Processo de solicitação comum: Usuário ou Conta de Serviço do K8s -> Autenticação -> Autorização -> Controle de Admissão.

Dicas:

  • Feche as portas.

  • Evite o acesso anônimo.

  • Restrição de Nó; Sem acesso de nós específicos à API.

  • Basicamente, impede que os kubelets adicionem/removam/atualizem rótulos com o prefixo node-restriction.kubernetes.io/. Esse prefixo de rótulo é reservado para administradores rotularem seus objetos Node para fins de isolamento de carga de trabalho, e os kubelets não poderão modificar rótulos com esse prefixo.

  • E também permite que os kubelets adicionem/removam/atualizem esses rótulos e prefixos de rótulos.

  • Garanta com rótulos o isolamento seguro da carga de trabalho.

  • Evite que pods específicos acessem a API.

  • Evite a exposição do ApiServer à internet.

  • Evite acesso não autorizado ao RBAC.

  • Porta do ApiServer com firewall e lista de permissões de IP.

Fortalecimento 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 seu aplicativo em um contexto mais seguro usando um modelo 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

Políticas de Rede do Kubernetes

Reforço 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(Major).20(Minor).3(patch)

A melhor maneira de atualizar um Cluster Kubernetes é (a partir daqui):

  • Atualize os componentes do Nó Mestre 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ó de Trabalho, como kube-proxy, kubelet.

Apoie o HackTricks e obtenha benefícios!

Última actualización