101 lines
3.4 KiB
Markdown
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).
|