top of page
RealCloud_gradientes-04.png

Como Proteger o Kubernetes da Maneira Correta


“Kubernetes, comumente referido como K8s, é uma plataforma de orquestração de contêineres de código aberto para automatizar o deployment, escalabilidade e gerenciamento de aplicações em contêineres. O Kubernetes foi inicialmente desenvolvido pelo Google para seus data centers e, ao longo do tempo, evoluiu para um projeto conduzido pela comunidade, tornando-o acessível e adaptável a diversos ambientes. O Kubernetes oferece acessibilidade, flexibilidade e escalabilidade, permitindo que organizações implantem aplicações em ambientes on-premises, de nuvem híbrida ou em nuvens públicas.”


A palavra Kubernetes tem origens gregas e significa timoneiro ou piloto.


A Anatomia do Kubernetes

Em sua essência, o Kubernetes opera em uma arquitetura de nível de cluster composta por duas partes principais:


  1. Control Plane – Orquestra e toma decisões globais sobre o cluster, como escalonamento de pods e resposta a eventos do cluster (lançamento de novas réplicas e pods).

  2. Data Plane – Gerencia os worker nodes que executam as aplicações em contêineres.



O plano de controle atua como o cérebro da operação e executa alguns componentes críticos:


  1. kube-apiserver – expõe a API do Kubernetes.

  2. etcd – armazenamento de dados do Kubernetes para todos os dados do cluster.

  3. kube-scheduler – observa pods recém-criados sem um nó atribuído e seleciona um nó para executá-los.


O plano de controle (control plane) do K8s pode ser autogerenciado ou gerenciado por um provedor de nuvem (Amazon EKS, Azure AKS, Google GKE). Por outro lado, os nós de trabalho são máquinas virtuais (VMs) que hospedam a carga de trabalho real da aplicação em contêineres, organizados em unidades chamadas pods. Os próprios pods são compostos pelos componentes da carga de trabalho da aplicação.





Protegendo o Kubernetes

Para alcançar uma segurança ideal no Kubernetes, é crucial monitorar e proteger o K8s em vários níveis: o plano de controle e o plano de dados, que inclui infraestrutura, aplicações e contêineres.


Um cluster Kubernetes comprometido pode resultar em violações de dados, interrupções de serviço e danos à reputação à empresa que detém o cluster. Um único cluster Kubernetes pode incluir dezenas de aplicações e pontos de entrada, permitindo que uma única violação se espalhe rapidamente além do ponto de entrada. Implementando medidas proativas de segurança em tempo real e em tempo de execução, as organizações podem evitar violações de segurança custosas e proteger seus ativos, enquanto mantêm a conformidade e governança.


Protegendo o Control Plane


A maioria das organizações hoje utiliza um serviço Kubernetes gerenciado, frequentemente fornecido por provedores de nuvem como EKS, GKE e AKS, ou uma distribuição comum como KOPS. Para interagir com o cluster Kubernetes, é necessário se comunicar com o servidor de API do Kubernetes, que faz parte do plano de controle. O servidor de API expõe uma API HTTP que permite que usuários finais, diferentes partes do seu cluster e componentes externos se comuniquem entre si. É crucial não apenas garantir o acesso seguro ao servidor de API, mas também monitorar continuamente o seu uso.


Ambientes Kubernetes gerenciados têm acesso limitado ao plano de controle. Provedores de nuvem permitem que você exporte logs para vários serviços do plano de controle, enquanto um serviço não gerenciado como o KOPS requer configuração e manutenção do plano de controle, juntamente com todos os registros.



Alguns dos ataques mais comuns que você deve proteger o plano de controle incluem:


  • Acesso não autorizado ao endpoint do servidor de API.

  • Dump de secrets.

  • Acesso público.

  • RBAC excessivo.

  • Manipulações do Kubelet.

  • Permissões excessivas de service accounts.

  • Pods privilegiados.


Exemplos recentes de ataques generalizados ao Kubernetes incluem o ataque RBAC Buster, no qual mineradores de criptomoedas aproveitaram as permissões do RBAC para criar backdoors e executar mineradores de criptomoedas. Durante o ataque, os mineradores implantaram DaemonSets para se apossar dos recursos dos clusters Kubernetes após obterem acesso por meio de um servidor de API mal configurado e usando RBAC para executar em clusters comprometidos.


Em outro ataque recente de mineração de criptomoedas chamado SCARLETEEL, os invasores miraram em ambientes de nuvem, contornando medidas de segurança para realizar intrusões inovadoras. Durante o ataque, os atores mal-intencionados exploraram políticas AWS mal configuradas para escalar privilégios e assumir o controle de contas. Após a entrada, eles visaram o Kubernetes para implantar malwares, incluindo ferramentas de mineração de criptomoedas. Felizmente, neste caso, os atacantes exploraram o ambiente do Kubernetes principalmente para mineração de criptomoedas, embora tenha sido determinado que eles tiveram a oportunidade de se envolver em roubo de dados.


Protegendo a Infraestrutura do Data Plane

Como visto nos exemplos acima, em um ambiente Kubernetes, um nó comprometido pode se tornar um ponto de partida para os atacantes percorrerem o cluster, comprometendo potencialmente outros pods e nós. Para evitar isso, é essencial implementar medidas robustas de segurança para proteger todo o cluster Kubernetes em tempo real.



Como Proteger a Infraestrutura do Data Plane

Proteger o plano de dados requer medidas robustas de segurança, incluindo escaneamento de vulnerabilidades, contextualização e priorização de CVEs, e detecção inteligente de ameaças. Uma segurança efetiva do plano de dados requer insights em tempo de execução para entender fatores ambientais e ameaças em tempo real.








Escaneamento de Vulnerabilidades em Tempo de Execução no Kubernetes

É essencial escanear todas as imagens e pods em execução que executam uma aplicação, pois imagens vulneráveis podem causar danos generalizados no cluster usando técnicas de escalada de privilégios. Enquanto ferramentas legadas se concentraram em escanear por configurações incorretas antes de serem implementadas e executadas em ambientes produtivos, um escaneamento mais robusto e contínuo é necessário para garantir a segurança do Kubernetes em ambientes dinâmicos em tempo de execução.


Pontos Cegos e Ruídos de Segurança no Kubernetes

Por exemplo, muitas ferramentas de segurança antigas escaneiam imagens durante a fase de construção ou quando elas atingem o repositório. No entanto, isso não fornece uma visão clara de quais imagens e CVEs estão ativamente presentes em ambientes de produção ao vivo, criando um ambiente barulhento para os engenheiros de segurança.


A abordagem moderna (e correta) de proteger o Kubernetes é a de escanear imagens em runtime enquanto estão em execução no cluster, garantindo escaneamento atualizado e um inventário preciso de todas as imagens em execução e CVEs ativas, com anexação em tempo real às suas configurações na nuvem.


Para lidar com o número cada vez maior de vulnerabilidades de segurança em aplicações, as equipes de segurança precisam saber onde está a vulnerabilidade (por exemplo, em produção versus ambiente de QA/Teste) e se o serviço está se comunicando ativamente com a Internet ou sendo alvo de algum ataque. Esse contexto faz uma diferença substancial ao determinar se vale a pena priorizar a remediação ou mitigar ativamente possíveis explorações.













Há inúmeros fatores que devem ser considerados ao priorizar CVEs do Kubernetes, incluindo:


  • O ambiente do serviço (produção, teste ou sandbox)

  • Se o pacote vulnerável associado ao serviço está realmente em uso

  • Se o serviço está se comunicando ativamente ou exposto à Internet e em quais portas

  • Se o serviço foi atacado recentemente

  • Se as condições ambientais do ataque são atendidas para indicar se as vulnerabilidades estão sendo realmente exploradas no serviço específico.


Detecção Inteligente de Ameaças

Além de executar uma estratégia eficaz de priorização e gerenciamento de vulnerabilidades, as organizações também devem realizar detecção inteligente de ameaças. Containers são dinâmicos e versáteis, efêmeros por natureza, e realizam múltiplas ações, tornando-os um alvo atraente para atores mal-intencionados explorarem e realizarem operações maliciosas.




Embora varreduras à esquerda (na parte do ciclo de vida da aplicação mais próximo ao desenvolvimento) para configurações incorretas e vulnerabilidades possam ajudar a fortalecer o ambiente de nuvem, não há maneira de encontrar e proteger completamente contra ameaças no plano de dados do Kubernetes sem o uso sensores em tempo de execução (Runtime). Isso levou ao surgimento de ferramentas de detecção inteligente de ameaças para fornecer insights sobre ambientes de tempo de execução na nuvem, oferecendo às equipes de segurança informações necessárias sobre ameaças em tempo real.


Por exemplo, softwares maliciosos, também conhecidos como malware, podem se apresentar em diversas formas, desde processos comuns até arquivos e códigos maliciosos na memória. Threat intelligence streams (feeds de inteligência contra ameaças) são necessárias para identificar e proteger contra ataques avançados de malware em arquivos executáveis, processos em execução e até mesmo código malicioso sem uso de arquivos (na memória). Uma estratégia abrangente de detecção inteligente de ameaças também incluirá detecções de comunicação externa maliciosa, observando o tráfego de entrada e saída na Internet em um ambiente de nuvem para garantir que nenhum tráfego de saída vá para IPs e domínios maliciosos.


O Caminho Certo para Garantir a Segurança em Tempo de Execução

Enquanto estabelecemos a importância de garantir a segurança do Kubernetes durante a execução nos níveis de infraestrutura, aplicação e contêineres, a próxima pergunta é como monitorar melhor esses ambientes para evitar potenciais violações de segurança.


Um desenho de arquitetura disponível para monitorar pods e contêineres em tempo de execução é o uso de sidecars. Sidecars são contêineres adicionais implantados junto com os contêineres principais em um pod. Eles fornecem funcionalidades adicionais, como geração de logs, monitoramento ou imposição de segurança. Embora os sidecars possam aprimorar a segurança, também introduzem carga de recursos aumentada e riscos potenciais, como vazamentos de memória ou falhas de aplicação, que precisam ser gerenciados com cuidado. Além disso, muitas vezes são difíceis de implantar e gerenciar, levando muitos profissionais de segurança a evitarem seu uso. Apesar de poderem ajudar na monitoração de segurança, o peso adicional nos recursos necessários, a implementação difícil e o potencial de degradação de desempenho tornam os sidecars uma opção pouco atraente para muitas organizações.


Outra opção para monitoramento de pods e contêineres é aproveitar o kernel Linux e agentes eBPF para insights detalhados em tempo real. O eBPF é uma tecnologia de código aberto integrada ao kernel Linux que se tornou popular nos últimos anos, oferecendo capacidades de monitoramento leves e detalhadas em um nível que anteriormente não estava disponível. Com o eBPF, as organizações podem monitorar a execução de processos, chamadas do sistema, acesso a arquivos, comunicação na camada de rede e acesso a dados dentro das implantações do Kubernetes. Isso fornece aos líderes de segurança insights detalhados em tempo real sobre seu ambiente Kubernetes, permitindo que garantam a integridade das cargas de trabalho em contêineres e recebam visibilidade e contexto profundos de ameaças e vulnerabilidades do Kubernetes, a qualquer momento.


Os agentes eBPF também evitam os principais problemas associados aos sidecars, pois são leves e usam uma quantidade mínima de CPU, permitindo que evitem colocar carga desnecessária nos recursos ou aumentar o risco de falha da aplicação. Os agentes eBPF também são significativamente mais fáceis de implantar e operacionalizar, tornando-os uma opção atraente para líderes de segurança que buscam garantir a segurança do Kubernetes sem grandes encargos operacionais.


Garantir a segurança do Kubernetes é crucial para a segurança geral da nuvem das organizações. Ao focar em usar insights em tempo de execução e detecções em tempo real para garantir a segurança da infraestrutura, aplicações e contêineres dentro do Kubernetes, as organizações podem mitigar riscos e fortalecer seu ambiente contra ameaças potenciais. Ao combinar boas práticas como atualizações regulares, validação de imagens e medidas de segurança, com tecnologias inovadoras de monitoramento em tempo de execução como o eBPF, as organizações podem adotar o Kubernetes com confiança, protegendo seus ativos digitais em um cenário de ameaças em constante evolução.



19 visualizações0 comentário

Posts recentes

Ver tudo
logo-realcloud-fundo-claro.png

© 2023 por RealCloud

Webdesign por Vivian Pan e Carolina Mortara

ENDEREÇO

Rua XV de Novembro, 106

Andar 3, sala 309

Centro, Niterói, RJ - Brasil

(21) 2179-7788

CEP 24020-125


848 Brickell Ave Ste 203
Downtown, Miami, FL

+1 (786) 6608292

ZIP  33131

CONTATO

Telefone: +55 (21) 2179 7788

Email: contato@realcloud.systems

Seg - Sext: 9:00 - 18:00

  • Preto Ícone LinkedIn
  • Youtube
  • Preto Ícone Instagram
bottom of page