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.confpelo Fail2Ban).
🧩 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 para o backend não perder o IP real do cliente.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.
🧠 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)
- 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
/etc/nginx. - Execute
sudo git pull origin producao. - Valide a sintaxe:
sudo nginx -t. - 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)