NgixProxy_Pathfinder/README.md

3.7 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).
  • modsec/: Configuração do ModSecurity e regras do OWASP Core Rule Set.
  • dynamic/: Arquivos modificados em tempo real (ex: blacklist.conf pelo Fail2Ban).

🧩 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 para o backend não perder o IP real do cliente.
  3. include snippets/modsecurity.conf;: Ativa o WAF e a Blacklist dinâmica.
  4. include snippets/security_actions.conf;: Toma a decisão final de bloquear (444) se o motor PSDE detectar risco alto.
  5. include snippets/cache_optimizer.conf;: Otimiza a entrega de estáticos com cache inteligente.

🧠 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.

🏆 Padrões Ouro de Configuração

1. Servidor de Arquivos (Performance & Caching)

Focado em minimizar uso de CPU e maximizar I/O.

location /files/ {
    sendfile on;
    tcp_nopush on;
    aio on;
    directio 512;
    include snippets/cache_optimizer.conf;
    proxy_cache_valid 200 30d; # Cache longo
    add_header Content-Disposition "attachment"; # Força download
}

2. Streaming de Vídeo (Continuidade & Buffer)

Evita travamentos e economiza banda com suporte a Range Requests.

location /stream/ {
    proxy_pass http://backend;
    proxy_set_header Range $http_range;
    proxy_set_header If-Range $http_if_range;
    proxy_cache_key "$host$request_uri$http_range";
    
    # Tuning de Buffer para vídeo
    proxy_buffers 32 16k;
    proxy_buffer_size 64k;
    proxy_read_timeout 300s;
}

3. API Pesada / Traccar (Real-time & WebSocket)

Focado em manter conexões persistentes e rate limiting agressivo.

location /api/ {
    proxy_pass http://backend;
    
    # Suporte a WebSocket (Vital para Traccar/Mobile)
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    
    # Rate Limit Estreito para APIs
    limit_req zone=global_limit burst=20 nodelay;
    
    # Timeouts curtos para liberar recursos
    proxy_connect_timeout 5s;
    proxy_send_timeout 30s;
    proxy_read_timeout 30s;
}

🚀 Como Operar

Sincronização

As alterações feitas aqui devem ser enviadas para a branch producao. No servidor, a sincronização é feita via git pull na pasta /etc/nginx.

Validação

Sempre teste a configuração antes do reload:

sudo nginx -t
sudo systemctl reload nginx

Logs

Para auditoria de segurança, use o log JSON: tail -f /var/log/nginx/access_json.log | jq (necessário instalar o jq)