Este documento explica o que é o comparativo de mercado do CIS, como ele se relaciona ao Container-Optimized OS (COS), como auditar o status de compliance na instância e como solucionar problemas em caso de falha.
Visão geral
O Center for Internet Security (CIS) lança comparativos de mercado com práticas recomendadas de segurança para várias plataformas. O comparativo de mercado do CIS do Container-Optimized OS é um conjunto de recomendações para configurar instâncias que usam o Container-Optimized OS para oferecer uma postura de segurança sólida. As imagens do COS x86 e ARM estão em conformidade com o CIS.
Como acessar o comparativo de mercado
O comparativo de mercado da CIS para Container-Optimized OS está disponível no site da CIS:
- Acesse a página de downloads de comparativos de mercado da CIS.
- Pesquise Comparativo de mercado da CIS para Google Container-Optimized OS.
- Clique em Fazer download do PDF.
Níveis de recomendação de segurança
O CIS define os seguintes níveis de recomendação para o Container-Optimized OS.
Nível 1
As recomendações nesse nível são aplicáveis à maioria dos ambientes. Esse nível inclui recomendações como as seguintes:
- A randomização do layout do espaço de endereço está ativada
- O
/tmp
não pode ser usado para executar binários executáveis. - O envio de redirecionamento de pacote está desativado
Nível 2
As recomendações nesse nível estendem as recomendações de nível 1, resultando em um ambiente de segurança mais rigoroso. As recomendações do nível 2 não são necessariamente aplicáveis a todos os casos, já que podem exigir mudanças no aplicativo. Avalie as recomendações no nível 2 para seu ambiente antes de aplicá-las. Esse nível inclui recomendações como as seguintes:
- Existem regras de firewall para todas as portas abertas
- Redirecionamentos ICMP e anúncios de roteador não são aceitos
- O tempo limite padrão do shell do usuário é de 900 segundos ou menos
Como o Container-Optimized OS está em conformidade com os comparativos de mercado do CIS
A partir do Milestone 97, as imagens do Container-Optimized OS obedecem ao nível 1 da CIS por padrão e oferecem uma opção para obedecer ao nível 2 da CIS. Também oferecemos um scanner que pode ser usado para auditar sua instância em relação aos níveis de recomendação do CIS.
A configuração do CIS que define as recomendações está em /usr/share/google/security/cis-compliance/cis_config.textproto
. O scanner do CIS usa a configuração para verificar o status de conformidade da instância. Os resultados de cada execução do scanner de conformidade de nível do CIS são gravados em /var/lib/google/cis_scanner_scan_result.textproto
. Esse arquivo é substituído a cada execução do scanner do CIS. Se alguma das verificações de nível 1 ou 2 do CIS falhar, o arquivo cis_scanner_scan_result.textproto
vai conter uma lista de todas as verificações com falha.
Verificar o status de conformidade da instância
As imagens do Container-Optimized OS fornecem os seguintes serviços do systemd para verificação e configuração de compliance:
- cis-level1.service: ativado por padrão e iniciado na inicialização. Quando o serviço é iniciado, ele verifica se a instância está em conformidade com o nível 1 do CIS.
- cis-level2.service: desativado por padrão. Com esse serviço, é possível configurar a instância para obedecer ao CIS nível 2 e verificar o status de conformidade em relação aos níveis 1 e 2.
As seções a seguir explicam como verificar o status de compliance da instância e como automatizar o processo de auditoria.
Verificar o status de compliance do nível 1 do CIS
Para saber se a instância está em conformidade com o nível 1 do CIS, verifique o status do cis-level1.service
:
systemctl status cis-level1
O resultado será assim:
Reading scan config from /usr/share/google/security/cis-compliance/cis_config.textproto
Running scan of 62 benchmarks
Scan status: SUCCEEDED
Found 0 non-compliant benchmarks
Writing scan results to /var/lib/google/cis_scanner_scan_result.textproto
Se houver verificações não compatíveis, consulte Falhas na verificação de compliance do CIS nível 1/nível 2.
A cis-level1.service
verifica a conformidade com o nível 1 do CIS apenas uma vez, quando a instância é inicializada. Para configurar a verificação periódica de compliance, consulte Verificação periódica do status de compliance do CIS.
Configurar a conformidade com o CIS de nível 2 e verificar o status
Use o serviço cis-level2
para configurar a instância de acordo com o nível 2 do CIS e verificar o status de conformidade com os níveis 1 e 2. O serviço systemd oferece suporte a todas as recomendações do Nível 2 do CIS, exceto as seguintes:
4.1.1.2 Verifique se o Logging está em execução (ID: logging-service-running)
Essa recomendação é desativada por padrão, mas pode ser reativada excluindo o ID da lista de desativação, que pode ser encontrada no arquivo
/etc/cis-scanner/env_vars
. Essa verificação só existe nos marcos 109 e mais recentes. Em marcos anteriores, ativar o registro em log por conta própria deixa você em conformidade com essa recomendação. Se você desfizer a recusa, a execução do serviçocis-level2
vai executar um script que inicia a geração de registros do fluent-bit. Mantenha a opçãologging-service-running
desativada se você não quiser usar o registro padrão ou quiser usar o seu próprio.
Para as recomendações a seguir, a configuração do serviço cis-level2
configura a instância, mas não verifica o status de conformidade:
105 e versões anteriores:
- 3.3.1.1 Certifique-se de que a política de firewall de negação padrão IPv6
- 3.3.1.2 Verifique se o tráfego de loopback do IPv6 está configurado
- 3.3.1.3 Verifique se as conexões de saída e estabelecidas do IPv6 estão configuradas
- 3.3.1.4 Verifique se existem regras de firewall IPv6 para todas as portas abertas
- 3.3.2.1 Certifique-se de que a política de firewall de negação padrão
- 3.3.2.2 Verifique se o tráfego de loopback está configurado
- 3.3.2.3 Verifique se as conexões de saída e estabelecidas estão configuradas
109 e mais recentes:
- 3.3.1.4 Verifique se existem regras de firewall IPv6 para todas as portas abertas
O serviço cis-level2
fica desativado por padrão. Para iniciar o serviço, execute o seguinte comando:
systemctl start cis-level2.service
Para verificar se a instância foi configurada corretamente e está em conformidade com as recomendações do nível 2 do CIS, verifique o status de cis-level2.service
:
systemctl status cis-level2
O resultado será assim:
Reading scan config from /usr/share/google/security/cis-compliance/cis_config.textproto
Running scan of 112 benchmarks
Scan status: SUCCEEDED
Found 0 non-compliant benchmarks
Writing scan results to /var/lib/google/cis_scanner_scan_result.textproto
Se a configuração da instância falhar ou se houver verificações não conformes, consulte Solução de problemas.
O serviço cis-level2
configura a instância e verifica a conformidade com o CIS de nível 2 apenas uma vez. Para configurar a verificação periódica de compliance, consulte Verificação periódica do status de compliance do CIS.
Verificação periódica do status de compliance do CIS
As imagens do Container-Optimized OS incluem os seguintes serviços para verificar periodicamente a conformidade com o CIS:
- cis-compliance-scanner.service: verifica o status de conformidade com base nas variáveis de ambiente definidas em
/etc/cis-scanner/env_vars
. Por padrão, esse serviço verifica a conformidade com o CIS de nível 1 e está desativado. - cis-compliance-scanner.timer: executa
cis-compliance-scanner.service
periodicamente. O período padrão é uma vez por dia.
Configurar o serviço de scanner
O cis-compliance-scanner.service
é responsável por verificar o status da conformidade com o CIS com base nas variáveis de ambiente definidas em /etc/cis-scanner/env_vars
. Por padrão, esse serviço verifica a conformidade com o nível 1 do CIS.
Para verificar a conformidade com o nível 2 do CIS, defina a variável de ambiente LEVEL em /etc/cis-scanner/env_vars
como 2. O arquivo /etc/cis-scanner/env_vars
é semelhante a este:
# cis-compliance-scanner.service environment variables
# The config file defines which checks to perform by cis_scanner
CONFIG="/usr/share/google/security/cis-compliance/cis_config.textproto"
# Where to store the result of the scan
RESULT="/var/lib/google/cis_scanner_scan_result.textproto"
# Upto which level to scan. It can be 1 or 2
LEVEL="2"
# Extra options that can be passed to cis_scanner
# For valid options, see output of `cis_scanner -h`
EXTRA_OPTIONS=""
Configurar o timer
Para configurar a verificação periódica de compliance, inicie a unidade cis-compliance-scanner.timer
:
systemctl start cis-compliance-scanner.timer
Por padrão, o cis-compliance-scanner.timer
começa cis-compliance-scanner.service
uma vez por dia. Para mudar o período de verificação, substitua o campo OnUnitActiveSec da unidade cis-compliance-scanner.timer
:
sudo mkdir /etc/systemd/system/cis-compliance-scanner.timer.d
sudo tee /etc/systemd/system/cis-compliance-scanner.timer.d/override.conf <<EOF
[Unit]
Description=Run CIS Scanner once an hour
[Timer]
OnUnitActiveSec=1h
EOF
Este exemplo define o período do scanner como uma vez por hora.
Para aplicar as mudanças, recarregue as unidades do systemd:
systemctl daemon-reload
Como desativar verificações de compliance do CIS específicas
As recomendações dos níveis 1 e 2 do CIS são aplicáveis à maioria dos ambientes. No entanto ,algumas recomendações podem não ser aplicáveis ao seu ambiente específico. Para desativar recomendações específicas, use a variável de ambiente EXTRA_OPTIONS em /etc/cis-scanner/env_vars
.
O exemplo de arquivo env_vars
a seguir desativa a recomendação etc-passwd-permissions
:
# cis-compliance-scanner.service environment variables
# The config file defines which checks to perform by cis_scanner
CONFIG="/usr/share/google/security/cis-compliance/cis_config.textproto"
# Where to store the result of the scan
RESULT="/var/lib/google/cis_scanner_scan_result.textproto"
# Upto which level to scan. It can be 1 or 2
LEVEL="1"
# Extra options that can be passed to cis_scanner
# For valid options:`cis_scanner -h`
EXTRA_OPTIONS="--benchmark-opt-out-ids=etc-passwd-permissions"
Automatizar a ativação e a verificação do status de conformidade do CIS
É possível automatizar o processo de verificação de compliance das instâncias usando o cloud-init ou a política do SO. Confira alguns exemplos de casos de uso com cada ferramenta:
- Exemplo 1: verifique a conformidade com o CIS de nível 1 uma vez por dia.
- Exemplo 2: verifique a conformidade com o nível 1 do CIS uma vez por hora.
- Exemplo 3: verifique a conformidade com o CIS de nível 2 uma vez por dia.
- Exemplo 4: desativar uma verificação de conformidade específica do CIS.
Como usar o cloud-init
Antes de testar os exemplos a seguir, confira se você sabe como configurar uma instância do COS com o cloud-init seguindo as instruções em Como usar o cloud-init com o formato de configuração do Cloud.
Exemplo 1
A configuração de exemplo a seguir inicia a verificação periódica de CIS de nível 1 com o período padrão de uma vez por dia.
#cloud-config runcmd: # Check the compliance status of the instance once a day. - systemctl start cis-compliance-scanner.timer
Exemplo 2
O exemplo a seguir configura a verificação periódica de CIS de nível 1 uma vez por hora.
#cloud-config # Override cis-compliance-scanner.timer with 1 hour frequency. write_files: - path: /etc/systemd/system/cis-compliance-scanner.timer.d/override.conf permissions: 0600 owner: root content: | [Unit] Description=Run CIS Scanner once an hour [Timer] OnUnitActiveSec=1h runcmd: # Reload systemd units. - systemctl daemon-reload # Check the compliance status of the instance once an hour. - systemctl start cis-compliance-scanner.timer
Exemplo 3
O exemplo a seguir configura a verificação periódica de CIS de nível 2 com o período padrão de uma vez por dia.
#cloud-config runcmd: # Configure the instance for CIS level 2. - systemctl start cis-level2.service # Change the scan level to CIS Level 2. - sed -i 's/^LEVEL=.*$/LEVEL="2"/' /etc/cis-scanner/env_vars # Check the compliance status of the instance once a day. - systemctl start cis-compliance-scanner.timer
Exemplo 4
O exemplo a seguir configura o scanner para ser executado uma vez por dia e desativa uma recomendação específica do CIS.
#cloud-config runcmd: # Opt-out of the etc-passwd-permissions check. - sed -i 's/^EXTRA.*$/EXTRA_OPTIONS="--benchmark-opt-out-ids=etc-passwd-permissions"/' /etc/cis-scanner/env_vars # Check the compliance of the instance once a day. - systemctl start cis-compliance-scanner.timer
Como usar a política do SO
É possível usar uma política do SO para configurar a verificação do comparativo de mercado do CIS. Antes de começar, confira se você conhece a política do SO, incluindo o seguinte:
- Como escrever uma política de SO
- Atribuição de política do SO
- Como visualizar relatórios de atribuição de políticas do SO
Além disso, adicione as opções instanceFilter
e rollout
nos
exemplos a seguir para a implantação.
Exemplo 1
A configuração de exemplo a seguir inicia a verificação periódica de CIS de nível 1 com o período padrão de uma vez por dia.
Exemplo 2
O exemplo a seguir configura a verificação periódica de CIS de nível 1 uma vez por hora.
Exemplo 3
O exemplo a seguir configura a verificação periódica de CIS de nível 2 com o período padrão de uma vez por dia.
Exemplo 4
O exemplo a seguir configura o scanner para ser executado uma vez por dia e desativa uma recomendação específica do CIS.
Solução de problemas
Esta seção descreve como resolver problemas relacionados à verificação de comparativo de mercado do CIS.
A configuração de uma instância para obedecer às recomendações do CIS de nível 2 falha
O serviço cis-level2
primeiro configura a instância para obedecer às recomendações do CIS de nível 2 e depois verifica a conformidade com os níveis 1 e 2 do CIS. Se a configuração da instância falhar, o serviço cis-level2
será encerrado com a seguinte mensagem de erro:
Job for cis-level2.service failed because the control process exited with error code.
See "systemctl status cis-level2.service" and "journalctl -xeu cis-level2.service" for details.
Os registros do diário vão mencionar as recomendações que não foram aplicadas na instância e resultaram na falha do serviço cis-level2
do systemd.
Falha na verificação de compliance com o CIS nível 1 ou 2
Os resultados da verificação de cada execução da conformidade no nível do CIS são gravados em /var/lib/google/cis_scanner_scan_result.textproto
. Se alguma das verificações de nível 1 ou 2 do CIS falhar, o arquivo textproto vai conter a lista de todas as verificações com falha, como no exemplo a seguir:
cat /var/lib/google/cis_scanner_scan_result.textproto
# Output
start_time: {
seconds: 1648241700
nanos: 763152171
}
end_time: {
seconds: 1648241700
nanos: 812992527
}
scanner_version: "1.1.4.3"
benchmark_version: "1.0.0"
status: {
status: SUCCEEDED
}
non_compliant_benchmarks: {
id: "etc-passwd-permissions"
compliance_occurrence: {
non_compliant_files: {
path: "/etc/passwd"
reason: "File permission is 0664, expected the following bits to be set: 0444 and the following bits to be clear: 0133"
}
}
}
compliant_benchmarks: {
id: "etc-passwd-permissions"
compliance_occurrence: {}
}
Para mitigar as verificações com falha, use o Comparativo de mercado do CIS e siga as etapas na seção Remediation
para a verificação com falha e deixe a instância em conformidade. Para saber qual recomendação corresponde a uma verificação com falha no comparativo de mercado do CIS, procure o ID non_compliant_benchmark's
no arquivo de configuração do scanner do CIS localizado em /usr/share/google/security/cis-compliance/cis_config.textproto
.