GlobalSign Blog

Por que o mTLS deve estar em todos os lugares do Kubernetes e não apenas na entrada e na saída

Por que o mTLS deve estar em todos os lugares do Kubernetes e não apenas na entrada e na saída

O Kubernetes tornou-se rapidamente uma das ferramentas mais usadas para gerenciar aplicativos em contêiner. A Pesquisa Anual da Cloud Native Computing Foundation 2021 constatou que 96% dos mais de 2.300 entrevistados específicos do Kubernetes já estavam usando o Kubernetes ou avaliando a ferramenta. Além disso, a pesquisa identificou 5,6 milhões de usuários do Kubernetes, um aumento de quase 70% em um único ano.

Assim, o Kubernetes também é um alvo comum para ataques cibernéticos. Em uma pesquisa da Veritas Technologies, 94% dos entrevistados expressaram preocupação com ataques de ransomware em ambientes Kubernetes e 56% já sofreram pelo menos um destes ataques.

Infelizmente, muitas empresas estão avançando com as implantações do Kubernetes antes de entender por completo todos os problemas de segurança relevantes. Ao fazer isso, eles estão aumentando desnecessariamente a própria superfície de ataque e se expondo a hacks.

Há muitas etapas que as empresas podem seguir para proteger suas cargas de trabalho do Kubernetes. Uma prática recomendada que o próprio Kubernetes recomenda é o amplo uso de segurança da camada de transporte (TLS). O TLS ajuda a evitar a detecção de tráfego em uma conexão cliente-servidor, verificando o servidor e criptografando o tráfego entre o cliente e o servidor.

Uma opção ainda melhor que os desenvolvedores devem aplicar em todos os lugares possíveis é o TLS mútuo (mTLS). Este artigo discute os benefícios do mTLS e como os desenvolvedores podem usá-lo a seu favor para frustrar possíveis invasores. 

O que é mTLS?

O TLS mútuo aprimora o TLS, autenticando ambos os lados da conexão cliente-servidor antes de trocar comunicações. Pode parecer uma atitude sensata, mas há muitas situações em que a identidade do cliente é irrelevante para a conexão.

Quando apenas a identidade do servidor importa, o TLS unidirecional padrão é a abordagem mais eficiente. O TLS usa criptografia de chave pública, exigindo um par de chaves pública e privada para comunicações criptografadas. Para verificar a identidade do servidor, o cliente envia uma mensagem criptografada usando a chave pública (obtida do certificado TLS do servidor) para o servidor. Apenas um servidor com a chave privada apropriada consegue descriptografar a mensagem, portanto, a descriptografia bem-sucedida autentica o servidor. 

Ter autenticação bidirecional exigiria que todos os clientes também tivessem certificados TLS oriundos de uma autoridade certificadora. Devido ao grande número de clientes em potencial (navegadores que acessam sites, por exemplo), gerar e gerenciar tantos certificados seria extremamente difícil.

No entanto, para alguns aplicativos e serviços, pode ser crucial verificar se apenas clientes confiáveis conectam-se ao servidor. Talvez apenas alguns usuários devam ter acesso a servidores específicos. Ou talvez você tenha chamadas de API que devem vir apenas de serviços específicos. Nessas situações, os encargos adicionais do mTLS valem a pena. E se sua empresa reforçar a segurança com políticas de zero trust onde toda tentativa de acesso ao servidor deve ser verificada, o mTLS é necessário.

O mTLS adiciona uma autenticação separada do cliente após a verificação do servidor. Somente depois de verificar ambas as partes da conexão, os dois podem trocar dados. Com o mTLS, o servidor sabe que uma fonte confiável está tentando acessá-lo.

Como o mTLS é útil para proteger o Kubernetes?

O mTLS geralmente é valioso para derrotar vários ataques. Eis os ataques que o mTLS consegue evitar:

  • Ataques de phishing: O phishing continua sendo uma das formas mais eficazes para os hackers acessarem redes corporativas. De fato, em 2021, o número de tentativas de phishing registrou seu nível mais alto. Os hackers têm inúmeras maneiras distintas de comprometer credenciais e tiveram muito êxito ao fazê-lo. No entanto, eles não conseguem usar essas credenciais para acessar servidores sem o certificado TLS necessário e a chave privada associada para uma conexão protegida por mTLS. Dados e sistemas confidenciais permanecem seguros.
  • Ataques de força bruta: Assim como nos ataques de phishing, mesmo que os hackers usem métodos de força bruta (p.ex.: ataques de dicionário) para comprometer as credenciais do usuário, eles não conseguem invadir conexões protegidas com mTLS.
  • Solicitações de API maliciosas: Muitos invasores tentam usar chamadas de API para prejudicar sistemas corporativos ou exfiltrar dados. Chamadas de API maliciosas podem ser um vetor eficaz para injetar malware (inclusive ransomware) ou até mesmo iniciar ataques DDoS (ataque de negação de serviço distribuído). Mas se a conexão da API exigir autenticação mútua, os invasores terão mais dificuldade em obter acesso.
  • Ataque man-in-the-middle: Em um ataque man-in-the-middle (MitM), o hacker injeta-se entre o servidor e o cliente, espionando ou mesmo alterando as comunicações entre os dois. Embora o TLS forneça alguma segurança contra ataques MitM, muitas vezes ele não consegue derrotá-los. O mTLS adiciona uma camada extra de autenticação que complica ainda mais os esforços dos invasores MitM e reduz ainda mais suas chances de sucesso.

Com o Kubernetes, muitos caminhos de comunicação diferentes podem se beneficiar do mTLS, principalmente comunicações entre microsserviços e comunicações entre microsserviços e qualquer servidor de API. O uso do mTLS protege essas comunicações sem a necessidade de nenhum processo de verificação ou gerenciamento de identidade específico no nível do aplicativo.

Os aplicativos em contêiner podem incluir muitos microsserviços diferentes que trocam dados, inclusive dados confidenciais de clientes. O mTLS impede que hackers interceptem essas comunicações e criem uma violação de dados.

O mTLS também oferece visibilidade adicional de possíveis ataques. Assim como outras ferramentas que fornecem informações em tempo real sobre comportamentos anômalos (ferramentas de análise de tráfego de rede como BlueHexagon, ferramentas de monitoramento de alteração e desfiguração de sites como Visualping, etc.), ao revisar os logs de auditoria, você detecta rapidamente atividades não autorizadas.

Finalmente, o mTLS não precisa criar dificuldades adicionais para o usuário. Em vez disso, quando implementado corretamente, o mTLS confere aos usuários uma sensação adicional de segurança sem complexidade extra, aprimorando a experiência geral do usuário. Quando o mTLS atua no nível da plataforma, apenas uma única ação de autenticação é necessária. Os usuários não precisam se autenticar novamente para cada microsserviço no aplicativo.

Aspectos práticos para se usar mTLS com Kubernetes

Embora o uso de mTLS em seu ambiente Kubernetes ofereça um nível de conforto adicional sobre segurança, ele tem um custo. Esse envolve a necessidade de um sistema eficaz de fornecimento e gerenciamento de certificados.

Ao aplicar amplamente o mTLS em uma implantação de contêiner do Kubernetes, lembre-se de que muitos clientes são serviços individuais. Cada um desses serviços precisará de seu próprio certificado e haverá muitos.

Além disso, os serviços do Kubernetes, pela própria natureza, são instáveis. Com réplicas de serviços do Kubernetes sendo criadas e destruídas dinamicamente, o desafio de gerenciar certificados é assustador.

Seu sistema de gerenciamento de certificados também deve ser robusto o suficiente para lidar com a interrupção e retomada de fornecimento de certificados de acordo com suas políticas de segurança internas. Se, como muitos, você confia na rotatividade de certificados (dando aos certificados uma vida útil limitada e emitindo novos certificados quando expirarem) para minimizar as chances de um hacker explorá-los, você deve ser capaz de atribuir novos certificados a todos os serviços afetados rapidamente.

Felizmente, inúmeras ferramentas estão disponíveis para ajudá-lo a gerenciar certificados facilmente, mesmo se você tiver um grande número de certificados para seus serviços do Kubernetes.

Conclusão

À medida que mais e mais empresas fazem a transição para a conteinerização e o uso de serviços de orquestração de contêineres, como o Kubernetes, haverá mais necessidade de métodos eficazes e eficientes para proteger os fluxos de dados entre os serviços nos contêineres. Ao aplicar o mTLS em todos os pontos possíveis, os desenvolvedores reduzem a superfície de ataque de um aplicativo e minimizam o risco de um hacker acessar dados e sistemas confidenciais.

Share this Post

Blogs mais recentes