Hardening de servidores Linux: guia prático de CIS Benchmark
1. Introdução ao CIS Benchmark e sua importância no Hardening
O CIS Benchmark é um conjunto de recomendações de segurança desenvolvido pelo Center for Internet Security (CIS), uma organização sem fins lucrativos dedicada a melhorar a postura de segurança cibernética global. Cada benchmark é elaborado por consenso de especialistas da indústria, governos e academia, resultando em guias práticos e acionáveis para hardening de sistemas operacionais, aplicações e dispositivos de rede.
Os benchmarks são organizados em dois níveis principais:
- Nível 1: Recomendações essenciais que não impactam significativamente a funcionalidade do sistema, focadas em reduzir a superfície de ataque imediata.
- Nível 2: Medidas mais rigorosas que podem exigir alterações profundas na configuração, indicadas para ambientes de alta segurança.
Seguir o CIS Benchmark traz benefícios claros: redução da superfície de ataque, conformidade com regulamentações como PCI-DSS e HIPAA, e adoção de melhores práticas validadas globalmente. A chave para aplicar o guia sem comprometer a operação é priorizar as recomendações de Nível 1, testar em ambiente controlado e documentar exceções justificadas.
2. Preparação do ambiente e ferramentas de auditoria
Antes de iniciar o hardening, é essencial preparar o ambiente com ferramentas de auditoria. O CIS disponibiliza o CIS-CAT (CIS Configuration Assessment Tool), uma ferramenta automatizada que avalia a conformidade do sistema com os benchmarks. Para sistemas Linux, também é possível usar scripts manuais disponíveis no repositório oficial do CIS.
Ferramentas complementares como Lynis e OpenSCAP oferecem auditorias abrangentes. O Lynis, por exemplo, realiza centenas de verificações de segurança e gera relatórios detalhados. Já o OpenSCAP é uma implementação open-source do SCAP (Security Content Automation Protocol), compatível com perfis de segurança do governo dos EUA.
Para instalar e executar o Lynis em um servidor Ubuntu:
sudo apt update && sudo apt install lynis -y
sudo lynis audit system
Os resultados devem ser interpretados com cuidado: falhas indicam vulnerabilidades críticas, warnings apontam áreas de melhoria, e itens "não aplicáveis" devem ser revisados para confirmar se realmente não se aplicam ao ambiente.
3. Hardening do sistema de arquivos e partições
A configuração segura do sistema de arquivos é o alicerce do hardening. Partições separadas para diretórios críticos como /tmp, /var e /home impedem que um ataque em uma área comprometa todo o sistema. Durante a instalação do sistema, crie partições dedicadas:
/tmp - 2 GB (sistema de arquivos ext4)
/var - 5 GB (sistema de arquivos ext4)
/home - 10 GB (sistema de arquivos ext4)
Após a criação, configure opções de montagem seguras no arquivo /etc/fstab. Para a partição /tmp, adicione as opções nodev, noexec e nosuid:
/dev/sda2 /tmp ext4 defaults,nodev,noexec,nosuid 0 2
Essas opções impedem a execução de binários, criação de dispositivos e alteração de bits SUID em /tmp, mitigando ataques que exploram diretórios temporários.
A restrição de permissões em arquivos sensíveis é igualmente crítica. Verifique e corrija as permissões de arquivos como /etc/passwd, /etc/shadow e /etc/group:
chmod 644 /etc/passwd
chmod 640 /etc/shadow
chmod 644 /etc/group
chmod 640 /etc/gshadow
4. Gerenciamento de serviços e processos
Serviços desnecessários aumentam a superfície de ataque. Identifique e remova ou desabilite serviços não essenciais usando systemctl:
systemctl list-unit-files --type=service --state=enabled
sudo systemctl disable <servico>
sudo systemctl stop <servico>
Para sistemas mais antigos que usam chkconfig, o comando equivalente é:
chkconfig --list | grep 3:on
sudo chkconfig <servico> off
A configuração de limites de recursos via systemd protege contra ataques de esgotamento de recursos. Edite o arquivo de serviço relevante em /etc/systemd/system/ e adicione:
[Service]
CPUQuota=50%
MemoryMax=500M
TasksMax=100
Para proteção contra ataques de tempo de execução, ative ASLR (Address Space Layout Randomization) e desabilite core dumps. No arquivo /etc/sysctl.conf ou em /etc/sysctl.d/:
kernel.randomize_va_space = 2
kernel.exec-shield = 1
fs.suid_dumpable = 0
Aplique as configurações com sudo sysctl -p.
5. Controle de acesso, autenticação e senhas
Políticas de senha robustas são implementadas via PAM (Pluggable Authentication Modules). Configure o arquivo /etc/pam.d/common-password para exigir comprimento mínimo, complexidade e histórico:
password requisite pam_pwquality.so retry=3 minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
password required pam_pwhistory.so remember=5
O bloqueio de conta após tentativas falhas é configurado com pam_faillock. No arquivo /etc/pam.d/common-auth, adicione antes da linha pam_unix.so:
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=900
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900
Para autenticação SSH segura, configure chaves e desabilite o login root direto. No arquivo /etc/ssh/sshd_config:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Reinicie o serviço SSH: sudo systemctl restart sshd.
6. Configuração de rede e firewall
O firewall deve seguir uma política restritiva. Com nftables, configure regras básicas:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
ct state established,related accept
iif lo accept
ip protocol icmp accept
tcp dport {22,80,443} accept
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
Desabilite protocolos inseguros como IPv6 se não for utilizado, e serviços como telnet e rsh. No arquivo /etc/default/grub, adicione ipv6.disable=1 à linha GRUB_CMDLINE_LINUX e execute update-grub.
Para proteção contra varredura de portas e ataques DoS, configure parâmetros no /etc/sysctl.conf:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_syn_retries = 5
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_max_syn_backlog = 2048
7. Atualizações, logs e auditoria contínua
Atualizações automáticas de segurança são vitais. No Debian/Ubuntu, configure unattended-upgrades:
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
No RHEL/CentOS, use yum-cron:
sudo yum install yum-cron -y
sudo systemctl enable yum-cron
A centralização de logs com rsyslog permite monitoramento centralizado. Configure o arquivo /etc/rsyslog.conf para enviar logs a um servidor remoto:
*.* @servidor-log:514
A rotação de logs com logrotate evita que os logs cresçam indefinidamente. Exemplo de configuração em /etc/logrotate.d/custom:
/var/log/*.log {
weekly
rotate 4
compress
delaycompress
missingok
notifempty
}
Por fim, implemente scripts periódicos de re-auditoria baseados no CIS Benchmark. Um script simples pode executar o Lynis semanalmente e enviar o relatório por e-mail:
#!/bin/bash
lynis audit system --quiet --report-file /var/log/lynis-report.dat
mail -s "Relatório de Segurança Semanal" admin@exemplo.com < /var/log/lynis-report.dat
Adicione o script ao cron: 0 2 * * 0 /usr/local/bin/audit-weekly.sh.
Referências
- CIS Benchmarks Official Site — Página oficial com todos os benchmarks disponíveis para download, incluindo o CIS Benchmark para Linux.
- CIS-CAT Pro Documentation — Documentação oficial da ferramenta de avaliação automatizada CIS-CAT Pro.
- Lynis - Security Auditing Tool — Ferramenta open-source de auditoria de segurança para sistemas Linux, Unix e macOS.
- OpenSCAP Project — Projeto open-source para automação de conformidade de segurança, compatível com SCAP e benchmarks do CIS.
- Red Hat Security Hardening Guide — Guia oficial de hardening de segurança da Red Hat, alinhado com benchmarks do CIS.
- Ubuntu Security Hardening Guide — Documentação da Canonical sobre hardening de segurança e certificações, incluindo CIS Benchmark.
- NIST National Checklist for Linux — Checklist de segurança do NIST para sistemas Linux, complementar ao CIS Benchmark.