Hardening para Servidores: mudanças entre as edições

De Wiki Projeto Root
Ir para navegação Ir para pesquisar
 
(8 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 8: Linha 8:


== 1. Atualizações e Patches ==
== 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:
* Mantenha o sistema atualizado:
   apt update && apt full-upgrade -y
   apt update && apt full-upgrade -y
Linha 39: Linha 68:
== 5. Auditoria e Logs ==
== 5. Auditoria e Logs ==
* Instale o auditd:
* Instale o auditd:
   <code><nowiki>apt install auditd</nowiki></code>
   apt install auditd
* Configure regras específicas para monitoramento de eventos críticos.
* Configure regras específicas para monitoramento de eventos críticos.


Linha 48: Linha 77:
== 7. Verificação de Integridade ==
== 7. Verificação de Integridade ==
* Instale o AIDE:
* Instale o AIDE:
  <code><nowiki>
   apt install aide
   apt install aide
   aideinit
   aideinit
  </nowiki></code>
* Agende verificações regulares com cron.
* Agende verificações regulares com cron.


Linha 59: Linha 86:


== 9. Controle de Acesso com AppArmor ==
== 9. Controle de Acesso com AppArmor ==
* Verifique se o AppArmor está habilitado:
   <code><nowiki>systemctl status apparmor</nowiki></code>
🔐 '''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.
* Use perfis específicos para serviços.
{| class="wikitable"
! 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)
{| class="wikitable sortable"
! Arquivo do Perfil !! Descrição
|-
| usr.bin.man || Restringe o comando <code>man</code>
|-
| usr.bin.ping || Restringe o binário <code>ping</code>
|-
| bin.ping6 || Perfil separado para <code>ping</code> IPv6
|-
| usr.bin.whois || Restringe o utilitário <code>whois</code>
|-
| usr.sbin.tcpdump || Limita o uso do <code>tcpdump</code>
|-
| usr.sbin.cupsd || Perfil para o serviço de impressão <code>cupsd</code>
|-
| usr.sbin.ntpd || Restringe o daemon <code>ntpd</code> (NTP)
|-
| usr.sbin.nscd || Perfil para o cache de DNS <code>nscd</code>
|-
| usr.sbin.rsyslogd || Restringe o serviço <code>rsyslog</code>
|-
| sbin.klogd || Perfil para o logger do kernel <code>klogd</code>
|-
| sbin.syslogd || Perfil para o logger <code>syslogd</code> (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 ==
== 10. Serviços e Daemons ==
Linha 69: Linha 170:
== 11. Sincronização de Hora (NTP) ==
== 11. Sincronização de Hora (NTP) ==
* Instale o Chrony:
* Instale o Chrony:
   <code><nowiki>apt install chrony</nowiki></code>
   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 ==
== 12. Criptografia ==
Linha 76: Linha 212:


== 13. Políticas de Senha ==
== 13. Políticas de Senha ==
Edite o arquivo <code>/etc/pam.d/common-password</code>:
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
<pre>
Verifique se o módulo libpam-pwquality está instalado:
pam_pwquality.so retry=3 minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
apt install libpam-pwquality
</pre>
 
Edite o arquivo <code>/etc/pam.d/common-password</code>: pam_pwquality.so  
retry=3
minlen=12
difok=3
ucredit=-1
lcredit=-1
dcredit=-1
ocredit=-1
 
 
 
Explicação dos parâmetros:
 
{| class="wikitable"
! 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 ==
== 14. Backup Seguro ==
Linha 92: Linha 260:
== 16. Ferramentas de Verificação ==
== 16. Ferramentas de Verificação ==
* Instale e rode o Lynis:
* Instale e rode o Lynis:
  <code><nowiki>
   apt install lynis
   apt install lynis
   lynis audit system
   lynis audit system
  </nowiki></code>


== 17. Checklist Final ==
== 17. Checklist Final ==

Edição atual tal como às 14h09min de 10 de junho de 2025

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