Intermediário Sistema e Host
Hardening Linux — usuários, SSH, firewall, SUID e auditoria
Um servidor Linux recém-instalado já vem com dezenas de vetores de ataque: usuários desnecessários, serviços abertos, bits SUID inseguros e sem auditoria. Hardening é o processo de reduzir essa superfície antes de colocar o servidor em produção.
Gerenciamento de usuários
Remova ou bloqueie contas que não precisam de login interativo:
# Listar contas com shell válido
grep -v '/nologin\|/false' /etc/passwd
# Bloquear conta
sudo usermod -L nome_usuario
sudo usermod -s /usr/sbin/nologin nome_usuario
# Verificar UID 0 (root) não autorizado
awk -F: '($3 == 0) { print $1 }' /etc/passwd
Senhas fortes com expiração:
sudo chage -M 90 -W 14 nome_usuario # expira em 90 dias, aviso em 14
sudo passwd -l root # bloqueia login direto como root
Hardening SSH
Edite /etc/ssh/sshd_config:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers deploy ops
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
Recarregue após alterar:
sudo systemctl reload sshd
Use chaves Ed25519 (mais seguras que RSA 2048):
ssh-keygen -t ed25519 -C "deploy@example.com"
Firewall com nftables / ufw
Política padrão: negar tudo, liberar só o necessário.
# ufw (Ubuntu/Debian)
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose
Bits SUID/SGID — risco de escalada
Binários com SUID rodam com privilégio do dono (frequentemente root):
# Encontrar todos os SUID no sistema
find / -perm -4000 -type f 2>/dev/null
# Remover SUID de binário desnecessário
sudo chmod u-s /usr/bin/at
Compare a lista com a baseline. Qualquer SUID inesperado é sinal de comprometimento.
Auditoria com auditd
sudo apt install auditd
sudo auditctl -w /etc/passwd -p wa -k passwd_changes
sudo auditctl -w /etc/sudoers -p wa -k sudoers_changes
sudo auditctl -a always,exit -F arch=b64 -S execve -k exec_log
# Ver eventos
sudo ausearch -k passwd_changes
sudo aureport --summary
Checklist rápido
- Kernel atualizado (
sudo apt upgrade) - Serviços desnecessários parados (
systemctl disable bluetooth cups) /tmpmontado comnoexec,nosuid- Fail2ban instalado para SSH
- Logs centralizados (rsyslog → SIEM)