Módulo 10 · 10.1
Hardening e princípios CIS
Módulo 10: Manter a segurança · Tempo de leitura: 11 minutos
Objetivo de aprendizagem: No final desta lição, saberá explicar o que é o hardening e quais os princípios em que assenta, saberá o que são os CIS Benchmarks e como utilizá-los com bom senso, e conseguirá verificar o seu servidor de forma sistemática com o Lynis.
Conceitos-chave: hardening, superfície de ataque, instalação mínima, privilégios mínimos (least privilege), defesa em camadas (defense in depth), CIS Benchmarks, Level 1 e Level 2, CIS Controls, Lynis, hardening index, AppArmor, SELinux, sysctl, sincronização da hora
O que é o hardening?
Uma instalação nova de Debian ou Ubuntu é razoavelmente segura, mas foi feita para funcionar no maior número possível de situações. O hardening (reforço da segurança) consiste em adaptar o servidor exatamente à sua utilização: retirar tudo o que não é necessário e tornar mais rigoroso tudo o que pode ser rigoroso, sem avariar os seus próprios serviços.
Nos módulos anteriores já o fez, passo a passo: SSH com chaves (módulo 2), um utilizador normal com sudo (módulo 3), atualizações automáticas (módulo 4), uma firewall e o fail2ban (módulo 5), serviços com utilizadores próprios (módulo 6). Esta lição coloca essas medidas isoladas num enquadramento, para que veja o que ainda falta.
Quatro princípios
1. Uma superfície de ataque pequena. O que não existe não se pode estragar. Cada serviço instalado, cada porta aberta, cada conta é uma possível porta de entrada (lição 5.1). Faça uma instalação mínima e remova o que já não utiliza:
anna@web1:~$ systemctl list-units --type=service --state=running
anna@web1:~$ sudo ss -tulpn
anna@web1:~$ apt list --installed | wc -lSe estiver em execução um serviço que não conhece, descubra o que faz (lição 6.1). Se não precisar dele, remova o pacote.
2. Privilégios mínimos. Cada utilizador e cada programa recebe apenas as permissões de que precisa (lição 3.2). Nada de trabalho diário como root, serviços com utilizadores próprios, utilizadores de base de dados apenas com permissões sobre a sua própria base de dados, nada de chmod 777.
3. Defesa em camadas. Parta do princípio de que uma medida vai falhar. Uma base de dados que só escuta em 127.0.0.1 e está atrás de uma firewall e tem uma palavra-passe forte continua segura se uma dessas três falhar por acidente. Chama-se a isto defense in depth.
4. Saber o que acontece. O hardening não é só fechar, é também ver: registos que são guardados (lição 6.2), monitorização que alerta (lição 8.3) e cópias de segurança que permitem recuperar (módulo 8). Sem isso, só dá conta de uma intrusão quando já é tarde demais.
Os CIS Benchmarks
O Center for Internet Security (CIS) é uma organização americana sem fins lucrativos que elabora os CIS Benchmarks: listas extensas de configurações recomendadas por produto, redigidas por voluntários do mundo da segurança. Existem mais de cem, incluindo para Debian Linux e Ubuntu Linux, por versão. Pode descarregar os pdf gratuitamente para uso não comercial, depois de criar uma conta.
Um benchmark para Linux contém centenas de recomendações, cada uma com uma explicação, uma forma de verificar e uma forma de configurar. Estão divididas em perfis:
- Level 1: medidas básicas que pode aplicar com relativa rapidez, com um benefício de segurança claro, sem que o servidor fique muito menos utilizável. Para a maioria dos servidores, é este o objetivo.
- Level 2: medidas adicionais para ambientes em que a segurança está em primeiro lugar (defesa em camadas). Podem custar funcionalidades ou desempenho e, segundo o próprio CIS, causar danos se forem aplicadas sem cuidado.
No Linux existem perfis separados para servidores e para postos de trabalho.
Exemplos de temas num benchmark de Linux: partições separadas para /tmp e /var/log, desativar sistemas de ficheiros e protocolos de rede não utilizados, sincronização da hora, registo de auditoria, configurações do SSH (muitas já as conhece da lição 2.2), política de palavras-passe, permissões de ficheiros importantes e a firewall.
Além dos Benchmarks existem os CIS Controls (atualmente na versão 8.1): não são configurações por produto, mas uma lista de dezoito grupos de medidas para uma organização inteira, como "inventário de software", "gestão de vulnerabilidades" e "recuperação de dados". Para um único servidor, os Benchmarks são mais úteis; os Controls ajudam quando pensa na sua empresa como um todo.
Utilize um benchmark com bom senso
Um benchmark não é um botão que se carrega. Algumas regras:
- Primeiro compreender, depois aplicar. Cada recomendação tem uma explicação. Se não perceber o porquê, não a aplique ainda.
- Uma coisa de cada vez, e testar. Uma configuração rigorosa do kernel ou da rede pode avariar a sua aplicação. Crie um snapshot, altere uma coisa e verifique se tudo continua a funcionar.
- Nem tudo se aplica ao seu caso. Uma recomendação para uma partição
/var/logseparada é difícil num VPS existente e traz pouco benefício. Escolha de forma consciente e anote porque não aplica algo. - Cuidado com scripts de hardening prontos a usar da internet que aplicam "tudo do CIS" de uma só vez. Podem alterar o SSH, a firewall ou os registos de tal forma que fique sem acesso ao servidor, e depois já não sabe o que foi alterado.
Lynis: uma auditoria a partir do interior
O Lynis é um programa gratuito de código aberto (GPL) da CISOfy que percorre o servidor a partir do interior e apresenta avisos e sugestões por tema. Não altera nada por si; limita-se a relatar.
anna@web1:~$ sudo apt install lynis
anna@web1:~$ sudo lynis audit system
...
-[ Lynis 3.x Results ]-
Warnings (1):
----------------------------
! Found one or more vulnerable packages. [PKGS-7392]
Suggestions (34):
----------------------------
* Consider hardening SSH configuration [SSH-7408]
- Details : AllowTcpForwarding (set YES to NO)
...
Lynis security scan details:
Hardening index : 66 [############# ]
Tests performed : 262Como interpretar o resultado:
- Warnings (avisos) são aspetos que deve mesmo analisar, como pacotes com vulnerabilidades conhecidas (nesse caso, tem atualizações pendentes, lição 4.1).
- Suggestions (sugestões) são conselhos. Muitas são úteis, algumas não se adequam ao seu servidor. Uma sugestão para desativar
AllowTcpForwarding, por exemplo, avaria os seus túneis SSH (lição 2.3). Escolha de forma consciente. - Cada mensagem tem um código entre parênteses retos, como
[SSH-7408]. Com ele procura no registo/var/log/lynis.logo que foi exatamente testado. - O hardening index é um número até 100. É uma orientação, não uma nota a perseguir. Uma subida depois das suas alterações mostra que está a progredir; um 100 não é um objetivo.
A versão do Lynis no repositório de pacotes da sua distribuição pode estar um pouco desatualizada. Para uma primeira auditoria, isso não é problema.
Mais três temas em resumo
- AppArmor e SELinux são camadas de segurança adicionais no kernel que definem, por programa, o que este pode fazer. O Debian e o Ubuntu utilizam o AppArmor, ativo por predefinição; o AlmaLinux e o Rocky utilizam o SELinux. Não os desative "porque algo não funciona": procure a mensagem no journal e resolva o problema de forma direcionada.
- O sysctl define configurações do kernel, por exemplo para a rede. Os valores predefinidos do Debian e do Ubuntu são razoáveis. Se quiser alterar algo, coloque-o num ficheiro próprio em
/etc/sysctl.d/(o Debian 13 já não lê/etc/sysctl.conf). - Hora: um servidor com a hora errada torna os registos inúteis e pode considerar certificados inválidos. Verifique com
timedatectlque aparece "System clock synchronized: yes" (o relógio do sistema está sincronizado).
Na prática
Na WebOké, tal como noutros fornecedores de VPS, é o próprio cliente quem gere a segurança dentro do seu servidor: o fornecedor trata do hardware, da rede e da plataforma de virtualização. Este curso é de autoajuda: ninguém acompanha o que se passa no seu servidor. Antes de uma ronda de hardening, crie um snapshot no painel e saiba como abrir a consola caso fique sem acesso.
Resumo
- O hardening é adaptar o servidor à sua própria utilização: retirar o que não é necessário, tornar mais rigoroso o que for possível.
- Quatro princípios: superfície de ataque pequena, privilégios mínimos, defesa em camadas e ver o que acontece.
- Os CIS Benchmarks dão, por produto, centenas de recomendações em perfis Level 1 (básico) e Level 2 (rigoroso); utilize-os com compreensão, um passo de cada vez.
- O Lynis verifica o servidor a partir do interior e apresenta avisos, sugestões e um hardening index; não altera nada por si.
- Não desative o AppArmor/SELinux; configurações próprias do kernel em
/etc/sysctl.d/; verifique a sincronização da hora.
Questionário
Exercício
Exercício O10.1: Uma auditoria com o Lynis. Crie um snapshot, instale o Lynis no seu servidor e execute sudo lynis audit system. Anote o hardening index, todos os avisos e cinco sugestões. Escolha três sugestões que vai aplicar e uma que, de forma consciente, não vai aplicar, com o motivo. Depois, execute novamente a auditoria e anote o novo índice.
Exercício O10.1: Uma auditoria com o Lynis
Este exercício faz você mesmo; ninguém o verifica. Assinale o que já fez e marque o exercício como concluído.
Primeiro os avisos (normalmente atualizações pendentes). Sugestões úteis: definições de SSH mais rigorosas, atualizações automáticas, remover serviços não utilizados. Uma boa razão para ignorar algo: AllowTcpForwarding, se utilizar túneis. O índice é uma orientação, não um objetivo.
As suas marcações e notas ficam apenas neste navegador; não as enviamos para lado nenhum. Se tiver sessão iniciada, guardamos em Os meus cursos apenas que concluiu o exercício.
Para saber mais
- Proteger o seu VPS: os primeiros cinco minutos
- CIS Benchmarks (visão geral, incluindo Debian e Ubuntu): https://www.cisecurity.org/cis-benchmarks
- CIS Controls: https://www.cisecurity.org/controls
- Lynis, documentação: https://cisofy.com/documentation/lynis/
- O NCSC neerlandês, Beginnen met cybersecurity (fonte neerlandesa, em neerlandês): https://www.ncsc.nl/beginnen-met-cybersecurity
- Manter o seu VPS seguro: hardening, Lynis e uma rotina de manutenção
