# MANUAL TÉCNICO - HARDENING DE SERVIDOR LINUX **Código:** ITGENG 0010/26 | **Classificação:** CONFIDENCIAL **Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}} ## 1. HISTÓRICO DE REVISÃO | Data | Versão | Descrição | Autor | | :--- | :--- | :--- | :--- | | {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves | ## 2. OBJETIVO Aplicar práticas de segurança para reduzir a superfície de ataque em servidores Linux expostos ou críticos, focando em SSH, Proteção contra Força Bruta e Kernel Tuning. ## 3. PRÉ-REQUISITOS * [ ] Acesso Root. * [ ] **CRÍTICO:** Tenha uma chave SSH pública configurada e testada no servidor ANTES de desabilitar a senha. * [ ] Backup das configurações originais. --- ## 4. SEGURANÇA NO SSH (Desabilitar Senha) O vetor de ataque mais comum é força bruta na porta 22. 1. Edite o arquivo: `/etc/ssh/sshd_config` 2. Garanta que as seguintes linhas existem e estão descomentadas: ```config PermitRootLogin prohibit-password # Ou 'no' (Recomendado criar usuario admin separado) PubkeyAuthentication yes PasswordAuthentication no ChallengeResponseAuthentication no ``` 3. Valide a configuração: `sudo sshd -t` 4. Reinicie o serviço: * Debian/Ubuntu: `sudo systemctl restart ssh` * RHEL/CentOS: `sudo systemctl restart sshd` * Alpine: `sudo rc-service sshd restart` > ⚠️ **IMPORTANTE:** Não feche a sessão atual sem abrir uma nova para testar se a chave funcionou. Se falhar, você perderá acesso remoto. ## 5. PROTEÇÃO CONTRA BRUTE-FORCE (Fail2Ban) O Fail2Ban monitora logs e bane IPs que erram a senha repetidamente. **Instalação:** * Debian/Ubuntu: `sudo apt install fail2ban` * RHEL/CentOS: `sudo dnf install epel-release && sudo dnf install fail2ban` * Alpine: `sudo apk add fail2ban` **Configuração Básica:** 1. Copie o arquivo padrão de config: ```bash sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local ``` 2. Edite `/etc/fail2ban/jail.local` e ative a proteção SSH: ```ini [sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log ; (Ou /var/log/secure no RHEL) maxretry = 3 bantime = 3600 ; (1 hora) ``` 3. Reinicie: `sudo systemctl restart fail2ban` 4. Verifique: `sudo fail2ban-client status sshd` ## 6. AJUSTES DE KERNEL (Sysctl) Proteção contra ataques de rede (Spoofing, ICMP Redirects). 1. Crie o arquivo: `/etc/sysctl.d/99-security.conf` 2. Adicione: ```ini # Desabilita redirecionamentos ICMP (Man-in-the-middle) net.ipv4.conf.all.accept_redirects = 0 net.ipv6.conf.all.accept_redirects = 0 # Ignora pings de broadcast net.ipv4.icmp_echo_ignore_broadcasts = 1 # Protecao contra Syn Flood net.ipv4.tcp_syncookies = 1 # Log de pacotes suspeitos (Martian packets) net.ipv4.conf.all.log_martians = 1 ``` 3. Aplique: `sudo sysctl --system` ## 7. DADOS TÉCNICOS | Serviço | Porta Padrão | Logs | | :--- | :--- | :--- | | **SSH** | 22/tcp | `/var/log/auth.log` (Deb) / `/var/log/secure` (RHEL) | | **Fail2Ban** | N/A | `/var/log/fail2ban.log` | ## 8. VALIDAÇÃO FINAL - [ ] Tentar logar via SSH sem chave pede senha? (Deve falhar: "Permission denied (publickey)") - [ ] O Fail2Ban está rodando (`systemctl status fail2ban`)? - [ ] Errar a senha 3 vezes bane o IP? (Cuidado para não se banir, use 4G para testar).