Checklist de Hardening Linux em 10 Passos
Um guia pratico com 10 passos essenciais para fortalecer a seguranca de servidores Linux em producao.
Subir um servidor Linux e facil. Subir um servidor Linux seguro exige disciplina. Este checklist cobre os 10 passos fundamentais que todo servidor em producao deveria ter antes de receber trafego.
1. Atualize Tudo Antes de Qualquer Coisa
Parece obvio, mas servidores com pacotes desatualizados sao a norma, nao a excecao.
sudo apt update && sudo apt upgrade -y # Debian/Ubuntu
sudo dnf update -y # RHEL/Fedora
Configure atualizacoes automaticas de seguranca com unattended-upgrades ou dnf-automatic.
2. Configure o SSH de Forma Segura
Edite /etc/ssh/sshd_config:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers deploy admin
Use apenas autenticacao por chave. Considere mudar a porta padrao e implementar fail2ban.
3. Ative e Configure o Firewall
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp # ou a porta SSH customizada
sudo ufw allow 443/tcp
sudo ufw enable
Em servidores RHEL, use firewalld. O principio e o mesmo: negue tudo por padrao, libere apenas o necessario.
4. Remova Servicos Desnecessarios
Liste o que esta rodando e desabilite o que nao precisa:
systemctl list-units --type=service --state=running
sudo systemctl disable --now cups
sudo systemctl disable --now avahi-daemon
Cada servico ativo e uma superficie de ataque. Menos e mais.
5. Configure Politicas de Senha e Contas
sudo apt install libpam-pwquality
Edite /etc/security/pwquality.conf para exigir complexidade minima. Configure bloqueio apos tentativas falhas em /etc/pam.d/common-auth com pam_faillock.
6. Implemente o Principio do Menor Privilegio
Nao de sudo irrestrito. Use o /etc/sudoers com granularidade:
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart myapp
Audite usuarios com sudo regularmente. Remova contas que nao sao mais necessarias.
7. Configure Logging Centralizado
sudo apt install rsyslog
Encaminhe logs para um SIEM ou servidor de logs externo. Logs locais podem ser apagados por um atacante. Configure retencao adequada e monitore /var/log/auth.log e /var/log/syslog.
8. Habilite Auditoria com auditd
sudo apt install auditd
sudo systemctl enable --now auditd
Adicione regras para monitorar alteracoes criticas:
sudo auditctl -w /etc/passwd -p wa -k identity
sudo auditctl -w /etc/shadow -p wa -k identity
sudo auditctl -w /etc/sudoers -p wa -k sudoers_change
9. Proteja o Sistema de Arquivos
Aplique opcoes de montagem restritivas no /etc/fstab:
/tmp ext4 defaults,noexec,nosuid,nodev 0 0
noexec impede execucao de binarios em /tmp, uma tecnica comum em ataques pos-exploracao.
10. Configure Verificacao de Integridade
Instale o AIDE (Advanced Intrusion Detection Environment):
sudo apt install aide
sudo aideinit
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
Execute verificacoes periodicas via cron e investigue qualquer alteracao inesperada em arquivos de sistema.
Proximo Passo
Este checklist e o basico. Ambientes com requisitos de compliance (PCI-DSS, SOC 2, ISO 27001) precisam de controles adicionais. Mas se o seu servidor nao atende nem esses 10 pontos, os controles avancados podem esperar -- resolva o fundamento primeiro.