9.2 KiB
🛡️ 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 (Instalação Minimalista).
- Anti-Brute Force: Proteção integrada contra força bruta em páginas de login via ModSecurity Collections (Phase 1).
- API Support: Métodos PUT, PATCH e DELETE liberados por padrão para suporte a sistemas modernos.
- Tuning: Arquivo
modsec/app_specific_modsec_tuning.confcentraliza exceções granulares (Zabbix, Gitea, UniFi, Veeam).
🧠 Motor de Segurança PSDE "Elite" (7-Vector Matrix)
Diferente de firewalls comuns, o Pathfinder utiliza uma Matriz de Pontuação Combinatória no security_maps.conf que analisa 7 vetores simultâneos:
- 🛡️ Bot: Bloqueio de 600+ user-agents maliciosos.
- 🌐 URI: Acesso a arquivos sensíveis e assinaturas de CVEs recentes.
- ⚙️ Method: Métodos HTTP perigosos (TRACE, DEBUG) em rotas críticas.
- 🔥 Payload: Inspeção profunda de
$args(SQLi, XSS, RCE, Log4j). - 🌍 Geo: Risco por país (CN, RU, KP, IR) via GeoIP2.
- 🚦 Protocol: Violações como User-Agents vazios ou falsificados.
- 🔗 Referer: 400+ domínios de spam e phishing bloqueados instantaneamente.
📈 Lógica de Decisão
- Nivel 3 (ATAQUE_CRITICO): Payloads maliciosos, Referer Spam ou qualquer combinação de 3+ vetores.
- Nivel 2 (RISCO_ALTO): Combinação de 2 vetores de risco (ex: Bot + Geo-Risco).
- Nivel 1 (SUSPEITO): Detecção de sinais individuais.
🛠️ 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 (Pathfinder Automator V2 - Hybrid)
O Pathfinder conta com o orquestrador scripts/deploy_pathfinder.py, que agora funciona em modo Híbrido (Windows Client -> Linux Server). Você roda o script na sua máquina local e ele faz todo o trabalho sujo.
Pré-requisitos
- Python 3 instalado no Windows.
- Biblioteca Paramiko:
pip install paramiko
Comandos Principais
-
python producao/scripts/deploy_pathfinder.py sync --all:- Empacota suas configs locais.
- Conecta no servidor via SSH.
- Atualiza bancos GeoIP automaticamente.
- Sincroniza configurações e recarrega o Nginx.
- Faz Rollback Automático se o
nginx -tfalhar.
-
python producao/scripts/deploy_pathfinder.py site --deploy <domínio>:- Sobe um novo VHost + Certificado SSL + Teste de DNS.
-
python producao/scripts/deploy_pathfinder.py geoip --update:- Força a atualização dos bancos de dados GeoIP2 (Mirror GitHub).
🛡️ Segurança de Operação
- Backup & Rollback Atômico: Cada alteração gera um
.bak. Senginx -tfalhar, o script desfaz a alteração imediatamente. - Auditoria Syslog: Todas as ações são registradas no syslog do servidor.
- Validação Local: O script retorna
Exit Code 1no Windows se falhar no Linux, ideal para CI/CD. - DNS Safeguard: O deploy de SSL só ocorre se o DNS já estiver apontando para o IP do servidor, evitando bloqueios no Let's Encrypt.
🔐 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 e Diagnósticos
O Pathfinder agora reporta a razão exata do bloqueio nos logs JSON:
tail -f /var/log/nginx/access_json.log | jq -r '"[\(.risk_category)] -> \(.risk_reason) | \(.request)"'
risk_category: TAG curta para máquinas (LIMPO, SUSPEITO, RISCO_ALTO, ATAQUE_CRITICO).risk_reason: Motivo humano detalhado (ex: "COMBINACAO: Bot conhecido em local sensivel").