120 lines
5.1 KiB
Markdown
120 lines
5.1 KiB
Markdown
# 🛡️ Nginx Pathfinder Proxy
|
|
|
|
Este repositório é o núcleo de inteligência e configuração do **Pathfinder Proxy**, instalado nativamente em **Ubuntu 24.04**. Ele combina performance extrema (HTTP/3, Brotli) com um motor de segurança multicamadas (PSDE + WAF + Fail2Ban).
|
|
|
|
---
|
|
|
|
## 🏗️ Estrutura de Pastas e Componentes
|
|
|
|
A configuração é modular para permitir manutenção rápida e alta disponibilidade.
|
|
|
|
- `nginx.conf`: O "cérebro" global. Configura workers, logs JSON e carrega os módulos dinâmicos.
|
|
- `conf.d/`: Contém as definições de cada site (**VHosts**).
|
|
- `snippets/`: Componentes reutilizáveis (SSL, Proxy, Cache, WAF, Headers).
|
|
- `modsec/`: Configuração do ModSecurity, regras **OWASP CRS v4** e tunings específicos.
|
|
- `dynamic/`: Arquivos modificados em tempo real (ex: `blacklist.conf` pelo Fail2Ban).
|
|
- `scripts/`: Scripts de utilidade (Ex: `install_modsecurity.sh`).
|
|
|
|
---
|
|
|
|
## 🧩 Guia de Snippets (Uso Obrigatório)
|
|
|
|
Para garantir o **Padrão Ouro**, todo site deve incluir os snippets básicos:
|
|
|
|
1. `include snippets/ssl_params.conf;`: Ativa TLS 1.3, HSTS e anuncia **HTTP/3 (QUIC)**.
|
|
2. `include snippets/proxy_params.conf;`: Headers padrão e ofuscação de tecnologia de backend (`Server`, `X-Powered-By`).
|
|
3. `include snippets/security_headers.conf;`: **Headers de 2026** (COOP, COEP, CORP) para proteção de isolamento do navegador.
|
|
4. `include snippets/modsecurity.conf;`: Ativa o WAF e a Blacklist dinâmica.
|
|
5. `include snippets/security_actions.conf;`: Toma a decisão final de bloquear (`444`) se o motor PSDE detectar risco alto.
|
|
6. `include snippets/cache_optimizer.conf;`: Otimiza a entrega de estáticos com cache inteligente (SWR).
|
|
|
|
---
|
|
|
|
## 🛡️ Camada de WAF (ModSecurity 3.0.14)
|
|
|
|
O Pathfinder Proxy utiliza o **ModSecurity v3** compilado sob medida para o Nginx Mainline.
|
|
|
|
- **Versão Nginx**: 1.29.5 Mainline (Oficial).
|
|
- **Versão ModSec**: 3.0.14.
|
|
- **Regras**: OWASP Core Rule Set (CRS) v4.
|
|
- **Plugins**: Utiliza plugins oficiais do CRS para **Nextcloud** e **WordPress**, garantindo zero falsos positivos nessas plataformas.
|
|
- **Tuning**: Arquivo `modsec/app_specific_modsec_tuning.conf` centraliza exceções para UniFi, vCenter, Exchange, Zabbix e Veeam.
|
|
|
|
---
|
|
|
|
## 🧠 Motor de Segurança PSDE (Pathfinder Security Engine)
|
|
|
|
Diferente de firewalls comuns, o Pathfinder usa o `security_maps.conf` para calcular um **Security Score** em tempo real baseado em:
|
|
- **Bad Bots:** Crawlers maliciosos e ferramentas de scan.
|
|
- **Suspicious URIs:** Tentativas de acesso a `.env`, `wp-admin`, `.git`, etc.
|
|
- **Methods:** Bloqueio de métodos HTTP incomuns em rotas sensíveis.
|
|
- **Risk Level:** Traduz o score em níveis (Limpo, Suspeito, Crítico) para os logs JSON.
|
|
|
|
---
|
|
|
|
## 🛠️ Workflow Operacional: Ativando um Novo Site
|
|
|
|
Siga este procedimento para colocar um novo sistema no ar com segurança máxima:
|
|
|
|
### 1. Preparação no Repositório (Local)
|
|
1. Crie o arquivo `nginx/conf.d/nome-do-site.conf` seguindo o **Padrão Ouro**.
|
|
2. **Atenção:** Aponte os caminhos de certificado para `/etc/letsencrypt/live/nome-do-site/`.
|
|
3. Faça o commit e push para a branch `producao`.
|
|
|
|
### 2. Sincronização no Servidor (SSH)
|
|
1. Entre no servidor e vá para o diretório de scripts: `cd /etc/nginx/scripts/`.
|
|
2. Execute o deploy seguro: `sudo python3 deploy_pathfinder.py`.
|
|
- **Nota:** Este script faz backup automático e rollback se a configuração estiver errada.
|
|
|
|
---
|
|
|
|
## ⚡ Automação de Deploy (Safe-Rollback)
|
|
O Pathfinder inclui um script robusto para evitar downtime:
|
|
- `scripts/deploy_pathfinder.py`:
|
|
- Faz backup datado de `/etc/nginx` e `/etc/fail2ban`.
|
|
- Sincroniza os novos arquivos da pasta temporária.
|
|
- Valida com `nginx -t`.
|
|
- **Auto-Rollback**: Se houver erro (ex: módulo Brotli faltando), ele restaura os backups originais e reinicia os serviços em milissegundos.
|
|
|
|
---
|
|
|
|
## 🔐 Gestão de SSL (Let's Encrypt)
|
|
|
|
O Pathfinder Proxy usa o desafio **HTTP-01** via snippet `acme_challenge.conf`. Isso permite emitir certificados sem parar o Nginx.
|
|
|
|
### Emissão do Primeiro Certificado
|
|
Rode os comandos abaixo (substitua o domínio):
|
|
|
|
1. **Criar pasta de desafios (se não existir):**
|
|
```bash
|
|
sudo mkdir -p /var/lib/letsencrypt && sudo chown www-data:www-data /var/lib/letsencrypt
|
|
```
|
|
|
|
2. **Gerar o certificado:**
|
|
```bash
|
|
sudo certbot certonly --webroot -w /var/lib/letsencrypt/ -d meusite.com.br -d www.meusite.com.br
|
|
```
|
|
|
|
> [!TIP]
|
|
> **Atenção aos Caminhos:** Se o Certbot gerar uma pasta com final `-0001`, certifique-se de que o arquivo `.conf` do seu site em `/etc/nginx/conf.d/` aponta para o caminho exato gerado por ele. Você pode conferir os caminhos ativos com `sudo certbot certificates`.
|
|
|
|
---
|
|
|
|
## 🚀 Manutenção e Logs
|
|
|
|
### Recompilar WAF e Performance (Se necessário)
|
|
Se o Nginx for atualizado ou se precisar habilitar o Brotli, o módulo precisará ser recompilado usando o script:
|
|
`sudo ./scripts/setup_pathfinder.sh`
|
|
|
|
### Validação
|
|
Sempre teste a configuração antes do reload:
|
|
```bash
|
|
sudo nginx -t
|
|
sudo systemctl reload nginx
|
|
```
|
|
|
|
### Auditoria em Tempo Real
|
|
Para visualizar ataques bloqueados e o PSDE Scoring em formato amigável:
|
|
`tail -f /var/log/nginx/access_json.log | jq` (necessários logs JSON ativos e `jq` instalado).
|
|
|
|
--- |