Hardening para Servidores
Sobre
Olá! Visitante, reunimos aqui, informações sobre como aumentar a segurança em ambientes Linux.
Manual de Hardening para Servidores Debian
Objetivo
Aplicar medidas de segurança para proteger servidores Debian contra ataques, vazamentos de dados e falhas de configuração, em conformidade com os principais frameworks de segurança como NIST SP 800-53, HIPAA, CIS Controls, e ISO/IEC 27001.
1. Atualizações e Patches
🔁 Importância das Atualizações e Patches
Manter o sistema operacional e os softwares atualizados com os últimos patches de segurança é uma das medidas mais eficazes e fundamentais para proteger um servidor contra vulnerabilidades conhecidas. A maioria dos ataques cibernéticos bem-sucedidos explora falhas já documentadas, para as quais correções (patches) já haviam sido lançadas pelos fabricantes.
👨🏫 Razões para aplicar atualizações regularmente
1. Correção de vulnerabilidades de segurança Atualizações frequentemente corrigem falhas críticas que poderiam permitir a execução remota de código, elevação de privilégios, negação de serviço (DoS) ou vazamento de dados. Manter os pacotes atualizados reduz a superfície de ataque do sistema.
2. Conformidade com frameworks e legislações Normas como NIST SP 800-53, HIPAA, ISO 27001, e LGPD exigem que os sistemas estejam protegidos contra falhas conhecidas. A aplicação de patches é parte essencial das políticas de conformidade e auditoria.
3. Estabilidade e confiabilidade Além da segurança, os patches resolvem bugs que afetam a estabilidade do sistema e dos serviços, garantindo melhor performance e confiabilidade na operação.
4. Redução do risco de exploits automatizados Muitos atacantes usam scripts automatizados para explorar falhas comuns em servidores desatualizados. Aplicar atualizações bloqueia essas tentativas triviais de invasão.
🙏Boas práticas
Utilizar ferramentas como unattended-upgrades para atualizações automáticas de segurança.
Monitorar repositórios de segurança do Debian e canais de divulgação de vulnerabilidades (como CVE).
Testar atualizações críticas em ambientes de homologação antes da produção, quando possível.
Registrar e documentar todas as atualizações aplicadas para fins de auditoria.
- Mantenha o sistema atualizado:
apt update && apt full-upgrade -y
- Habilite atualizações automáticas:
apt install unattended-upgrades apt-listchanges -y dpkg-reconfigure --priority=low unattended-upgrades
2. Contas de Usuário e Permissões
- Remova usuários e grupos não utilizados.
- Desabilite o login root via SSH.
- Use sudo para usuários com privilégios administrativos.
3. Configuração Segura do SSH
Edite o arquivo /etc/ssh/sshd_config:
PermitRootLogin no PasswordAuthentication no
- Use autenticação via chave SSH.
- Permita apenas usuários autorizados.
4. Firewall (UFW)
Instale e ative o UFW:
apt install ufw ufw default deny incoming ufw default allow outgoing ufw allow ssh ufw enable
5. Auditoria e Logs
- Instale o auditd:
apt install auditd
- Configure regras específicas para monitoramento de eventos críticos.
6. Logrotate
- Verifique o arquivo
/etc/logrotate.conf. - Centralize logs usando syslog-ng ou rsyslog remoto.
7. Verificação de Integridade
- Instale o AIDE:
apt install aide aideinit
- Agende verificações regulares com cron.
8. Antivírus
- Instale o ClamAV:
apt install clamav
9. Controle de Acesso com AppArmor
🔐 O que é o AppArmor? AppArmor (Application Armor) é um Mandatory Access Control (MAC) para o Linux. Ele permite que você controle o que cada aplicativo pode ou não pode fazer, mesmo que o aplicativo seja comprometido. Ao contrário do controle de acesso tradicional baseado em usuários/grupos (DAC), o AppArmor aplica perfis de segurança por aplicação, limitando explicitamente seus acessos a arquivos, redes, capacidades do kernel, etc.
🧰 Principais vantagens
- Fácil de usar comparado ao SELinux
- Funciona por perfis atribuídos a binários
- Restringe o escopo de ataques por escalonamento de privilégio
- Muito útil em servidores expostos à internet
🛠️ Instalação do AppArmor no Debian
apt install apparmor apparmor-utils apparmor-profiles
✅ Comando para verificar perfis instalados e seus estados
systemctl status apparmor
- Use perfis específicos para serviços.
| Item | Valor |
|---|---|
| Módulo AppArmor carregado | Sim |
| Perfis carregados | 14 |
| Perfis em modo enforce | 4 |
| Perfis em modo complain | 10 |
| Nota: Os perfis só têm efeito se estiverem carregados |
📁 Onde ficam os perfis?
cd /etc/apparmor.d/
📋 Exemplos de perfis incluídos (varia conforme os pacotes instalados)
| Arquivo do Perfil | Descrição |
|---|---|
| usr.bin.man | Restringe o comando man
|
| usr.bin.ping | Restringe o binário ping
|
| bin.ping6 | Perfil separado para ping IPv6
|
| usr.bin.whois | Restringe o utilitário whois
|
| usr.sbin.tcpdump | Limita o uso do tcpdump
|
| usr.sbin.cupsd | Perfil para o serviço de impressão cupsd
|
| usr.sbin.ntpd | Restringe o daemon ntpd (NTP)
|
| usr.sbin.nscd | Perfil para o cache de DNS nscd
|
| usr.sbin.rsyslogd | Restringe o serviço rsyslog
|
| sbin.klogd | Perfil para o logger do kernel klogd
|
| sbin.syslogd | Perfil para o logger syslogd (sistema antigo)
|
⚠️ Para ativar
aa-enforce /etc/apparmor.d/<nome-do-perfil>
Perfis em modo complain apenas registram violações no log:
aa-complain /etc/apparmor.d/<nome-do-perfil>
✅ Conclusão O AppArmor é uma ferramenta poderosa e relativamente simples de configurar, permitindo limitar o comportamento de programas potencialmente perigosos ou vulneráveis. Ele é especialmente útil em:
- Servidores web (ex: perfis para Apache, nginx, php-fpm)
- Containers (LXC/LXD)
- Servidores expostos publicamente
10. Serviços e Daemons
- Desabilite serviços desnecessários:
systemctl disable nome_servico
11. Sincronização de Hora (NTP)
- Instale o Chrony:
apt install chrony
- Configure o Chrony:
nano /etc/chrony/chrony.conf
- Substitua ou comente as linhas pool existentes e adicione os servidores NTP brasileiros recomendados:
# Servidores NTP confiáveis no Brasil pool a.st1.ntp.br iburst pool b.st1.ntp.br iburst pool c.st1.ntp.br iburst
- Configure o fuso horário do sistema para o horário oficial de Brasília (BRT) e Ative sincronização de tempo no BIOS/RTC
timedatectl set-timezone America/Sao_Paulo timedatectl set-local-rtc 0 --adjust-system-clock systemctl restart chrony
- Verifique se está sincronizando corretamente
chronyc sources -v
Saída esperada:
210 Number of sources = 3 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* a.st1.ntp.br 2 6 377 34 -23us[ -59us] +/- 1ms
- Verifique a hora atual e sincronização
timedatectl status
Saída esperada:
Local time: Mon 2025-06-09 12:45:00 -03
Universal time: Mon 2025-06-09 15:45:00 UTC
RTC time: Mon 2025-06-09 15:45:00
Time zone: America/Sao_Paulo (-03, -0300)
System clock synchronized: yes
NTP service: active
12. Criptografia
- Criptografe discos com LUKS.
- Use certificados válidos com TLS.
13. Políticas de Senha
Garantir que as senhas criadas pelos usuários sigam regras de complexidade para aumentar a segurança e prevenir o uso de senhas fracas, em conformidade com o NIST e outras normas de segurança Verifique se o módulo libpam-pwquality está instalado:
apt install libpam-pwquality
Edite o arquivo /etc/pam.d/common-password: pam_pwquality.so
retry=3 minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
Explicação dos parâmetros:
| Parâmetro | Significado |
|---|---|
| retry=3 | Permite até 3 tentativas em caso de erro de senha. |
| minlen=12 | A senha deve ter no mínimo 12 caracteres. |
| difok=3 | A nova senha deve diferir da anterior em pelo menos 3 caracteres. |
| ucredit=-1 | Requer pelo menos 1 letra maiúscula. |
| lcredit=-1 | Requer pelo menos 1 letra minúscula. |
| dcredit=-1 | Requer pelo menos 1 número. |
| ocredit=-1 | Requer pelo menos 1 caractere especial (ex: !@#). |
| Nota: Os créditos com sinal negativo são obrigatórios. Não misture com pam_cracklib se estiver habilitado; use um ou outro para evitar conflitos. |
14. Backup Seguro
- Utilize ferramentas como Borg, Restic ou Rsnapshot.
- Mantenha backups criptografados e fora do ambiente de produção.
15. Conformidade com Frameworks
- NIST SP 800-53: AC-2 (Controle de Acesso), AU-2 (Logs), SC-28 (Proteção de Dados)
- HIPAA: 164.312(a)(1) - Controle de Acesso, 164.308(a)(1)(ii)(D) - Avaliação
- CIS Controls: Control 4 (Controle de Acesso), Control 6 (Auditoria), Control 10 (Backups)
16. Ferramentas de Verificação
- Instale e rode o Lynis:
apt install lynis lynis audit system
17. Checklist Final
- [x] Atualizações automáticas
- [x] SSH seguro
- [x] Firewall ativo
- [x] Logs e auditoria configurados
- [x] Backup seguro
- [x] Verificação de integridade ativa
- [x] AppArmor ou SELinux ativos
- [x] Conformidade com frameworks aplicada