|
|
||
|---|---|---|
| .gemini | ||
| fail2ban/data | ||
| nginx | ||
| scripts | ||
| .gitignore | ||
| README.md | ||
README.md
🛡️ 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.confpelo 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:
include snippets/ssl_params.conf;: Ativa TLS 1.3, HSTS e anuncia HTTP/3 (QUIC).include snippets/proxy_params.conf;: Headers padrão e ofuscação de tecnologia de backend (Server,X-Powered-By).include snippets/security_headers.conf;: Headers de 2026 (COOP, COEP, CORP) para proteção de isolamento do navegador.include snippets/modsecurity.conf;: Ativa o WAF e a Blacklist dinâmica.include snippets/security_actions.conf;: Toma a decisão final de bloquear (444) se o motor PSDE detectar risco alto.include snippets/cache_optimizer.conf;: Otimiza a entrega de estáticos com cache inteligente (SWR).
📚 Catálogo Completo de Snippets
Abaixo, a lista completa de componentes modulares disponíveis em nginx/snippets/:
🔒 Segurança & WAF
modsecurity.conf: Ativa o WAF (OWASP CRS v4) e carrega a blacklist.security_headers.conf: Headers de borda 2026 (COOP, COEP, CORP, Permissions-Policy).security_actions.conf: Executa o bloqueio (Return 444) baseado no score do PSDE.security_maps.conf: Motor de decisão (PSDE), detecção de bots, scorings e variáveis de risco.blacklist.conf: Lista dinâmica de IPs banidos (gerenciado pelo Fail2Ban).ads_disallow.conf: Bloqueia acesso aads.txt.robots_disallow.conf: Bloqueia indexação total (para ambientes de homologação/privados).robots_allow.conf: Permite indexação total.
🚀 Performance & Cache
cache_optimizer.conf: Otimização fina de SWR (Stale-While-Revalidate) e headers de cache.cache_proxy_params.conf: Configurações padrão de lock e validade de cache para upstream.cache_zones.conf: Definição das zonas de memória compartilhada e chaves de cache.compression.conf: Stack de compressão moderna (Brotli + Gzip) com níveis otimizados.fingerprinting.conf: Cache imutável (1 ano) para assets versionados com hash no nome.
🚦 Controle de Tráfego
rate_limit.conf: Zonas de limitação de requisições (Global vs Punição por Score).bandwidth_limit.conf: Limita a velocidade de download após X MB transferidos.proxy_params.conf: Headers de encaminhamento (Real-IP, Forwarded) e ofuscação de backend.ssl_params.conf: Configuração TLS 1.3, HSTS e HTTP/3 (QUIC).acme_challenge.conf: Endpoint para renovação de certificados SSL (Certbot).
📊 Monitoramento & Identidade
log_formats.conf: Define o formato JSONdetailed_proxyrico em metadados de segurança.stub_status.conf: Endpoint de métricas internas do Nginx (para Zabbix/Prometheus).humans.txt.conf: Rota para arquivos de créditos técnicos.security.txt.conf: Rota padrão (RFC 9116) para reporte de segurança.well_known.conf: Agregador que inclui robots, humans e security.txt de uma vez.
🛡️ 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.confcentraliza 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)
- Crie o arquivo
nginx/conf.d/nome-do-site.confseguindo o Padrão Ouro. - Atenção: Aponte os caminhos de certificado para
/etc/letsencrypt/live/nome-do-site/. - Faça o commit e push para a branch
producao.
2. Sincronização no Servidor (SSH)
- Entre no servidor e vá para o diretório de scripts:
cd /etc/nginx/scripts/. - 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/nginxe/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.
- Faz backup datado de
🔐 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):
-
Criar pasta de desafios (se não existir):
sudo mkdir -p /var/lib/letsencrypt && sudo chown www-data:www-data /var/lib/letsencrypt -
Gerar o certificado:
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.confdo seu site em/etc/nginx/conf.d/aponta para o caminho exato gerado por ele. Você pode conferir os caminhos ativos comsudo 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:
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).