NAT

Infraestrutura de rede (Vnet) com Azure Firewall na Borda.

Neste artigo venho apresentar uma topologia utilizando Cloud Azure, com 7 Vnets ligadas por peering, gateway de VPN com BGP e Azure Firewall.

Nesta topologia todas as subnets estão com route table 0.0.0.0/0 para o IP da interface do nosso Azure Firewall

0.0.0.0/0 –> 10.128.0.68

Desta maneira temos total segregação da rede (Azure Vnet), onde cada projeto/departamento tem sua propria vnet.
Desta forma a vnet por exemplo do RH não fala com a Vnet de Marketing (Somente se for criada regras de Firewall) e o porque de utilizar desta forma.

Na minha visão tem que ser “cada um no seu quadrado”, não porque estamos em cloud que esse pensamento deve mudar, desta maneira tornamos nosso ambiente mais seguro, protegemos nossas cargas de trabalhos, deixamos cada ambiente totalmente isolado, segredado e seguro.

Na borda nos temos Azure Firewall com default route, onde ele controla tudo que entra e sai da nossa rede.

Topologia Azure Firewall

Exemplos de regras na pratica

Temos nesta topologia dois servidores de DNS (Windows Server 2019):

AZUEASTDNS01 e AZUEASTDNS02 (dentro do dominio glbx.corp)

AZUEASTDNS01.glbx.corp (10.128.8.4)
AZUEASTDNS02.glbx.corp (10.128.9.4)

Esses servidores são os DNS Server padrão de todas as nossas vnets

Veja como ficaria a regra de Azure Firewall para que toda “Resolução de Nomes” seja liberada: (Neste exemplo não estamos utilizando Firewall Manager)

Foi criada a seguinte regra

Name: dns vnet resoler
Protocol: TCP/UDP
Source: 10.128.0.0/16 (Estou utilizando este CIDR neste exemplo)
Destination Address: 10.128.8.4,10.128.9.4 (Nossos servidores DNS)
Destination Port: 53

Firewall Rule DNS Vnet

Conforme regra criada acima, todas as vnet que estão fazendo peering, e com route default 0.0.0.0/0 para o IP no nosso Azure Firewall, iram conseguir resolver nomes utilizando nossos servidores DNSs.

Vamos a outro exemplo pratico.

Em nosso ambiente temos dois servidores web (Windows Server 2019 com IIS) que hospeda a intranet da empresa, na frente deste servidores temos um load balance fazendo o balanceamento da carga, que possui o IP 10.128.11.196

Para os colaboradores acessarem a infraestrutura da empresa, existe uma VPN IPSec com BGP comunicando o ambiente OnPremises e o ambiente do Azure

A regra para liberar o acesso dos colaboradores ao nosso ambiente “intranet” seria assim:

Name: acesso rede interna – intranet
Protocol: TCP
Source: 10.127.0.0/22 (Este CIDR é da rede OnPremises)
Destination Address: 10.128.11.196 (IP do Load Balance)
Destinaton Port: 80/443

Nossos colaboradores seguiram este caminho

Notebook –> Firewall OnPremises –> Rota BGP –> Gateway Azure –> Route Default Azure –> Azure Firewall –> IP do Load Balance

Nossa intranet utiliza banco de dados Azure Database SQL (PaaS), para este modelo criamos um Azure Database SQL (PaaS) com private link e bloqueamos totalmente o acesso externo (Internet) ele só é acessivel via rede interna.

Link para utilização de private link com DNS Personal (Neste exemplo utilizamos desta forma)

https://docs.microsoft.com/pt-br/azure/private-link/private-endpoint-dns

Regra de Firewall

Name: acesso rede interna – intranet
Protocol: TCP
Source: 10.128.10.4,10.128.11.4
Destination Address: 10.128.4.10 (IP do Private Link que criamos)
Destinaton Port: 1433

Com esta regra nossa aplicação “intranet” conseguirá acessar o banco de dados PaaS via rede interna.

Outro exemplo pratico, neste cenário iremos expor uma aplicação para internet

Iremos expor nosso Site Institucional para a internet, temos este ambiente

Frontend: Application Gateway com IP Privado, peering com nossa vnet master, porém na subnet onde esta hospedado nossa application gateway não possui route default 0.0.0.0/0 para nosso AzureFirewall

Iremos utilizar o recurso de NAT para expor nosso site com destino um Appplication Gateway (não irei ensinar neste exemplo com criar/configurar um application gatewaY)

Name: acesso site institucional
Protocol: TCP
Source: * (qualquer lugar da internet)
Destination Address: 20.72.175.158 (IP previamente criado a atachado ao azure firewall)
Destinaton Port: 443
Translate Adress: 10.128.4.10 (IP privado do Application Gateway)
Translate Port: 443

Com a regra de firewall criada acima nosso site institucional ficará exposto para a internet com proteção de anti-DDoS do Azure que esta em nossa borda e por Application Gateway (WAF) na frente da aplicação.

Essa topologia não esta certa nem errada, eu acredito que é possivel deixar seu ambiente totalmente segredado, seguro, com um ponto unico de acesso e ainda conseguir utilizar todos os recurso do Azure de forma segura.

Bom é isso pessoal, fiquem a vontade para criticar/sugestionar

Outra coisa importante que se deve levar em conta, se no seu ambiente se faz necessário estabelecer comunicação com outras empresas, parceiros cliente etc….pense em utilizar a o proprio gateway de VPN BGP, porém pense que seu cliente da VPN IPSec não poderá utilizar a mesma rede que seu ambiente, neste exemplo o CIDR 10.128.0.0/16 e nem 10.127.0.0/22, para resolver essa questão você pode estabelecer a VPN IPSec em seu ambiente OnPremises e fazer o roteamento dos pacotes para seu ambiente no Azure (recomendo somente se não for critico, pois se seu ambiente OnPremises ficar indisponivel a VPN ficará também), outra solução seria criar um nova Vnet (Para deixar o ambiente segredado) e criar um Virtual Appliance como por exemplo “Fortigate” (Pode ser Palo Alto, SonicWall, PFSense), com a Vnet criada, faça o peering com a vnet master para propagação BGP, e NÃO deixe como rota default as subnets do fortigate para o AzureFirewall, depois disso bastas estabelecer o tunnel IPSec com seu parceiro e criar as devidas rotas na tabela de roteamento e as regras no Azure Firewall.

Configurando IP Secundario interface WAN Sonicwall utilizando Static ARP

Hoje me deparei com o seguinte cenário utilizando Sonicwall e publicação de servidores WEB.

Nosso bloco principal de endereçamentos IPV4 públicos abacaram, solicitamos outro bloco junto a operadora que nos forneceu prontamente.

Chegou a primeira solicitação de publicação de um novo site, criei as regras de NAT de forma natural, porém assim que era criado o site funcionava, porém depois de alguns instantes parava de funcionar, isso me deixou intrigado, comecei fazer troubleshoot, mas realmente estava sem saber o que fazer, pois em outra empresa tinha o mesmo cenario e funcionava.

Cenario “Topologia”

image

Já sem saber o que fazer fui almoçar, e no almoço pensando e pensado, veio a idéia de adicionar um segundo IP na interface WAN do Sonicwall, mas no Sonicwall não existe esta opção como em outros Firewalls (ASA, Fortinet).
Mas ai na procura para solução do problemas localizei um artigo da própria Sonicwall descrevendo meu cenário.

Vamos as configurações:

1º Passo

Criar STATIC ARP para o novo endereçamento IP forneccido pelo ISP

2º Passo

Criar um STATIC ROUTE

Acesso o Sonicwall | Network | ARP
Em Static ARp Entries clique em Add..

image

Ip Address: Utilize um IP Publico de seu novo Bloco de IP, lembre-se que este IP não poderá ser utilizado em outras publicações

Interface: Escolha a Interface onde está configurado o endereçamento IP de seu ISP

Habilite a opção “Publish Entry”

Clique em OK

Ficará desta forma

image

Agora vamos criar uma Static route

No Sonicwall em Network | Routing

Source: Any

Destination: Crie um objeto de WAN Network com seu novo bloco IP

Service: Any

Gateway: 0.0.0.0

Interface: Interface onde está conectado seu ISP

Metric: 20

image

Clique em ok

Agora basta fazer seu NAT normalmente e tudo vai estar bem.

Referencia

Clique para acessar o SonicOS_Enhanced_using_a_Secondary_Public_IP_Range_for_NAT.pdf

https://support.software.dell.com/kb/sw7621

Seja feliz!!!!

Publicando SSH de forma segura com Fortinet (NAT)

Vamos fazer a publicação da porta 22 SSH para acessar a uma maquina Linux de forma segura passando pelo nosso Firewall Fortinet.

Temos este cenário: Maquina Debian 7 e Fortinet e uma range /25 de IP públicos (172.16.0.0/25) e uma range interna PRIVADA 10.10.10.0/24.
Em post anterior mostrei como publicar um WEB SERVER na porta 80 TCP, vamos utilizar a mesma linha e a mesma range de IP Públicos 172.16.0.1 – 172.16.0.126

image

Vamos acessar nosso firewall e começar a criação de objetos e regras.

Em Firewall Objects, clique em Address, Address, Creat New.

Name: Escolha um nome amigável ou o nome do servidor, neste exemplo DEBIAN-SSH
Color: A sua escolha
Subnet / IP Range: o IP do servidor DEBIAN 10.10.10.150
Interface: Porta1 (LAN) interface privada da rede
Show in Address Lits: deixe habilitada

image

Agora vamos criar o IP Pool, em Virtual IP, IP Pool

Create New

Name: PUBLIC_172_16_0_6
Type: Overload
External IP Range/Subnet
ARP Reply: Deixe habilitado
OK

image

Agora vamos criar o Virtual IP, em Virtual IP, Virtual IP, Creat New

Name: Port_22_SSH
Comments: Porta de acesso SSH
Color: a sua escolha
External Interface: neste exemplo “port3 (WAN2), pois nesta porta que está de cara na internet
Type: Static NAT
External IP Address/Range: 172.16.0.6 – 172.16.0.6 (Nosso IP Público)
Mapped IP Address/Range: 10.10.10.150 – 10.10.10.150
Port Forwarding: Deixe habilitada esta opção
Protocol: Vamos habilitar TCP
External Service Port: 22 – 22
Map to Port: 22 – 22

OK

image

Agora vamos criar a regra de NAT de saída (OUT) para o servidor

Em policy

image

Creat New

Policy Type: Firewall
Policy Subtype: Address
Incoming Interface: port1 (LAN)
Source Address: DEBIAN-SSH (Nosso servidor já criado)
Outgoing Interface: port3 (WAN) nossa porta que está ligada na internet
Destination Address: All
Schedule: always
Service: SSH_Port_22 (neste exemplo escolhi somente a porta 22 para deixar mais seguro)
Action: ACCEPT
Enable Nat: Vamos deixar habilitada
Use Dynamic Pool: Public_172_16_0_6 (Nosso IP público)
Log Alloweb Traffic: vamos habilitar para LOGAR todo o trafico

OK

image

Agora vamos criar a regra de NAT (IN) para acessar externo ao nosso servidor DEBIAN

Em policy, creat new

Policy Typer: Firewall
Policy Address: Address
Incoming Interface: port3(WAN) nossa porta ligada na internet
Source Address ALL, podemos também determinar que somente algumas redes ou somete um IP pode acessar, eu recomendo deixar especificado um RANGE ou IP para acessar, por exemplo se tem um parceiro que cuida deste servidor em sua empresa, peça ao parceiro fornecer seu IP Público de acesso a internet, ai podemos especificar que somente este IP pode acessar, lembrando que seu parceiro forneceu um IP Público Dinâmico (aquele que muda sempre que há um nova conexão) será necessário sempre alterar este IP em objetos>
Outgoing Interface: port1 (LAN)
Destination Address: Port_22_SSH (Criamos este objeto com o IP do Servidor DEBIAN e já com a porta SSH 22 configurada)
Schedule: always (podemos definir também um dia e horário com inicio e fim para acesso
Service: SSH_Port_22 (para deixar ainda mais seguro o acesso)
Action: ACCEPT
Log Allowed Traffic: Deixe habilitada para vermos os Trafico

OK

image

Agora vamos testar a conexão com o PUTTY com o IP interno 10.10.10.150

image

Acessado com sucesso

image

Agora vamos acessar pelo IP Público 172.16.0.6

image

Agora conseguimos o acesso, veja a mensagem do certificado

image

Clicamos em “SIM”

Acessado com sucesso

image

Fortinet criando regras de acessos a site interno (NAT)

Vamos criar um regra de NAT para publicarmos um site interno em nosso servidor WEB passando por nosso Firewall (Fortinet), neste exemplo vamos utilizar:

1–> Um servidor Windows Server 2008 R2 com IIS – IP Privado 10.10.10.144

2–> Um Fortinet (Firewall), vamos utilizar duas interfaces uma Privada (LAN) 10.10.10.100 e uma interface Publica (WAN) IP 172.16.0.3

Neste exemplo temos a seguinte configuração de IP público 172.16.0.0/25 ou seja 172.16.0.1 – 172.16.0.126

image

Agora vamos as configurações

Interface LAN do firewall port1

IP 10.10.10.100/24

image

Interface WAN port3

IP 172.16.0.3/27

image

Agora vamos criar os objetos no Firewall

Clique em “Firewall Objects”

image

Depois em “Address” e “Creat New”

image

Name: Vamos usar o nome do servidor, neste exemplo “WIN-O4SBIGBT2RR”
Color: A sua escolha
Type: Subnet
Subnet / IP Range: 10.10.10.144 (IP de nosso servidor)
Interface: Escolha a interface LAN port1
Show in Address List: Vamos deixar habilitado
Clique em OK

image

Agora temos nosso objeto Servidor criado

image

Agora vamos criar para Virtual IP

Em Firewall Objects clique em Virtual IP

image

Clique em “Create New”

image

Name: Vamos colocar um nome amigável, neste exemplo “Port_80_WEB”
External IP Address/Range: vamos colocar um IP válido neste nossa range de IP’s públicos, neste caso 172.16.0.5-172.16.0.5
Mapped IP Address/Range: vamos colocar o IP de nosso servidor WEB 10.10.10.144
Port Forwarding: vamos habilitar
Protocol: Vamos marcar “TCP”
External Service Port: vamos colocar a porta 80, lembrando que essa será a porta externa para comunicação.
Map to Port: vamos colocar 80, lembrando que aqui é a porta interna do servidor

image

Agora em “Firewall Objects” vamos em IP POLL

image

Clique agora em “Creat New”

image

Name: um nome amigável neste exemplo PUBLIC_172_16_0_5
External IP Range/Subnet: 172.16.0.5-172.16.0.5
Type: vamos habilitar “Overload”
ARP Reply: vamos deixar habilitado

image

Agora vamos criar as politicas, clique em “Policy”

image

Clique em “police” – Creat New” (Está será a regra de saída OUT)

Police Type: Firewall
Police Subtype: Address
Incoming interface: port1(LAN)
Source Address: nosso servidor WEB “WIN-04SBIGBT2RR”
Outgoing Interface: port3 (WAN2)
Destination Address: all
Schedule: always
Service: HTTP (liberamos somente esta porta 80, pois neste servidor só roda o IIS), desta forma fica mais seguro
Action: ACCEPT
Enable NAT: habilite esta opção
Use Dynamic IP Pool: está opção tem que ser marcada, aqui vamos colocar o IP público para poder funcionar a regra de NAT neste exemplo como já criamos em IP Pool “PUBLIC_172_16_0_5
Log Allowed Traffic: habilite está opção para podermos monitorar o trafego que passando pelo Firewall.

image

Agora vamos criar a regra de entrada “IN”

Clique em “Policy” – “Create New”

Policy Type: Firewall
Policy Subtype: Address
Incoming Interface: port3 (WAN)
Source Address: “all” aqui decidimos da onde vem o trafego, podemos determinar algumas range’s de IP, mas não é neste caso, deixaremos com “ALL” qualquer lugar
Outgoing Interface: port1(LAN) a porta LAN
Destination Address: vamos colocamos nosso “Virtual IP” que criamos o “Port_80_WEB”, este diz que a porta 80 será direcionada para nosso servidor com IP 10.10.10.144
Schedule: ALL
Service: “HTTP”
Action: ACCEPT
Log Allowed Traffic: vamos deixar habilitado para podermos ver o trafego

Clique em ok.

image

Pronto acabamos de publicar nosso servidor WEB de forma segura.

Acessado pelo servidor em http://localhost

image

Acessado pelo servidor em http://10.10.10.144

image

Agora acessado de forma pública, pelo IP PÚBLICO

image