Contêineres do Windows Server 2016
Sep 27, 2018
O Windows Server 2016 introduz a tecnologia de contêineres para isolar aplicações, reduzir superfícies de ataque e melhorar a escalabilidade. Os contêineres do Windows Server compartilham o kernel do sistema operacional hospedeiro para isolamento leve de processos, enquanto os contêineres Hyper-V adicionam separação no nível de VM para segurança aprimorada. Com a integração do Docker e suporte ao Nano Server, os contêineres otimizam o desenvolvimento e as operações, ao mesmo tempo que reforçam o princípio do menor privilégio e melhoram a segurança orientada pela identidade.
Você pode melhorar a segurança da infraestrutura de desenvolvimento de sua aplicação reduzindo o tamanho e o escopo dos recursos de aplicação e computação. Uma maneira de fazer isso é contêinerizar as cargas de trabalho. Os contêineres do Windows Server e do Microsoft Hyper-V permitem que você isole as cargas de trabalho umas das outras e do sistema operacional. Mesmo que um contêiner seja comprometido por um atacante, será difícil para o atacante acessar o sistema operacional do host. Os contêineres também fornecem um ambiente padronizado para equipes de desenvolvimento, teste e produção.
Baixe o guia gratuito:
Contêineres
Os contêineres fornecem um ambiente operacional isolado e portátil para aplicativos. Do ponto de vista do aplicativo, um contêiner parece ser um sistema operacional Windows completo e isolado, com seu próprio sistema de arquivos, dispositivos e configuração. Portanto, em muitos aspectos, os contêineres são como máquinas virtuais (VMs) porque executam um sistema operacional, suportam um sistema de arquivos e você pode acessá-los através de uma rede de forma semelhante a qualquer outra máquina física ou VM.
Os containers são ambientes virtuais que compartilham o kernel do sistema operacional hospedeiro, mas fornecem isolamento do espaço do usuário, de modo que oferecem um ambiente ideal no qual um aplicativo pode ser executado sem afetar os demais componentes do modo usuário do sistema operacional e sem que os outros componentes do modo usuário afetem o aplicativo. Utilizando containers, os desenvolvedores podem criar e testar aplicativos rapidamente em um ambiente isolado, enquanto usam apenas alguns recursos do sistema operacional. Isso significa que os containers não precisam de todos os processos e serviços que um sistema operacional em uma VM poderia utilizar.
O Windows Server 2016 suporta dois tipos de contêineres:
- Contêineres do Windows Server. Esses contêineres fornecem isolamento de aplicativos por meio da tecnologia de isolamento de processo e namespace. Os contêineres do Windows Server compartilham o kernel do SO com o host do contêiner e com todos os outros contêineres que executam no host.
- Contêineres Hyper-V. Esses contêineres ampliam o isolamento que os contêineres do Windows Server fornecem ao executar cada contêiner em uma VM altamente otimizada.
A utilização de containers oferece múltiplos benefícios. O tamanho reduzido do sistema operacional significa que é necessário manter menos componentes do sistema operacional, o que por sua vez resulta em menos potenciais riscos de segurança. O tamanho reduzido do sistema operacional também ajuda a melhorar a escalabilidade.
Conteúdo relacionado selecionado:
Docker
Para executar uma carga de trabalho de aplicativo em um contêiner, você deve usar o Docker. Docker é um conjunto de ferramentas de código aberto e serviços baseados na nuvem que fornecem um modelo comum para empacotar (containerizar) o código do aplicativo em uma unidade padronizada para o desenvolvimento de software. Essa unidade padronizada, ou contêiner Docker, é um software que está envolto em um sistema de arquivos completo que inclui tudo o que precisa para funcionar, incluindo código, ambiente de execução, ferramentas do sistema, bibliotecas do sistema e qualquer outra coisa que você possa instalar em um servidor. Você deve baixar o Docker separadamente; ele não faz parte da mídia de instalação do Windows Server 2016.
Nano Server
O Microsoft Nano Server é uma opção de instalação relativamente nova para o Windows Server 2016. É um sistema operacional leve projetado para uso com instâncias de contêiner virtualizadas. Não possui interface de usuário; você deve gerenciar o Nano Server remotamente usando o PowerShell, mas este PowerShell difere do padrão. A partir da versão 1803 do Windows Server, o Nano Server está disponível apenas como uma imagem de sistema operacional baseada em contêiner, e você deve executá-lo como um contêiner em um host de contêiner, como o Docker. Você pode solucionar problemas desses novos contêineres Nano usando o Docker e executá-los no IoT Core.
Uma instância do Nano Server não pode funcionar como um controlador de domínio do Active Directory. Em particular, não suporta as seguintes funcionalidades:
- Política de Grupo
- Agrupamento de placas de interface de rede
- Adaptadores de barramento de host virtual
- Acesso do servidor proxy à internet
- System Center Configuration Manager
- System Center Data Protection Manager
O Nano Server suporta os seguintes papéis:
- Serviços de Arquivos
- Hyper-V
- IIS
- Servidor DNS
FAQ
Como você protege os contêineres do Windows Server 2016 contra a escalada de privilégios?
A segurança de contêineres Windows começa com a identidade – porque a Data Security That Starts with Identity significa controlar quem pode acessar o quê no nível do contêiner. Contêineres do Windows Server 2016 executam com isolamento de processo por padrão, o que oferece alguma proteção, mas você precisa de controles de segurança em camadas para prevenir ataques de privilege escalation.
Primeiro, implemente os princípios de menor privilégio executando contêineres com contas de usuário não administrador sempre que possível. Use a diretiva USER no seu Dockerfile para especificar uma conta de baixo privilégio e evite executar contêineres como Local System ou Administrator a menos que seja absolutamente necessário. Configure os limites de recursos do contêiner para prevenir ataques de exaustão de recursos que poderiam levar a escalonamento de privilégios.
Implemente contas de serviço gerenciadas por grupo (gMSAs) para contêineres que precisam de autenticação de domínio – isso fornece gerenciamento automático de senhas e reduz a exposição de credenciais. Configure políticas do Windows Defender Application Control para restringir quais aplicações podem ser executadas dentro dos seus contêineres, criando uma barreira adicional contra a execução de código malicioso.
Para um isolamento aprimorado, utilize contêineres Hyper-V em vez de contêineres do Windows Server ao lidar com dados sensíveis. Os contêineres Hyper-V fornecem isolamento a nível de hardware que torna muito mais difícil o movimento lateral para atacantes. Monitore continuamente os eventos de acesso e autenticação de contêineres – você não pode gerenciar o que não pode ver, e identificar comportamentos de risco antes que se transformem em violações requer visibilidade em tempo real da atividade dos contêineres.
Habilite o Encaminhamento de Eventos do Windows para centralizar os logs de segurança de contêineres e configure o monitoramento do Log de Eventos de Segurança para falhas de autenticação, tentativas de escalonamento de privilégios e criação suspeita de processos dentro de contêineres. A varredura de segurança regular de imagens de contêineres antes do deployment ajuda a prevenir que vulnerabilidades conhecidas alcancem ambientes de produção.
Quais são as implicações de Identity Management dos contêineres Windows?
Os contêineres do Windows herdam o contexto de segurança do host, o que cria desafios únicos de Identity Management que impactam diretamente a sua Data Security Posture Management. Diferentemente das VMs tradicionais, os contêineres compartilham o kernel do sistema operacional do host, então credenciais de contêiner comprometidas podem potencialmente afetar todo o sistema do host.
Os processos do container são executados sob contas de usuário específicas do Windows, e essas identidades determinam quais dados e recursos do sistema cada container pode acessar. Quando você implanta containers em larga escala, está essencialmente multiplicando sua superfície de ataque de identidade – cada container se torna um ponto de entrada potencial para roubo de credenciais ou ataques de movimento lateral.
O impacto prático é que sua estratégia de identidade de contêiner precisa se integrar ao seu programa de governança de identidade mais amplo. Use contas de serviço gerenciadas por grupo (gMSAs) para processos de contêiner que precisam de autenticação de domínio – gMSAs fornecem gerenciamento automático de senhas e eliminam a necessidade de armazenar credenciais em imagens de contêiner. Implemente controles de acesso baseados em identidade que tratam identidades de contêiner como qualquer outra conta privilegiada em seu ambiente, com rotação adequada, monitoramento e aplicação de privilégio mínimo.
Considere desafios específicos de identidade em contêineres, como a persistência de credenciais após reinicializações, métodos seguros de injeção de credenciais e o gerenciamento do ciclo de vida de contas de serviço em ambientes dinâmicos de contêineres. Sua solução de Identity Management deve proporcionar visibilidade sobre quais contêineres estão utilizando quais identidades e quais recursos eles estão acessando.
Como você audita o acesso e as permissões de contêineres Windows?
Uma auditoria eficaz de contêineres requer visibilidade tanto nas atividades no nível do host quanto no nível do contêiner – porque os atacantes estão fazendo login, não apenas invadindo. Contêineres Windows geram eventos de segurança por meio do sistema padrão de registro de eventos do Windows, mas você precisa configurar registros adicionais para capturar atividades específicas de contêineres.
Habilite o registro de runtime de contêiner para rastrear eventos de criação, modificação e exclusão de contêineres. Configure o Registro de Eventos do Windows para capturar eventos de autenticação, tentativas de escalonamento de privilégios e padrões de acesso a recursos dentro dos contêineres. Foque no monitoramento de padrões de acesso incomuns, como contêineres acessando arquivos fora de seus volumes de dados esperados ou realizando conexões de rede inesperadas.
A chave é correlacionar a atividade do container com sua estratégia mais ampla de monitoramento de segurança. Eventos de acesso ao container devem alimentar seu programa de governança de identidade e acesso junto com o monitoramento tradicional de contas de usuário. Configure alertas automatizados para comportamentos de alto risco em containers, como tentativas de acessar repositórios de dados sensíveis ou escalar privilégios além do escopo pretendido do container. Essa abordagem proativa ajuda você a identificar comportamentos arriscados antes que se transformem em violações.
Implemente auditoria do sistema de arquivos para diretórios sensíveis que contêineres não devem acessar e monitore eventos de criação de processos dentro de contêineres para detectar lançamentos não autorizados de executáveis. Use o registro do PowerShell para capturar atividades administrativas dentro de contêineres, particularmente para contêineres que executam scripts de automação ou ferramentas administrativas.
Quais as melhores práticas de monitoramento de segurança de contêineres Windows você deve seguir?
O monitoramento da segurança de contêineres requer uma abordagem diferente do monitoramento tradicional de servidores porque os contêineres são efêmeros e criam superfícies de ataque dinâmicas. Comece com o monitoramento de base dos eventos do ciclo de vida do contêiner – criação, início, parada e exclusão – para estabelecer padrões operacionais normais.
Monitore o tráfego de rede tanto no nível do host quanto do container para detectar padrões de comunicação incomuns que possam indicar movimentação lateral ou tentativas de exfiltração de dados. Acompanhe métricas de consumo de recursos como CPU, memória e uso de disco para identificar possíveis ataques de negação de serviço ou atividades de criptomineração dentro de containers.
Implemente o monitoramento em tempo real das alterações do sistema de arquivos de contêineres, especialmente para contêineres que não deveriam estar escrevendo em disco. Utilize o Windows Performance Toolkit e ferramentas de monitoramento específicas para contêineres para rastrear a execução de processos dentro dos contêineres, observando processos não autorizados ou tentativas inesperadas de escalonamento de privilégios. O objetivo é aumentar a visibilidade e o controle – você precisa ver o que está acontecendo em todo o seu ambiente de contêineres para tomar ações de segurança eficazes.
Configure o monitoramento para eventos de segurança específicos de contêineres, como puxadas de imagens de registros não autorizados, contêineres executando com privilégios excessivos ou contêineres tentando acessar recursos do sistema hospedeiro. Configure alertas para contêineres que se desviem de seus padrões de comportamento esperados, como fazer conexões de rede para destinos incomuns ou consumir recursos além das linhas de base normais.
Como você soluciona problemas de autenticação em contêineres do Windows?
Problemas de autenticação de contêineres geralmente são causados por contas de serviço mal configuradas ou gerenciamento inadequado de credenciais entre o host e os ambientes de contêineres. Comece verificando se o seu contêiner está usando a identidade correta do Windows – verifique o contexto de segurança sob o qual os processos do contêiner estão sendo executados usando ferramentas como Process Monitor ou Windows Event Viewer.
Falhas comuns de autenticação ocorrem quando contêineres não conseguem acessar recursos do domínio devido a problemas de delegação de credenciais. Se o seu contêiner precisa se autenticar no Active Directory ou outros serviços de domínio, certifique-se de que está usando contas de serviço gerenciadas por grupo (gMSAs) em vez de contas de serviço tradicionais. gMSAs oferecem gerenciamento automático de senhas e são projetadas especificamente para cenários de contêineres.
Verifique os Logs de Eventos do Windows tanto no host do container quanto nos controladores de domínio para erros relacionados à autenticação. Procure por IDs de Evento relacionados a falhas de logon, problemas de autenticação Kerberos ou problemas de autenticação NTLM. Use ferramentas como Network Monitor ou Wireshark para capturar o tráfego de autenticação e identificar onde a cadeia de autenticação está se rompendo. Lembre-se de que problemas de autenticação de container frequentemente indicam problemas mais amplos de Identity Management que podem afetar sua postura geral de segurança.
Verifique se o seu host de contêiner está devidamente integrado ao domínio e se os recursos necessários do Windows (como o módulo Active Directory para PowerShell) estão instalados. Verifique a resolução DNS dentro dos contêineres para garantir que eles possam alcançar os controladores de domínio. Se estiver usando delegação de credenciais, confirme que a conta do host de contêiner tem as permissões de delegação necessárias no Active Directory.
Compartilhar em
Saiba Mais
Sobre o autor
Dirk Schrader
VP de Pesquisa de Segurança
Dirk Schrader é um Resident CISO (EMEA) e VP de Pesquisa de Segurança na Netwrix. Com 25 anos de experiência em segurança de TI e certificações como CISSP (ISC²) e CISM (ISACA), ele trabalha para promover a ciberresiliência como uma abordagem moderna para enfrentar ameaças cibernéticas. Dirk trabalhou em projetos de cibersegurança ao redor do mundo, começando em funções técnicas e de suporte no início de sua carreira e, em seguida, passando para posições de vendas, marketing e gestão de produtos em grandes corporações multinacionais e pequenas startups. Ele publicou numerosos artigos sobre a necessidade de abordar a gestão de mudanças e vulnerabilidades para alcançar a ciberresiliência.
Saiba mais sobre este assunto
Gerenciamento de configuração para controle seguro de endpoint
Leis de Privacidade de Dados por Estado: Abordagens Diferentes para a Proteção da Privacidade
O que é Gerenciamento de Registros Eletrônicos?
Como criar, alterar e testar senhas usando PowerShell
Expressões Regulares para Iniciantes: Como Começar a Descobrir Dados Sensíveis