manuais-e-documentacao-itguys/documentacao linux/[Nível 3] Hardening de Serv...

101 lines
3.4 KiB
Markdown

# 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).