NgixProxy_Pathfinder/README.md

5.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).
  • 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;
}

🛠️ 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 /etc/nginx.
  2. Execute sudo git pull origin producao.
  3. Valide a sintaxe: sudo nginx -t.
  4. Recarregue o Nginx: sudo systemctl reload nginx.

🔐 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 o comando abaixo substituindo o domínio:

sudo certbot certonly --webroot -w /var/lib/letsencrypt/ -d meusite.com.br -d www.meusite.com.br

O Certbot criará o arquivo de validade na pasta /var/lib/letsencrypt/ e o Nginx enviará para o Let's Encrypt através do snippet de ACME.

Automação de Renovação (Configuração Única)

Para que o Nginx atualize os certificados automaticamente, o sistema foi configurado com um Post-Hook. Toda vez que o Certbot renovar um certificado, o Nginx fará um reload.

Verificar se o hook está ativo: cat /etc/letsencrypt/cli.ini (Deve conter post-hook = systemctl reload nginx)


🚀 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)