Redes e Segurança

Hardening de servidores Linux: guia prático de CIS Benchmark

• 6 min de leitura

Hardening de servidores Linux: guia prático de CIS Benchmark
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.

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

💬 Comentários
Mais em Redes e Segurança