Hardening para Servidores

De Wiki Projeto Root
Revisão de 14h09min de 10 de junho de 2025 por Diegocosta (discussão | contribs) (→‎1. Atualizações e Patches)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

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
Yellowpin.svg 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: !@#).
Yellowpin.svg 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