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
- Acesse System → Firmware → Plugins.
- Instale o plugin
os-nginx. - Após a instalação, pressione F5 para atualizar a página.
O menu “NGINX” aparecerá abaixo do menu Services.
2. Habilitar o NGINX
- Vá em Services → NGINX → Configuration.
- Marque Enable NGINX.
- 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 |
- Acesse Services → NGINX → Configuration → Upstream → Upstream Server.
- Clique em + Add e cadastre cada servidor conforme a tabela acima.
- 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.
- Vá em Services → NGINX → Configuration → Upstream → Upstream.
- 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 |
- 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.
- Acesse Services → NGINX → Configuration → HTTP(S) → Location.
- Adicione um location para cada aplicação:
| Campo | Zabbix | GLPI |
|---|---|---|
| Description | Zabbix | GLPI |
| URL Pattern | / |
/ |
| Upstream Servers | Zabbix | GLPI |
- 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.
- Vá em Services → NGINX → Configuration → HTTP(S) → HTTP Server.
- 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 |
- Clique em Save após preencher cada frontend.
7. Aplicar as Alterações
- Vá em Services → NGINX → Configuration.
- Clique em Apply para ativar as configurações.
8. Criar as Regras de Firewall
- Vá em Firewall → Aliases.
- Crie o alias
PORTAS_NGINXcontendo as portas 80,443. -
Clique em Save → Apply.
-
Vá em Firewall → Rules → WAN.
- Crie a regra abaixo:
| Campo | Valor |
|---|---|
| Protocol | TCP/UDP |
| Destination | This Firewall |
| Destination Port Range | PORTAS_NGINX |
| Log | Habilitado |
| Description | Libera Proxy Reverso (NGINX) |
- 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.