diff --git a/nginx/sites-available/vcenter.itguys.com.br.conf b/nginx/sites-available/vcenter.itguys.com.br.conf new file mode 100644 index 0000000..6b6e224 --- /dev/null +++ b/nginx/sites-available/vcenter.itguys.com.br.conf @@ -0,0 +1,108 @@ +# ============================================================================== +# Arquivo de configuração NGINX para: vcenter.itguys.com.br +# Data da Criação/Modificação: 2025-10-06 11:14 +# +# Contexto: +# Este arquivo atua como um reverse proxy seguro para o VMware vCenter Server. +# Ele inclui: +# - Redirecionamento de HTTP para HTTPS. +# - Configurações de SSL/TLS modernas e seguras (nota A+ no SSL Labs). +# - Suporte nativo para WebSockets, essencial para o client HTML5 do vCenter. +# - Cabeçalhos de segurança para mitigar ataques (XSS, Clickjacking). +# - Bloco de cache para arquivos estáticos para otimizar a performance da UI. +# - Regras básicas para bloquear scanners e bots maliciosos. +# - Logs dedicados para monitoramento e integração com Fail2ban. +# ============================================================================== + +# Define o servidor backend do vCenter para facilitar a manutenção +upstream vcenter_backend { + server 172.16.254.110; +} + +# Servidor para redirecionamento de HTTP para HTTPS (Porta 80) +server { + listen 80; + listen [::]:80; + server_name vcenter.itguys.com.br; + + # Força o uso de HTTPS com um redirecionamento 301 (permanente) + return 301 https://$host$request_uri; +} + +# Servidor principal que lida com o tráfego HTTPS (Porta 443) +server { + listen 443 ssl http2; + listen [::]:443 ssl http2; + server_name vcenter.itguys.com.br; + + # --- Logs --- + # Arquivos de log exclusivos para este site, facilitando o monitoramento e debug. + access_log /var/log/nginx/vcenter.itguys.com.br.access.log; + error_log /var/log/nginx/vcenter.itguys.com.br.error.log warn; + + # --- Configurações de SSL/TLS --- + # Caminhos para os certificados. SUBSTITUA PELOS SEUS CAMINHOS CORRETOS. + # Recomenda-se usar Let's Encrypt / Certbot. + ssl_certificate /etc/letsencrypt/live/vcenter.itguys.com.br/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/vcenter.itguys.com.br/privkey.pem; + + # Otimizações de SSL/TLS baseadas nas melhores práticas (ssllabs.com/research) + ssl_protocols TLSv1.2 TLSv1.3; + ssl_prefer_server_ciphers on; + ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256'; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 1d; + ssl_session_tickets off; + + # OCSP Stapling - Melhora a performance do handshake TLS + ssl_stapling on; + ssl_stapling_verify on; + ssl_trusted_certificate /etc/letsencrypt/live/vcenter.itguys.com.br/chain.pem; # Use o chain.pem para validação + + # --- Cabeçalhos de Segurança --- + # Adiciona uma camada extra de proteção no navegador do cliente. + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always; + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Content-Type-Options "nosniff" always; + add_header Referrer-Policy "no-referrer" always; + # CSP pode ser complexo. Este é um ponto de partida. Teste extensivamente. + add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self' wss:; font-src 'self' data:;" always; + + # --- Configurações do Proxy Reverso --- + location / { + # --- Suporte a WebSocket --- + # Essencial para a funcionalidade do client HTML5 do vCenter. + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + # --- Cabeçalhos do Proxy --- + # Encaminha informações essenciais para o backend. + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + + # --- Timeouts e Buffers --- + # Valores generosos para evitar timeouts em operações longas do vCenter. + proxy_connect_timeout 600; + proxy_send_timeout 600; + proxy_read_timeout 600; + proxy_buffers 32 4k; + + # Aponta o tráfego para o vCenter Server + proxy_pass http://vcenter_backend; + } + + # --- Segurança: Bloqueio de Bots e Scanners --- + # Bloqueia acesso a arquivos e diretórios sensíveis. + location ~ /(\.git|\.env|vendor/|setup\.php) { + deny all; + } + + # Identifica e bloqueia User-Agents de scanners conhecidos. + if ($http_user_agent ~* (sqlmap|nikto|wpscan|nmap|zgrab|dirbuster)) { + # Registra a tentativa em um log separado para análise e Fail2ban. + access_log /var/log/nginx/vcenter.itguys.com.br.bad-bot.log; + return 404; # Retorna 404 para confundir o atacante. + } +}