UniFi Security Gateway (USG): Como Funcionam as Regras de Firewall no UniFi Controller?

O UniFi Security Gateway (USG) é uma alternativa às caras soluções de firewall que existem no mercado decorrente do alto custo de licenciamento de software. O USG é gerenciado de maneira centralizada através da interface do UniFi Controller, um software gratuito, assim como ocorre com todos os demais dispositivos UniFi na infraestrutura de rede.

A proposta da solução UniFi é que a configuração dos equipamentos seja extremamente fácil e intuitiva através de poucos cliques na interface gráfica do software de gerência. Por isso a simples ligação dos cabos nas portas LAN (switch) e WAN (Internet) é suficiente para provisionar automaticamente o equipamento com as configurações básicas de roteamento e tradução via NAT para fins de compartilhamento da Internet com as máquinas da rede interna.

Observação: Neste artigo é explicado em detalhes o paradigma denominado Software-Defined Networking (SDN). Para obter mais informação sobre a instalação do UniFi Controller na nuvem que permite gerenciar remotamente múltiplos sites, recomendamos a leitura deste artigo.

Configuração de Firewall no USG

O USG é um roteador/firewall Plug& Play com o intuito de simplificar sua configuração, por isso já possui regras de firewall pré-configuradas para proteger a rede. Por padrão o equipamento vem configurado com uma política que nega todo e qualquer acesso entrante na(s) interface(s) WAN, ou seja, impede todo tráfego originado na Internet, seja para fins de acesso remoto ao próprio USG ou mesmo para passagem de tráfego destinado à rede local (LAN). A única exceção a essa regra é o retorno de tráfego daquelas sessões de comunicação previamente estabelecidas (iniciadas) pelos usuários na(s) rede(s) local(is) conectada(s) na(s) porta(s) LAN.

Observação: Outra característica interessante do USG em relação ao firewall é que automaticamente serão criadas regras de permissão associadas com a configuração de qualquer redirecionamento de portas (port-forwarding), o que facilita ainda mais a configuração de permissão de acesso externo àqueles recursos existentes na rede privada.

Caso o administrador queira adicionar regras personalizadas de permissão ou negação de diferentes perfis de tráfego, é fácil fazê-lo através da criação de novas regras vinculadas a um fluxo na seguinte opção do UniFi:

> Settings
> Routing Firewall
> Firewall
> Selecionar o Fluxo/Grupo
> + Create New Rule

Assim como ocorre em qualquer solução de firewall, normalmente a maior dificuldade está na compreensão prévia do perfil de tráfego que deve ser enquadrado no contexto de qual fluxo, por isso é fundamental entender o que representa cada um dos fluxos do firewall USG, conforme será explicado detalhadamente nas próximas seções.


Tráfego WAN

  • O fluxo WAN-IN representa todo tráfego entrante na WAN e sainte na LAN, aquilo que seria equivalente ao fluxo FORWARD no tradicional firewall iptables do Linux, ou seja, toda comunicação externa vinda da WAN e destinada internamente à LAN;
  • O fluxo WAN-LOCAL representa todo tráfego entrante na WAN que é destinado para o próprio USG, por exemplo uma tentativa de acesso externo ao firewall via SSH, aquilo que seria equivalente ao fluxo INPUT no iptables do Linux;
  • Não existe nenhuma regra de firewall no fluxo WAN-OUT que se refere ao tráfego do USG sainte para a WAN, ou seja, toda saída de tráfego originado pelo próprio USG, aquilo que seria equivalente ao fluxo OUTPUT no firewall iptables.
Observação: Particularmente em relação à saída de tráfego para a WAN, não existe nenhuma restrição de qualquer tráfego de saída, seja de tráfego originado pelo próprio USG para a WAN ou mesmo outro perfil de tráfego que seja originado por qualquer máquina da LAN (LAN-OUT). Essa política padrão está baseada na confiança daquilo que é interno, mas é claro que esse comportamento pode ser totalmente personalizado com a escrita de novas regras…

Tráfego LAN

  • O fluxo LAN-IN representa todo tráfego entrante em uma interface LAN e sainte em outra interface, aquilo que seria equivalente ao fluxo FORWARD no tradicional firewall iptables do Linux, ou seja, toda comunicação interna entre duas sub-redes locais ou mesmo originada por uma sub-rede local e destinada à Internet;
  • O fluxo LAN-LOCAL representa todo tráfego entrante em uma interface LAN que é destinado à própria interface do USG que é gateway dessa sub-rede, por exemplo uma tentativa de acesso interno ao firewall via SSH, aquilo que seria equivalente ao fluxo INPUT no iptables do Linux;
  • Não existe nenhuma regra de firewall no fluxo LAN-OUT que se refere ao tráfego do USG sainte para a LAN, ou seja, aquilo que seria equivalente ao fluxo OUTPUT no firewall iptables.

Tráfego Guest

  • O fluxo GUEST-IN representa todo tráfego entrante um uma interface LAN-GUEST (visitantes) e sainte em outra interface LAN, aquilo que seria equivalente ao fluxo FORWARD no tradicional firewall iptables do Linux, ou seja, toda comunicação interna entre uma sub-rede de visitantes com qualquer outra sub-rede local. Por padrão será negado todo tráfego entre sub-redes guest com sub-redes corporativas, exceto a comunicação com a controladora para o Guest Portal;
  • O fluxo GUEST-LOCAL representa todo tráfego entrante em uma interface LAN-GUEST (visitantes) que é destinado à própria interface do USG que é gateway dessa sub-rede de visitantes, por exemplo uma tentativa de acesso interno ao firewall via SSH que é bloqueada nesse caso, aquilo que seria equivalente ao fluxo INPUT no iptables. Por padrão será permitida apenas a entrada de tráfego DNS e comunicação com o gateway para viabilizar a navegação dos visitantes;
  • Não existe nenhuma regra de firewall no fluxo GUEST-OUT que se refere ao tráfego do USG sainte para a LAN-GUEST (visitantes), ou seja, aquilo que seria equivalente ao fluxo OUTPUT do firewall iptables.

Exemplos de Configuração

Uma vez compreendidos os diferentes fluxos do UniFi em que as regras de firewall podem ser aplicadas, fica mais fácil trazer um exemplo prático de configuração. Agora sabemos que por padrão o USG permite todo tráfego originado na rede local para qualquer destino externo, então vamos utilizar como referência a topologia abaixo para alterar o firewall do USG.

Exemplo 1: Firewall "Caixa Preta"

Já foi dito que por padrão o USG vai permitir toda conexão que seja iniciada pela LAN, qualquer que seja o destino, uma modalidade de firewall denominada "caixa branca" em que tudo é permitido, exceto aquilo que foi explicitamente negado. Outra modalidade considerada muito mais segura, embora bem mais complexa, é denominada "caixa preta" em que tudo é negado, exceto aquilo que foi explicitamente permitido.

Para esse fim deve ser utilizado o fluxo LAN-IN para enquadrar aquele tráfego originado na(s) sub-rede(s) local(is) e destinado à Internet. Com base no exemplo da topologia, vamos fazer um firewall de caixa preta na LAN1 (192.168.1.0/24) para exemplificar como seria bloquear previamente todo acesso externo, de maneira que cada um dos serviços permitidos tenham que ser anteriormente liberados. Ao clicar no fluxo LAN-IN deve ser criada uma regra de negação acima das regras padrões pré-definidas para negar todo tráfego originado pela LAN1, afinal a política padrão do USG é aceitar o tráfego originado por qualquer LAN. Essa primeira regra de negação deve ser configurada da seguinte maneira:

Name: NEGA TUDO DA ORIGEM LAN1
Enabled:
ON
Rule Applied:
Before Pre-Defined Rules
Action:
Drop
Protocol:
All
Logging:
<escolher a opção desejada>
States:
Não Selecionar Nenhum (Todos)
Don't Match on IP Packets
Source Type:
Network
Network:
LAN1 (192.168.1.0/24)
Destination Type:
Network
Network:
Any

Fazendo isso, toda comunicação originada pela LAN1 será negada, ou seja, somente haverá comunicação dos dispositivos internamente. Vamos imaginar que queremos liberar manualmente o acesso básico ao ping e à Internet, ou seja, estamos falando dos seguintes protocolos/serviços:

  • Ping (ICMP)
  • DNS (porta 53/UDP)
  • HTTP (porta 80/TCP)
  • HTTPS (porta 443/TCP)

Será necessário criar um grupo de portas ou várias regras individuais para cada grupo de portas/protocolo anteriormente à regra de negação para permitir apenas esse perfil de tráfego.

Observação: É importante ter em mente que a precedência das regras faz toda diferença na configuração de um firewall, afinal a lógica do equipamento é percorrer a lista de regras sequencial até que seja encontrado o primeiro enquadramento correspondente ao perfil de tráfego, ou seja, de nada adianta escrever uma regra de permissão após uma regra que nega tudo (any).

As regras abaixo exemplificam como seria o processo de liberação do protocolo ICMP para conseguir realizar ping a qualquer host externo na Internet, além da liberação dos serviços DNS, HTTP e HTTPS para navegação. Cabe ao administrador saber previamente quais são as portas e protocolos utilizados por cada um dos serviços/aplicações que deseja liberar/bloquear.

Name: ACEITA PING NA LAN1
Enabled:
ON
Rule Applied:
Before Pre-Defined Rules
Action:
Accept
Protocol:
ICMP
Logging:
<escolher a opção desejada>
States:
Não Selecionar Nenhum (Todos)
Don't Match on IP Packets
Source Type:
Network
Network:
LAN1 (192.168.1.0/24)
Destination Type:
Network
Network:
Any

Name: ACEITA DNS NA LAN1
Enabled:
ON
Rule Applied:
Before Pre-Defined Rules
Action:
Accept
Protocol:
UDP
Logging:
<escolher a opção desejada>
States:
Não Selecionar Nenhum (Todos)
Don't Match on IP Packets
Source Type:
Network
Network:
LAN1 (192.168.1.0/24)
Destination Type:
Address/Port Group
Address:
Any
Port Group: 53

Name: ACEITA HTTP NA LAN1
Enabled:
ON
Rule Applied:
Before Pre-Defined Rules
Action:
Accept
Protocol:
TCP
Logging:
<escolher a opção desejada>
States:
Não Selecionar Nenhum (Todos)
Don't Match on IP Packets
Source Type:
Network
Network:
LAN1 (192.168.1.0/24)
Destination Type:
Address/Port Group
Address:
Any
Port Group: 80

Name: ACEITA HTTPS NA LAN1
Enabled:
ON
Rule Applied:
Before Pre-Defined Rules
Action:
Accept
Protocol:
TCP
Logging:
<escolher a opção desejada>
States:
Não Selecionar Nenhum (Todos)
Don't Match on IP Packets
Source Type:
Network
Network:
LAN1 (192.168.1.0/24)
Destination Type:
Address/Port Group
Address:
Any
Port Group: 443

A partir desses exemplos fica mais fácil entender a dinâmica para liberação de qualquer outro serviço ou aplicação em execução na rede, afinal muda apenas a informação do endereço e/ou porta de destino. Ao final da criação das novas regras, a tela LAN-IN no menu firewall do UniFi fica assim:

Lembrem-se que apesar do firewall da caixa preta ser muito mais seguro porque requer a escrita das regras de permissão, será muito mais difícil de configurar na prática porque todas as aplicações devem ser levantadas previamente. Por exemplo, se a empresa utiliza um software para enviar remessa ao banco, será necessário saber qual é a porta utilizada pela aplicação servidora, caso contrário a aplicação não funcionará.

Exemplo 2: Negar Acesso dos Coletores

Nesse segundo exemplo vamos do partir do princípio que o primeiro exemplo não foi aplicado em nossa rede, ou seja, estão valendo as regras padrões do USG. Dessa vez queremos que a LAN2-COLETORES não possa acessar a Internet nem a LAN1, mas que a LAN1 possa gerenciar os coletores.

Para esse fim deve ser utilizado o fluxo LAN-IN para enquadrar aquele tráfego originado na sub-rede LAN2-COLETORES (192.168.3.0/24) e destinado a qualquer local (any). Ao clicar no fluxo LAN-IN, primeiro deve ser criada uma regra de negação acima das regras padrões pré-definidas para negar todo acesso originado pela LAN2-COLETORES, afinal a política padrão do USG é aceitar todo tráfego originado por qualquer LAN. Essa primeira regra de negação deve ser configurada da seguinte maneira:

Name: NEGA TUDO DA LAN2-COLETORES
Enabled:
ON
Rule Applied:
Before Pre-Defined Rules
Action:
Drop
Protocol:
All
Logging:
<escolher a opção desejada>
States:
Não Selecionar Nenhum (Todos)
Don't Match on IP Packets
Source Type:
Network
Network:
COLETORES (192.168.3.0/24)
Destination Type:
Network
Network:
Any

Fazendo isso toda comunicação originada pela LAN2-COLETORES e destinada à LAN1 ou à Internet será negada. Nesse exemplo queremos que a sub-rede LAN1 (192.168.1.0/24) tenha acesso aos coletores para gerência. Para tanto será necessário criar uma nova regra anterior à regra de negação para permitir apenas esse perfil de tráfego, ou seja, para permitir a passagem daquele tráfego de resposta (established,related) que tenha sido iniciado pela LAN1. Ao fazer isso as máquinas da LAN1 terão acesso aos coletores e eles poderão responder, no entanto os coletores não poderão iniciar uma comunicação com a LAN1 (192.168.1.0/24).

Name: ACEITA RESPOSTA DA LAN2-COLETORES
Enabled:
ON
Rule Applied:
Before Pre-Defined Rules
Action:
Accept
Protocol:
All
Logging:
<escolher a opção desejada>
States:
Established, Related
Don't Match on IP Packets
Source Type:
Network
Network:
LAN2-COLETORES (192.168.3.0/24)
Destination Type:
Network
Network:
LAN1 (192.168.1.0/24)

Com essas duas regras a sub-rede de COLETORES já pode responder requisições originadas pela LAN1, embora ainda não tenha acesso para iniciar comunicação com as máquinas da LAN1. Para obter mais exemplos de configuração do firewall USG, recomendamos a leitura da documentação de suporte disponível na Central de Ajuda da UBNT.



Grupo UniFi no Facebook 
www.facebook.com/groups/ubnt.unifi.br
Fórum Oficial da Ubiquiti 
forum-pt.ubnt.com
Grupo UniFi no LinkedIN 
www.linkedin.com/groups/12135007
Grupo UniFi no Telegram 
t.me/ubiquitibr

Samuel Henrique Bucke Brito
samuel.brito@ubnt.com
Ubiquiti Networks