Como automatizar auditorias de segurança do Docker com o Docker Bench for Security

O Docker é conveniente, mas também pode ser um risco à segurança. É importante proteger o Docker Engine contra possíveis ameaças, especialmente se você estiver executando um host Docker em produção.
O Docker Bench for Security é um script automatizado que pode ajudá-lo a encontrar problemas com sua configuração. O script Bench verifica seu host para encontrar pontos fracos na configuração do Docker Engine. É fornecido pelo próprio Docker como uma ferramenta de auditoria de segurança de código aberto.
Executando o Script
A maneira mais fácil de usar o Docker Bench é fazer o download do script e executá-lo diretamente. Você pode inspecioná-lo no GitHub se estiver preocupado com seu conteúdo. Use o Git para clonar o repositório Bench. Execute o script usando seu shell. O Docker Bench deve ser executado com sudo, pois inclui verificações que exigem acesso root.
git clone https://github. com/docker/docker-bench-security. git cd docker-bench-security sudo sh docker-bench-security. sh
Você verá os resultados da auditoria exibidos em seu terminal. A digitalização levará vários segundos. Pode demorar um minuto ou mais se você tiver muitos contêineres em execução.
Compreendendo o relatório

O relatório é codificado por cores, para que você possa identificar os problemas rapidamente. As linhas INFO azuis registram a entrada em diferentes seções de digitalização. Uma linha verde PASSA mostra que seu sistema cumpriu a verificação. As linhas vermelhas WARN são indicativas de uma vulnerabilidade potencial. O Docker Bench executa mais de 200 verificações individuais no total. A lista completa está disponível no repositório GitHub do projeto. Veja como os testes são categorizados.
Configuração do host
Este grupo de testes concentra-se nos pontos fracos da auditoria de segurança do seu host. As verificações são feitas para auditoria adequada dos diretórios do Docker, uso de uma partição dedicada para contêineres e instalação de uma versão atualizada do Docker.
Configuração do Daemon
Os testes orientados a daemon verificam se o soquete do Docker &’ não foi exposto em uma conexão não segura. O tráfego de rede entre os contêineres na rede de ponte padrão deve ser restrito e os registros inseguros removidos.
Esta seção também procura concessões de privilégios inadequados para containers. Os contêineres não devem ser capazes de adquirir novos privilégios. Isso pode permitir que um invasor ultrapasse o tamanho do contêiner.
A próxima seção, arquivos de configuração do daemon do Docker, tem um foco semelhante. Ele garante que o diretório de instalação do Docker e o soquete Unix tenham as permissões e propriedade apropriadas. O sistema de arquivos do Docker deve ser propriedade de root: root com permissões restritivas de 644.
Imagens de contêiner
O Docker Bench realiza uma verificação básica dos Dockerfiles para suas imagens conhecidas. Ele procurará usuários de contêiner dedicados, a presença de instruções HEALTHCHECK e o uso de Content Trust para verificar a integridade dos dados.
Esta seção de teste também emitirá avisos que lembram você das etapas básicas de fortalecimento da imagem. Use imagens de base confiáveis, aplique novos patches de segurança e evite a instalação de pacotes desnecessários. Essas medidas ajudam a eliminar vulnerabilidades dentro de contêineres.
Tempo de execução do contêiner
Os testes do Container Runtime inspecionam seus contêineres em execução. Esta seção contém mais de 30 testes, variando da disponibilidade do SELinux e AppArmor ao uso de montagens de sistema de arquivos e opções de rede apropriadas.
Você descartará pontos se usar contêineres privilegiados ou montar o soquete Docker em um contêiner. Os contêineres não podem obter privilégios adicionais ou interferir no sistema host.
O banco também procura por servidores SSH em execução dentro de contêineres. Isso é desaconselhável, pois o acesso direto ao contêiner deve ser evitado. É preferível usar o docker exec a partir do host para interagir com os contêineres.
Testes adicionais examinam o uso de limites de CPU e memória. Um contêiner ilimitado pode consumir recursos excessivos e, eventualmente, causar uma condição de falta de memória no host. A rede verifica a sinalização de portas não utilizadas, bem como solicitações para mapear portas privilegiadas em contêineres.
Docker Swarm
O Docker Bench inclui uma seção adicional para usuários do Docker Swarm. Ele se concentra em sinalizar segredos e certificados não seguros que não estão sendo alternados corretamente. Também requer a configuração de rede correta, incluindo o uso de redes de sobreposição criptografadas.
A seção Swarm irá gerar um aviso se o modo Swarm estiver habilitado, mas não for realmente usado. Se você não planeja usar o Swarm, desative-o executando docker swarm leave --force.
Resolvendo problemas comuns
A maioria dos hosts Docker apresentará vários avisos se você não tiver tomado medidas ativas para protegê-los. Aqui estão algumas medidas que você pode tomar para lidar com alguns dos relatórios mais comuns do Docker Bench.
Habilitando a auditoria para arquivos Docker
O Docker aconselha o uso de auditoria no nível do sistema nos principais diretórios do Docker. A auditoria registra todas as operações que afetam os arquivos e diretórios monitorados. Isso permite que você rastreie alterações potencialmente destrutivas.
Certifique-se de ter o auditd instalado. Edite /etc/audit/audit. rules e adicione as seguintes linhas ao final do arquivo:
-w / etc / default / docker -p wa -w / etc / docker -p wa -w /etc/docker/daemon. json -p wa -w / lib / systemd / system / docker. serviço -p wa -w /lib/systemd/system/docker. socket -p wa -w / usr / bin / docker -p wa -w / usr / bin / docker-containerd -p wa -w / usr / bin / docker-runc -p wa -w / var / lib / docker -p wa
A instrução -p wa significa que o auditd registrará as gravações e as alterações de atributo que afetam os arquivos. Se a saída do Docker Bench sugerir que você use auditoria para diretórios adicionais, adicione-os à lista também. Os diretórios do Docker podem mudar com o tempo.
Você precisará reiniciar o auditd para aplicar suas alterações:
sudo systemctl reiniciar auditd
Fortalecendo o Daemon
O Docker Bench normalmente encontrará problemas com a configuração do seu daemon. Adicionar o seguinte a /etc/docker/daemon. json silenciará vários avisos de daemon.
{"icc": false, "live-restore": true, "no-new-privileges": true, "userland-proxy": false, "userns-remap": "default"} [ /PRÉ]
- icc: Impede que os contêineres se comuniquem entre si pela rede de ponte padrão. Os contêineres só alcançarão uns aos outros se eles estiverem explicitamente vinculados usando um --link.
- live-restore: a configuração permite que os contêineres continuem em execução mesmo se o daemon parar. Isso é aconselhável em ambientes de produção onde você deseja minimizar o tempo de inatividade.
- no-new-privileges: isso evita que os contêineres elevem seus privilégios usando comandos como setuid e setgid.
- userland- proxy: desabilitar isso significa que o iptables é usado para rotear o tráfego da porta do host para os contêineres. Sem ele, o processo de proxy userland do Docker é usado, o que aumenta a superfície de ataque do seu daemon.
- userns-remap: Isso permite o uso de namespaces de usuário, portanto, o root em um contêiner mapeia para um usuário host menos privilegiado. Isso reduz o risco de um contêiner comprometido ser capaz de executar comandos root em seu host. Usar o padrão instruirá o Docker a configurar uma conta de usuário dedicada para este propósito.
RELACIONADO: Como usar o Cron com seus contêineres Docker
Personalização da saída de relatório
O Docker Bench oferece suporte a vários sinalizadores que você pode usar para ajustar sua saída:
- -b: Desativa cores. Útil se você estiver executando o script em um ambiente de CI que não oferece suporte a saída ANSI completa.
- -p: Não inclui medidas de correção sugeridas. Útil quando você deseja focar nos avisos e reduzir o ruído na saída.
- -l report. txt: Grava a saída em report. txt em vez de no terminal.
- -c check_5.1, check_5.2: Execute verificações 5.1 e 5.2 apenas. A lista de teste está disponível no GitHub.
- -e check_5.1, check_5.2: Exclui as verificações 5.1 e 5.2.
Você pode combinar sinalizadores para produzir o relatório de que precisa. Se uma seção inteira de verificações não se aplica a você, considere a criação de um alias de shell para que possa executar rapidamente o Docker Bench com uma sequência de sinalizadores aplicados.
Conclusão

RELACIONADOComo usar o Docker Scan para encontrar vulnerabilidades em suas imagens
Usar o script Docker Bench for Security ajuda a encontrar e resolver os pontos fracos da segurança do seu host Docker. Abordar quaisquer avisos que ele emita ajudará a proteger seu host e melhorar sua postura de segurança.
Lembre-se de que o Docker Bench não é um teste exaustivo. Existem outros aspectos para manter a segurança do Docker que também não devem ser esquecidos.
Um contêiner comprometido pode dar aos invasores uma posição segura em seus sistemas, mesmo se você tiver uma segurança forte no nível do host. Você pode reduzir esse risco usando o Docker Bench, junto com scanners de vulnerabilidade de contêiner ativos, como Trivy e Clair. Isso o ajudará a identificar problemas em seus contêineres, como dependências desatualizadas que podem ser exploradas.
Embora um bom seguro seja sempre o alvo, você também deve observar que o Docker Bench é voltado para cargas de trabalho de produção. Nem todas as verificações são relevantes para a instalação local do Docker de um desenvolvedor. Execute o script, leia os avisos e avalie quais se aplicam ao seu ambiente.
Nenhum comentário