Repositorio onde Ficará todos os arquivos de configuraçao do nosso proxy com atualização automatica aqui assim que for mudado qualquer coisa nele.
Go to file
João Pedro 6b2f1a1af1 chore: Migrate legacy configs and add TODO list 2026-01-22 13:38:17 -03:00
.gemini chore: Migrate legacy configs and add TODO list 2026-01-22 13:38:17 -03:00
conf.d feat(infra): Full migration to containerized NGINX with WAF and Auto-SSL 2026-01-22 13:14:18 -03:00
fail2ban feat(infra): Full migration to containerized NGINX with WAF and Auto-SSL 2026-01-22 13:14:18 -03:00
legacy feat(infra): Full migration to containerized NGINX with WAF and Auto-SSL 2026-01-22 13:14:18 -03:00
modsec_rules chore: Migrate legacy configs and add TODO list 2026-01-22 13:38:17 -03:00
scripts feat(infra): Full migration to containerized NGINX with WAF and Auto-SSL 2026-01-22 13:14:18 -03:00
snippets feat(infra): Full migration to containerized NGINX with WAF and Auto-SSL 2026-01-22 13:14:18 -03:00
ssl [Auto-Sync] Atualização das configurações em srvproxy001.itguys.com.br - 2025-09-17 10:25:40 2025-09-17 10:25:40 -03:00
.dockerignore feat(infra): Full migration to containerized NGINX with WAF and Auto-SSL 2026-01-22 13:14:18 -03:00
.gitignore feat(infra): Full migration to containerized NGINX with WAF and Auto-SSL 2026-01-22 13:14:18 -03:00
Dockerfile feat(infra): Full migration to containerized NGINX with WAF and Auto-SSL 2026-01-22 13:14:18 -03:00
README.md docs: Update README.md (pt-BR) and Tech Specs 2026-01-22 13:22:58 -03:00
deploy.sh feat(infra): Full migration to containerized NGINX with WAF and Auto-SSL 2026-01-22 13:14:18 -03:00
docker-compose.yml chore: Migrate legacy configs and add TODO list 2026-01-22 13:38:17 -03:00
log_debug.txt feat(infra): Full migration to containerized NGINX with WAF and Auto-SSL 2026-01-22 13:14:18 -03:00
modsec_includes.conf chore: Migrate legacy configs and add TODO list 2026-01-22 13:38:17 -03:00
nginx.conf feat(infra): Full migration to containerized NGINX with WAF and Auto-SSL 2026-01-22 13:14:18 -03:00

README.md

NGINX Pathfinder Proxy

Solução moderna de Proxy Reverso containerizado, construída com NGINX, ModSecurity WAF e automação de SSL.

🚀 Funcionalidades

🛡️ Segurança em Primeiro Lugar

  • ModSecurity WAF: Conjunto de Regras OWASP (CRS) integrado rodando como proxy sidecar/frontend.
  • Fail2ban: Serviço "cão de guarda" que bane IPs com comportamento suspeito (bots ruins, excesso de erros 4xx/5xx).
  • Mapas de Segurança: Bloqueio automatizado de User-Agents maliciosos e restrições de rede interna.

Performance

  • HTTP/3 (QUIC): Habilitado para conexões modernas de baixa latência.
  • Compressão Brotli: Melhores taxas de compressão que o Gzip padrão.
  • Headers More: Manipulação avançada de cabeçalhos para respostas limpas.

🔒 SSL Automatizado

  • Renovação Zero-Touch: O Certbot integrado verifica a validade diariamente.
  • Auto-Renovação: Renova automaticamente certificados próximos do vencimento (<= 3 dias).
  • Injeção Inteligente: Injeta automaticamente os snippets de desafio ACME nas configurações dos sites.

🛠️ Como Trabalhar neste Repositório

Pré-requisitos

  • Docker & Docker Compose instalados
  • Acesso à internet (para baixar imagens e validar SSL)

1. Implantar o Servidor (Deploy)

Para iniciar toda a infraestrutura:

./deploy.sh

Este script detecta seu IP público, configura o ambiente e sobe os containers.

2. Adicionar um Novo Site

Todas as configurações de sites ficam na pasta conf.d/.

  1. Crie o arquivo de configuração: Crie um arquivo .conf em conf.d/ (ex: meusite.com.br.conf). Use um dos arquivos existentes como modelo.

    Modelo Básico (com SSL):

    # Backend (para onde vai o tráfego)
    upstream meu_backend {
        server 192.168.1.10:8080;
    }
    
    # Redirecionamento HTTP -> HTTPS
    server {
        listen 80;
        server_name meusite.com.br;
        include /etc/nginx/snippets/acme_challenge.conf; # Importante para SSL
        return 301 https://$host$request_uri;
    }
    
    # Bloco HTTPS
    server {
        listen 443 ssl;
        http2 on;
        server_name meusite.com.br;
    
        ssl_certificate /etc/nginx/ssl/meusite.com.br.crt;
        ssl_certificate_key /etc/nginx/ssl/meusite.com.br.key;
    
        include /etc/nginx/snippets/ssl_params.conf;
    
        location / {
            proxy_pass http://meu_backend;
            include /etc/nginx/includes/proxy_backend.conf;
        }
    }
    
  2. Aplique as alterações:

    docker compose restart nginx-proxy
    

    No reinício, o script de pre-flight validará o DNS e injetará configurações de SSL necessárias.

3. Modificar Configurações Globais

As configurações globais são modularizadas na pasta snippets/.

  • Rate Limiting: Edite snippets/rate_limit.conf para ajustar os limites de requisições por segundo.
  • Bloqueio de Bots: Edite snippets/security_maps.conf para adicionar novos User-Agents à lista negra.
  • Cache: Edite snippets/cache_zones.conf para definir novas zonas ou tempos de cache.

4. Gerenciar Certificados SSL

O sistema gerencia isso automaticamente, mas você pode intervir manualmente se necessário.

  • Verificar Validade: Verifique os logs do startup para ver o status de todos os domínios:

    docker compose logs nginx-proxy | grep "SSL"
    
  • Forçar Renovação: Se precisar renovar um certificado imediatamente:

    docker compose exec nginx-proxy /scripts/renew_ssl.sh
    

5. Monitorar e Debugar

  • Verificar Status dos Containers:

    docker compose ps
    
  • Ver Logs em Tempo Real:

    docker compose logs -f
    
  • Verificar se o WAF (ModSecurity) bloqueou algo:

    docker compose logs modsecurity | grep "Access denied"
    
  • Verificar Banimentos do Fail2ban:

    docker compose exec fail2ban fail2ban-client status nginx-badbots
    

🏗️ Visão Geral da Stack

graph LR
    Internet((Internet)) --> WAF[Container ModSecurity]
    WAF -- Tráfego Limpo --> Proxy[Container NGINX Proxy]
    Proxy --> Backend1[App 1]
    Proxy --> Backend2[App 2]
    
    Logs[Logs Compartilhados]
    WAF -.-> Logs
    Proxy -.-> Logs
    
    F2B[Container Fail2ban]
    F2B -- Lê --> Logs
    F2B -- Bane IP --> WAF

Mantido por IT Guys