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

De Wiki Projeto Root
Ir para navegação Ir para pesquisar
(Criou página com '= 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 == * Mantenha o sistema a...')
 
 
(12 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:
  <code><nowiki>
   apt update && apt full-upgrade -y
   apt update && apt full-upgrade -y
  </nowiki></code>
* Habilite atualizações automáticas:
* Habilite atualizações automáticas:
  <code><nowiki>
   apt install unattended-upgrades apt-listchanges -y
   apt install unattended-upgrades apt-listchanges -y
   dpkg-reconfigure --priority=low unattended-upgrades
   dpkg-reconfigure --priority=low unattended-upgrades
  </nowiki></code>


== 2. Contas de Usuário e Permissões ==
== 2. Contas de Usuário e Permissões ==
Linha 34: Linha 59:
== 4. Firewall (UFW) ==
== 4. Firewall (UFW) ==
Instale e ative o UFW:
Instale e ative o UFW:
<code><nowiki>
 
apt install ufw
apt install ufw
ufw default deny incoming
ufw default deny incoming
ufw default allow outgoing
ufw default allow outgoing
ufw allow ssh
ufw allow ssh
ufw enable
ufw enable
</nowiki></code>


== 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 53: 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 64: 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 74: 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 81: 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 97: 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