Hardening para Servidores: mudanças entre as edições
| (9 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 | ||
* Habilite atualizações automáticas: | * Habilite atualizações automáticas: | ||
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 | ||
== 2. Contas de Usuário e Permissões == | == 2. Contas de Usuário e Permissões == | ||
| Linha 43: | Linha 68: | ||
== 5. Auditoria e Logs == | == 5. Auditoria e Logs == | ||
* Instale o auditd: | * Instale o auditd: | ||
apt install auditd | |||
* Configure regras específicas para monitoramento de eventos críticos. | * Configure regras específicas para monitoramento de eventos críticos. | ||
| Linha 52: | Linha 77: | ||
== 7. Verificação de Integridade == | == 7. Verificação de Integridade == | ||
* Instale o AIDE: | * Instale o AIDE: | ||
apt install aide | apt install aide | ||
aideinit | aideinit | ||
* Agende verificações regulares com cron. | * Agende verificações regulares com cron. | ||
| Linha 63: | Linha 86: | ||
== 9. Controle de Acesso com AppArmor == | == 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. | * 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 73: | Linha 170: | ||
== 11. Sincronização de Hora (NTP) == | == 11. Sincronização de Hora (NTP) == | ||
* Instale o Chrony: | * 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 == | == 12. Criptografia == | ||
| Linha 80: | 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 | ||
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 | ||
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 96: | Linha 260: | ||
== 16. Ferramentas de Verificação == | == 16. Ferramentas de Verificação == | ||
* Instale e rode o Lynis: | * Instale e rode o Lynis: | ||
apt install lynis | apt install lynis | ||
lynis audit system | lynis audit system | ||
== 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 |
| 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