Alinhamento de imagem do Ubuntu do Serviço Kubernetes do Azure (AKS) com o benchmark do Center for Internet Security (CIS)

Como um serviço seguro, o Serviço Kubernetes do Azure (AKS) está em conformidade com os padrões SOC, ISO, PCI DSS e HIPAA. Este artigo aborda a configuração do sistema operacional de segurança aplicada à imagem do Ubuntu usada pelo AKS. Essa configuração de segurança é baseada na linha de base de segurança do Linux do Azure, que se alinha com o benchmark CIS. Para obter mais informações sobre a segurança AKS, consulte Conceitos de segurança para aplicativos e clusters no Serviço Kubernetes do Azure (AKS). Para obter mais informações sobre a segurança do AKS, consulte Conceitos de segurança para aplicativos e clusters no Serviço Kubernetes do Azure (AKS). Para obter mais informações sobre o benchmark CIS, consulte Center for Internet Security (CIS) Benchmarks. Para obter mais informações sobre as linhas de base de segurança do Azure para Linux, consulte Linha de base de segurança do Linux.

Ubuntu LTS 18,04

Os clusters AKS são implantados em máquinas virtuais host, que executam um sistema operacional com configurações seguras integradas. Este sistema operacional é usado para contêineres executados no AKS. Este sistema operacional host é baseado em uma imagem do Ubuntu 18.04.LTS com configurações de segurança aplicadas.

Como parte do sistema operacional otimizado para segurança:

  • O AKS fornece um sistema operacional host otimizado para segurança por padrão, mas nenhuma opção para selecionar um sistema operacional alternativo.
  • O sistema operacional host otimizado para segurança é construído e mantido especificamente para o AKS e não é suportado fora da plataforma AKS.
  • Alguns drivers de módulo do kernel desnecessários foram desativados no sistema operacional para reduzir a área da superfície de ataque.

Nota

Sem relação com os benchmarks do CIS, o Azure aplica patches diários, incluindo patches de segurança, a hosts de máquinas virtuais AKS.

O objetivo da configuração segura incorporada ao sistema operacional host é reduzir a área de superfície de ataque e otimizar a implantação de contêineres de forma segura.

A seguir estão os resultados do CIS Ubuntu 18.04 LTS Benchmark v2.1.0 recomendações.

As recomendações podem ter uma das seguintes razões:

  • Potencial Impacto da Operação - A recomendação não foi aplicada porque teria um efeito negativo no serviço.
  • Coberto em outro lugar - A recomendação é coberta por outro controle na computação em nuvem do Azure.

As regras do SIA aplicadas são as seguintes:

Número do parágrafo do SIA Descrição da recomendação Estado Razão
1 Configuração Inicial
1.1 Configuração do sistema de arquivos
1.1.1 Desativar sistemas de arquivos não utilizados
1.1.1.1 Verifique se a montagem de sistemas de arquivos cramfs está desativada Êxito
1.1.1.2 Verifique se a montagem dos sistemas de arquivos freevxfs está desativada Êxito
1.1.1.3 Verifique se a montagem de sistemas de arquivos jffs2 está desativada Êxito
1.1.1.4 Verifique se a montagem de sistemas de arquivos hfs está desativada Êxito
1.1.1.5 Verifique se a montagem de sistemas de arquivos hfsplus está desativada Êxito
1.1.1.6 Verifique se a montagem de sistemas de arquivos udf está desativada Falha Potencial impacto operacional
1.1.2 Verifique se /tmp está configurado Falha
1.1.3 Verifique se a opção nodev está definida na partição /tmp Falha
1.1.4 Certifique-se de que a opção nosuid esteja definida na partição /tmp Êxito
1.1.5 Certifique-se de que a opção noexec esteja definida na partição /tmp Êxito
1.1.6 Verifique se /dev/shm está configurado Êxito
1.1.7 Garantir que a opção nodev esteja definida na partição /dev/shm Êxito
1.1.8 Certifique-se de que a opção nosuid esteja definida na partição /dev/shm Êxito
1.1.9 Certifique-se de que a opção noexec esteja definida na partição /dev/shm Falha Potencial impacto operacional
1.1.12 Verifique se a partição /var/tmp inclui a opção nodev Êxito
1.1.13 Verifique se a partição /var/tmp inclui a opção nosuid Êxito
1.1.14 Verifique se a partição /var/tmp inclui a opção noexec Êxito
1.1.18 Certifique-se de que a partição /home inclui a opção nodev Êxito
1.1.19 Garantir a opção nodev definida em partições de mídia removíveis Não Aplicável
1.1.20 Garantir a opção nosuid definida em partições de mídia removíveis Não Aplicável
1.1.21 Verifique a opção noexec definida em partições de mídia removíveis Não Aplicável
1.1.22 Certifique-se de que o bit adesivo está definido em todos os diretórios graváveis do mundo Falha Potencial impacto da operação
1.1.23 Desativar a montagem automática Êxito
1.1.24 Desativar armazenamento USB Êxito
1.2 Configurar atualizações de software
1.2.1 Verifique se os repositórios do gerenciador de pacotes estão configurados Êxito Coberto em outro lugar
1.2.2 Verifique se as chaves GPG estão configuradas Não Aplicável
1.3 Verificação da integridade do sistema de arquivos
1.3.1 Garantir que o AIDE esteja instalado Falha Coberto em outro lugar
1.3.2 Garantir que a integridade do sistema de arquivos seja verificada regularmente Falha Coberto em outro lugar
1.4 Configurações de Inicialização Segura
1.4.1 Verifique se as permissões na configuração do carregador de inicialização não foram substituídas Falha
1.4.2 Verifique se a senha do carregador de inicialização está definida Falha Não Aplicável
1.4.3 Verifique se as permissões na configuração do carregador de inicialização estão configuradas Falha
1.4.4 Garantir a autenticação necessária para o modo de usuário único Falha Não Aplicável
1.5 Endurecimento de processo adicional
1.5.1 Verifique se o suporte a XD/NX está ativado Não Aplicável
1.5.2 Verifique se a ASLR (randomização do layout do espaço de endereço) está habilitada Êxito
1.5.3 Verifique se o pré-link está desativado Êxito
1.5.4 Garantir que os dumps principais sejam restritos Êxito
1.6 Controlo de Acessos Obrigatório
1.6.1 Configurar o AppArmor
1.6.1.1 Verifique se o AppArmor está instalado Êxito
1.6.1.2 Verifique se o AppArmor está ativado na configuração do carregador de inicialização Falha Potencial impacto da operação
1.6.1.3 Verifique se todos os perfis do AppArmor estão no modo de imposição ou reclamação Êxito
1.7 Banners de aviso de linha de comando
1.7.1 Verifique se a mensagem do dia está configurada corretamente Êxito
1.7.2 Verifique se as permissões em /etc/issue.net estão configuradas Êxito
1.7.3 Verifique se as permissões em /etc/issue estão configuradas Êxito
1.7.4 Verifique se as permissões em /etc/motd estão configuradas Êxito
1.7.5 Verifique se o banner de aviso de login remoto está configurado corretamente Êxito
1.7.6 Verifique se o banner de aviso de login local está configurado corretamente Êxito
1.8 Gerenciador de exibição do GNOME
1.8.2 Verifique se o banner de login do GDM está configurado Êxito
1.8.3 Verifique se disable-user-list está ativado Êxito
1.8.4 Verifique se o XDCMP não está habilitado Êxito
1.9 Garantir que atualizações, patches e software de segurança adicional estejam instalados Êxito
2 Serviços
2.1 Serviços para fins especiais
2.1.1 Sincronização de tempo
2.1.1.1 Garantir que a sincronização de tempo esteja em uso Êxito
2.1.1.2 Verifique se systemd-timesyncd está configurado Não Aplicável AKS usa ntpd para timesync
2.1.1.3 Certifique-se de que a cronia está configurada Falha Coberto em outro lugar
2.1.1.4 Verifique se o ntp está configurado Êxito
2.1.2 Verifique se o X Window System não está instalado Êxito
2.1.3 Verifique se o Avahi Server não está instalado Êxito
2.1.4 Verifique se o CUPS não está instalado Êxito
2.1.5 Verifique se o Servidor DHCP não está instalado Êxito
2.1.6 Verifique se o servidor LDAP não está instalado Êxito
2.1.7 Verifique se o NFS não está instalado Êxito
2.1.8 Verifique se o servidor DNS não está instalado Êxito
2.1.9 Verifique se o servidor FTP não está instalado Êxito
2.1.10 Verifique se o servidor HTTP não está instalado Êxito
2.1.11 Verifique se o servidor IMAP e POP3 não está instalado Êxito
2.1.12 Verifique se o Samba não está instalado Êxito
2.1.13 Verifique se o Servidor Proxy HTTP não está instalado Êxito
2.1.14 Verifique se o SNMP Server não está instalado Êxito
2.1.15 Verifique se o agente de transferência de email está configurado para o modo somente local Êxito
2.1.16 Verifique se o serviço rsync não está instalado Falha
2.1.17 Verifique se o Servidor NIS não está instalado Êxito
2.2 Clientes de Serviços
2.2.1 Verifique se o cliente NIS não está instalado Êxito
2.2.2 Verifique se o cliente rsh não está instalado Êxito
2.2.3 Verifique se o cliente de conversa não está instalado Êxito
2.2.4 Verifique se o cliente telnet não está instalado Falha
2.2.5 Verifique se o cliente LDAP não está instalado Êxito
2.2.6 Verifique se o RPC não está instalado Falha Potencial impacto operacional
2.3 Garantir que os serviços não essenciais sejam removidos ou mascarados Êxito
3 Configuração da Rede
3.1 Desativar protocolos e dispositivos de rede não utilizados
3.1.2 Verifique se as interfaces sem fio estão desativadas Êxito
3.2 Parâmetros de rede (somente host)
3.2.1 Verifique se o envio de redirecionamento de pacotes está desativado Êxito
3.2.2 Verifique se o encaminhamento IP está desativado Falha Não Aplicável
3.3 Parâmetros de rede (host e roteador)
3.3.1 Verifique se os pacotes roteados de origem não são aceitos Êxito
3.3.2 Verifique se os redirecionamentos ICMP não são aceitos Êxito
3.3.3 Garantir que redirecionamentos ICMP seguros não sejam aceitos Êxito
3.3.4 Garantir que pacotes suspeitos sejam registrados Êxito
3.3.5 Verifique se as solicitações ICMP de difusão são ignoradas Êxito
3.3.6 Garantir que respostas ICMP falsas sejam ignoradas Êxito
3.3.7 Verifique se a Filtragem de Caminho Inverso está ativada Êxito
3.3.8 Verifique se os cookies TCP SYN estão ativados Êxito
3.3.9 Verifique se os anúncios do roteador IPv6 não são aceitos Êxito
3.4 Protocolos de rede incomuns
3.5 Configuração de firewall
3.5.1 Configurar UncomplicatedFirewall
3.5.1.1 Certifique-se de que o ufw está instalado Êxito
3.5.1.2 Verifique se iptables-persistent não está instalado com ufw Êxito
3.5.1.3 Verifique se o serviço ufw está ativado Falha Coberto em outro lugar
3.5.1.4 Verifique se o tráfego de loopback ufw está configurado Falha Coberto em outro lugar
3.5.1.5 Verifique se as conexões de saída ufw estão configuradas Não Aplicável Coberto em outro lugar
3.5.1.6 Verifique se existem regras de firewall ufw para todas as portas abertas Não Aplicável Coberto em outro lugar
3.5.1.7 Garantir a política de firewall de negação padrão do ufw Falha Coberto em outro lugar
3.5.2 Configurar nftables
3.5.2.1 Verifique se o nftables está instalado Falha Coberto em outro lugar
3.5.2.2 Verifique se o ufw está desinstalado ou desativado com nftables Falha Coberto em outro lugar
3.5.2.3 Certifique-se de que os iptables estão limpos com nftables Não Aplicável Coberto em outro lugar
3.5.2.4 Verifique se existe uma tabela nftables Falha Coberto em outro lugar
3.5.2.5 Garantir a existência de cadeias de base nftables Falha Coberto em outro lugar
3.5.2.6 Verifique se o tráfego de loopback nftables está configurado Falha Coberto em outro lugar
3.5.2.7 Garantir que as conexões de saída e estabelecidas nftables estejam configuradas Não Aplicável Coberto em outro lugar
3.5.2.8 Garantir a política de firewall de negação padrão nftables Falha Coberto em outro lugar
3.5.2.9 Verifique se o serviço nftables está habilitado Falha Coberto em outro lugar
3.5.2.10 Garantir que as regras nftables sejam permanentes Falha Coberto em outro lugar
3.5.3 Configurar iptables
3.5.3.1 Configurar software iptables
3.5.3.1.1 Verifique se os pacotes iptables estão instalados Falha Coberto em outro lugar
3.5.3.1.2 Verifique se o nftables não está instalado com iptables Êxito
3.5.3.1.3 Verifique se ufw está desinstalado ou desativado com iptables Falha Coberto em outro lugar
3.5.3.2 Configurar iptables IPv4
3.5.3.2.1 Garantir iptables padrão negar política de firewall Falha Coberto em outro lugar
3.5.3.2.2 Verifique se o tráfego de loopback iptables está configurado Falha Não Aplicável
3.5.3.2.3 Verifique se as conexões iptables de saída e estabelecidas estão configuradas Não Aplicável
3.5.3.2.4 Verifique se existem regras de firewall iptables para todas as portas abertas Falha Potencial impacto da operação
3.5.3.3 Configurar IPv6 ip6tables
3.5.3.3.1 Verifique se ip6tables padrão negam a política de firewall Falha Coberto em outro lugar
3.5.3.3.2 Verifique se o tráfego de loopback ip6tables está configurado Falha Coberto em outro lugar
3.5.3.3.3 Verifique se as conexões de saída e estabelecidas ip6tables estão configuradas Não Aplicável Coberto em outro lugar
3.5.3.3.4 Verifique se existem regras de firewall ip6tables para todas as portas abertas Falha Coberto em outro lugar
4 Registo e Auditoria
4.1 Configurar a contabilidade do sistema (auditado)
4.1.1.2 Garantir que a auditoria esteja ativada
4.1.2 Configurar retenção de dados
4.2 Configurar registro em log
4.2.1 Configurar rsyslog
4.2.1.1 Verifique se o rsyslog está instalado Êxito
4.2.1.2 Verifique se o Serviço rsyslog está ativado Êxito
4.2.1.3 Verifique se o registro em log está configurado Êxito
4.2.1.4 Garantir que as permissões de arquivo padrão rsyslog estejam configuradas Êxito
4.2.1.5 Verifique se o rsyslog está configurado para enviar logs para um host de log remoto Falha Coberto em outro lugar
4.2.1.6 Verifique se as mensagens rsyslog remotas só são aceitas em hosts de log designados. Não Aplicável
4.2.2 Configurar journald
4.2.2.1 Verifique se o registro no diário está configurado para enviar logs para o rsyslog Êxito
4.2.2.2 Verifique se o registro no diário está configurado para compactar arquivos de log grandes Falha
4.2.2.3 Verifique se o registro no diário está configurado para gravar arquivos de log em disco persistente Êxito
4.2.3 Verifique se as permissões em todos os arquivos de log estão configuradas Falha
4.3 Verifique se o logrotate está configurado Êxito
4.4 Verifique se o logrotate atribui as permissões apropriadas Falha
5 Acesso, autenticação e autorização
5.1 Configurar agendadores de trabalho baseados em tempo
5.1.1 Verifique se o daemon cron está ativado e em execução Êxito
5.1.2 Verifique se as permissões em /etc/crontab estão configuradas Êxito
5.1.3 Verifique se as permissões em /etc/cron.hourly estão configuradas Êxito
5.1.4 Verifique se as permissões em /etc/cron.daily estão configuradas Êxito
5.1.5 Verifique se as permissões em /etc/cron.weekly estão configuradas Êxito
5.1.6 Verifique se as permissões em /etc/cron.monthly estão configuradas Êxito
5.1.7 Verifique se as permissões em /etc/cron.d estão configuradas Êxito
5.1.8 Certifique-se de que o cron é restrito a usuários autorizados Falha
5.1.9 Certifique-se de que é restrito a usuários autorizados Falha
5,2 Configurar sudo
5.2.1 Verifique se o sudo está instalado Êxito
5.2.2 Certifique-se de que os comandos sudo usem pty Falha Potencial impacto operacional
5.2.3 Verifique se o arquivo de log sudo existe Falha
5.3 Configurar o Servidor SSH
5.3.1 Verifique se as permissões em /etc/ssh/sshd_config estão configuradas Êxito
5.3.2 Verifique se as permissões nos arquivos de chave de host privado SSH estão configuradas Êxito
5.3.3 Verifique se as permissões nos arquivos de chave de host pública SSH estão configuradas Êxito
5.3.4 Garantir que o acesso SSH seja limitado Êxito
5.3.5 Verifique se o SSH LogLevel é apropriado Êxito
5.3.7 Verifique se o SSH MaxAuthTries está definido como 4 ou menos Êxito
5.3.8 Verifique se o SSH IgnoreRhosts está habilitado Êxito
5.3.9 Verifique se SSH HostbasedAuthentication está desabilitado Êxito
5.3.10 Verifique se o login raiz SSH está desativado Êxito
5.3.11 Verifique se o SSH PermitEmptyPasswords está desativado Êxito
5.3.12 Verifique se o SSH PermitUserEnvironment está desativado Êxito
5.3.13 Certifique-se de que apenas cifras fortes sejam usadas Êxito
5.3.14 Certifique-se de que apenas algoritmos MAC fortes sejam usados Êxito
5.3.15 Certifique-se de que apenas algoritmos fortes de troca de chaves sejam usados Êxito
5.3.16 Verifique se o intervalo de tempo limite ocioso SSH está configurado Falha
5.3.17 Certifique-se de que SSH LoginGraceTime está definido para um minuto ou menos Êxito
5.3.18 Verifique se o banner de aviso SSH está configurado Êxito
5.3.19 Verifique se o SSH PAM está habilitado Êxito
5.3.21 Verifique se o SSH MaxStartups está configurado Falha
5.3.22 Garantir que o SSH MaxSessions seja limitado Êxito
5.4 Configurar o PAM
5.4.1 Verifique se os requisitos de criação de senha estão configurados Êxito
5.4.2 Verifique se o bloqueio para tentativas de senha com falha está configurado Falha
5.4.3 Verifique se a reutilização da senha é limitada Falha
5.4.4 Verifique se o algoritmo de hash de senha é SHA-512 Êxito
5,5 Contas de Utilizador e Ambiente
5.5.1 Definir parâmetros do Shadow Password Suite
5.5.1.1 Verifique se o mínimo de dias entre as alterações de senha está configurado Êxito
5.5.1.2 Verifique se a expiração da senha é de 365 dias ou menos Êxito
5.5.1.3 Verifique se os dias de aviso de expiração da senha são 7 ou mais Êxito
5.5.1.4 Verifique se o bloqueio de senha inativo é de 30 dias ou menos Êxito
5.5.1.5 Verifique se a data da última alteração de senha de todos os usuários está no passado Falha
5.5.2 Garantir que as contas do sistema estejam seguras Êxito
5.5.3 Verifique se o grupo padrão para a conta raiz é GID 0 Êxito
5.5.4 Verifique se o usuário padrão umask é 027 ou mais restritivo Êxito
5.5.5 Verifique se o tempo limite padrão do shell do usuário é de 900 segundos ou menos Falha
5,6 Verifique se o login root está restrito ao console do sistema Não Aplicável
5.7 Verifique se o acesso ao comando su é restrito Falha Potencial impacto da operação
6 Manutenção do Sistema
6.1 Permissões de arquivo do sistema
6.1.2 Verifique se as permissões em /etc/passwd estão configuradas Êxito
6.1.3 Verifique se as permissões em /etc/passwd- estão configuradas Êxito
6.1.4 Verifique se as permissões em /etc/group estão configuradas Êxito
6.1.5 Verifique se as permissões em /etc/group- estão configuradas Êxito
6.1.6 Verifique se as permissões em /etc/shadow estão configuradas Êxito
6.1.7 Verifique se as permissões em /etc/shadow- estão configuradas Êxito
6.1.8 Verifique se as permissões em /etc/gshadow estão configuradas Êxito
6.1.9 Verifique se as permissões em /etc/gshadow- estão configuradas Êxito
6.1.10 Certifique-se de que não existem ficheiros graváveis no mundo Falha Potencial impacto da operação
6.1.11 Certifique-se de que não existem arquivos ou diretórios sem propriedade Falha Potencial impacto da operação
6.1.12 Verifique se não existem arquivos ou diretórios desagrupados Falha Potencial impacto da operação
6.1.13 Auditar executáveis SUID Não Aplicável
6.1.14 Auditar executáveis SGID Não Aplicável
6.2 Configurações de usuário e grupo
6.2.1 Certifique-se de que as contas em /etc/passwd usem senhas sombreadas Êxito
6.2.2 Verifique se os campos de senha não estão vazios Êxito
6.2.3 Certifique-se de que todos os grupos em /etc/passwd existam em /etc/group Êxito
6.2.4 Verifique se todos os diretórios base dos usuários existem Êxito
6.2.5 Garantir que os usuários possuam seus diretórios base Êxito
6.2.6 Verifique se as permissões dos diretórios base dos usuários são 750 ou mais restritivas Êxito
6.2.7 Certifique-se de que os arquivos de pontos dos usuários não sejam graváveis em grupo ou no mundo Êxito
6.2.8 Certifique-se de que nenhum usuário tenha arquivos .netrc Êxito
6.2.9 Certifique-se de que nenhum usuário tenha arquivos .forward Êxito
6.2.10 Certifique-se de que nenhum usuário tenha arquivos .rhosts Êxito
6.2.11 Verifique se root é a única conta UID 0 Êxito
6.2.12 Garantir a integridade do PATH raiz Êxito
6.2.13 Certifique-se de que não existem UIDs duplicados Êxito
6.2.14 Certifique-se de que não existem GIDs duplicados Êxito
6.2.15 Certifique-se de que não existem nomes de utilizador duplicados Êxito
6.2.16 Certifique-se de que não existem nomes de grupo duplicados Êxito
6.2.17 Verifique se o grupo de sombras está vazio Êxito

Próximos passos

Para obter mais informações sobre a segurança do AKS, consulte os seguintes artigos: