Ir para o conteúdo

Capítulo 46 – Proxy Reverso (NGINX)

Introdução

O OPNsense permite o uso do NGINX como proxy reverso, um recurso amplamente utilizado para publicar aplicações internas na internet com segurança e controle.
Sua principal função é atuar como terminador SSL (SSL Offloading) — o firewall recebe conexões HTTPS, descriptografa o tráfego e o encaminha a servidores internos (únicos ou em pool para load balancing e failover).

Neste capítulo, você aprenderá a publicar dois sites distintos (Zabbix e GLPI) em dois servidores internos diferentes, utilizando apenas um IP público.


Benefícios de Usar o Proxy Reverso

Virtual Hosting por Nome (SNI)

Permite publicar múltiplos sites com um único IP público, direcionando o tráfego conforme o domínio solicitado (via cabeçalho Host ou SNI).

Camada Adicional de Segurança (WAF)

Com o plugin NGINX, é possível habilitar o WAF baseado em NAXSI, que protege contra: - SQL Injection (SQLi) - Cross-Site Scripting (XSS) - Local File Inclusion (LFI)
Além disso, é possível criar regras personalizadas para cenários específicos.

Simplificação e Performance

  • SSL Offloading reduz o processamento nos servidores backend.
  • Centraliza certificados e políticas de segurança.
  • Facilita auditoria e monitoramento.

Pré-Requisitos

Antes de iniciar a configuração, verifique:

Requisito Descrição
Certificado SSL válido Pode ser gerado pelo OPNsense via ACME / Let’s Encrypt (ver Capítulo 42 – Certificados SSL ACME).
Portas 80 e 443 liberadas Verifique a liberação no provedor e no firewall para acesso externo.
DNS configurado corretamente Os domínios devem apontar para o IP público do firewall.
Portas da WebGUI alteradas A interface administrativa do OPNsense não pode usar 443, para evitar conflito.
Servidores backend acessíveis Verifique conectividade interna (ping / porta 80 ou 443).

Certificados Autoassinados

É possível usar certificados autoassinados para testes, mas os navegadores exibirão alertas de segurança.
Para produção, utilize certificados emitidos por uma AC confiável (como Let’s Encrypt).


Etapas de Configuração

1. Instalar o Plugin NGINX

  1. Acesse System → Firmware → Plugins.
  2. Instale o plugin os-nginx.
  3. Após a instalação, pressione F5 para atualizar a página.
    O menu “NGINX” aparecerá abaixo do menu Services.

2. Habilitar o NGINX

  1. Vá em Services → NGINX → Configuration.
  2. Marque Enable NGINX.
  3. Clique em Apply.

3. Criar os Servidores Backend (Upstream Servers)

Registre os servidores internos que hospedarão os sistemas.
Exemplo: Zabbix e GLPI.

Campo Zabbix GLPI
Description Zabbix GLPI
Server 192.168.1.12 192.168.1.11
Port 80 80
Server Priority 1 1
  1. Acesse Services → NGINX → Configuration → Upstream → Upstream Server.
  2. Clique em + Add e cadastre cada servidor conforme a tabela acima.
  3. Clique em Save após cada cadastro.

4. Criar os Upstreams

Mesmo que haja apenas um backend por aplicação, é necessário definir os Upstreams, que representam o agrupamento lógico dos servidores.

  1. Vá em Services → NGINX → Configuration → Upstream → Upstream.
  2. Clique em + Add e cadastre conforme exemplo:
Campo Zabbix GLPI
Description Zabbix GLPI
Server Entries selecione “Zabbix” selecione “GLPI”
TLS no Backend Marque Enable TLS (HTTPS) se o backend estiver usando Idem
  1. Clique em Save ao final de cada upstream.

5. Criar os Locations

Os Locations identificam a URL para então selecionar o destino do tráfego.

  1. Acesse Services → NGINX → Configuration → HTTP(S) → Location.
  2. Adicione um location para cada aplicação:
Campo Zabbix GLPI
Description Zabbix GLPI
URL Pattern / /
Upstream Servers Zabbix GLPI
  1. Clique em Save após cada registro.

6. Criar os Frontends (HTTP Servers)

Os Frontends representam os domínios públicos que serão publicados.

  1. Vá em Services → NGINX → Configuration → HTTP(S) → HTTP Server.
  2. Adicione um servidor para cada site:
Campo Zabbix GLPI
HTTP Listen Address 80 80
HTTPS Listen Address 443 443
Locations Zabbix GLPI
TLS Certificate Certificado válido (ACME/emitido) Certificado válido
HTTPS Only marcar marcar
  1. Clique em Save após preencher cada frontend.

7. Aplicar as Alterações

  1. Vá em Services → NGINX → Configuration.
  2. Clique em Apply para ativar as configurações.

8. Criar as Regras de Firewall

  1. Vá em Firewall → Aliases.
  2. Crie o alias PORTAS_NGINX contendo as portas 80,443.
  3. Clique em Save → Apply.

  4. Vá em Firewall → Rules → WAN.

  5. Crie a regra abaixo:
Campo Valor
Protocol TCP/UDP
Destination This Firewall
Destination Port Range PORTAS_NGINX
Log Habilitado
Description Libera Proxy Reverso (NGINX)
  1. Save → Apply Changes.

9. Testar Publicação

Acesse externamente (fora da rede local) via DNS configurado:

Caso o acesso não funcione, revise as etapas de DNS, firewall e certificados.


Resolução de Problemas

Verificação Solução
WebGUI conflitando com NGINX Altere a porta da WebGUI (ex.: 8443) em System → Settings → Administration.
Redirecionamento indevido da WebGUI Desative redirecionamentos automáticos para 80/443.
Serviço NGINX não inicia Verifique logs em Services → NGINX → Logs (Access/Error).
Falha de DNS Confirme que o domínio aponta para o IP público do firewall.
Regras de firewall em conflito Mantenha as regras WAN 80/443 acima de bloqueios genéricos.

Observações Importantes

Conflito de Portas com a WebGUI

Por padrão, a WebGUI do OPNsense utiliza a porta 443.
Altere-a antes de ativar o NGINX, evitando que ambos os serviços disputem a mesma porta.

Certificados e Logs

  • Prefira certificados ACME/Let’s Encrypt sempre que possível.
  • Consulte os logs do NGINX para depurar erros de publicação, SSL e redirecionamento.

Dependência de DNS

Os domínios publicados devem resolver para o IP público configurado no firewall.
Sem DNS correto, o virtual hosting (SNI) não funcionará adequadamente.


Boas Práticas

  • Segregue os backends em uma DMZ, reduzindo riscos de comprometimento interno.
  • Ative e ajuste o WAF (NAXSI) conforme o tipo de sistema publicado.
  • Automatize certificados com o ACME para evitar falhas por expiração.
  • Monitore o serviço NGINX com Monit ou zabbix.
  • Publique apenas o necessário, restringindo acessos administrativos por IP.
  • Padronize nomes e descrições de upstreams, locations e frontends para facilitar manutenção.

Casos de Uso

1. Múltiplos Sistemas com Único IP Público

Publicar Zabbix e GLPI em domínios distintos, ambos respondendo no mesmo IP público.

2. Centralização de Políticas

Aplicar inspeção, bloqueio de ataques e filtragem antes que o tráfego alcance os servidores internos.

3. Balanceamento de Carga

Distribuir conexões entre múltiplos servidores backends, otimizando desempenho e resiliência.

4. Failover Automático

Configurar redundância entre servidores para alta disponibilidade.

5. SSL Offloading para Sistemas Legados

Descarregar a criptografia no OPNsense quando os servidores backend não suportarem HTTPS ou apresentarem limitação de desempenho.


Conclusão

O NGINX no OPNsense é uma solução poderosa para publicação segura de aplicações internas com alta disponibilidade, centralização de certificados e proteção em camada de aplicação.
Sua combinação de proxy reverso, WAF e SSL offloading torna o ambiente mais seguro e escalável, atendendo desde pequenas implantações até infraestruturas corporativas complexas.