Criando um Firewall Fortigate no Azure
Neste artigo irei descrever uma necessidade que tivemos recentemente: criar um Apliance de um Fortigate na Azure. Resolvemos usar este recurso por causa das características utilizadas em nosso ambiente: temos 5 localidades distintas geograficamente e todas elas executam caixas Fortigate. Como a nossa intenção é deixar a Azure como nossa Nuvem principal, com o concentrador de VPNSSL e de todas as VPNs IPSEC, achamos por melhor colocar o mesmo tipo de tecnologia lá também.
É claro que poderíamos utilizar outras abordagens, mas essa pareceu a mais sensata, visto o conhecimento que temos das ferramentas e dos demais recursos da estrutura. Nada melhor para conversar com Fortigate do que outro Fortigate. Temos o fator dinheiro envolvido aqui também: uma solução de VIRTUAL WAN na Azure para nosso cenário sairia por mais de 1800 dolares. A Fortinet disponibiliza o apliance do Fortigate na Azure e em diversas Clouds, como a AWS e Oracle Cloud. Na Azure, o custo inicial fica em torno de 30 centavos de dólar por hora, o que equivale a U$ 219 dólares por mês para a menor máquina possível. Esse preço é apenas para a licença do FORTIGATE. Os custos da máquina que vai armazenar o Fortigate são a parte. Uma máquina simples, com 1 vCPU e 3,5 GB de RAM sai por volta de 55 dólares mensais. Estamos falando de aproximadamente 300 dólares mensais para ter uma solução destas. Para o nosso caso, a menor máquina atendeu muito bem as 20 VPNs IPSEC e os 100 usuários da VPNSSL conectados simultaneamente. Não tivemos nenhum problema de desempenho. O consumo de memória fica em torno de 23% e a CPU dificilmente passa de 25%.
Como cada caso tem uma particularidade, é necessário avaliar muito bem todos os valores e variáveis envolvidos. Em nossa situação, estamos plenamente satisfeitos com o resultado.
Como nem tudo são flores, vale ressaltar que o apliance do Fortigate não suporta o BACKUP da Azure. Portanto, você deve ter uma solução de recuperação a parte. Eu me contentei em usar o REAPLY da VM e subir a configuração backupeada na máquina, mas abordagens usando dois firewalls (Active-Passive ou Active-Active) com HA também podem ser consideradas.
A Fortinet tem uma documentação completa desta solução neste link:
https://www.fortinet.com/content/dam/fortinet/assets/data-sheets/FortiGate_VM_Azure.pdf
Agora, vamos aos passos:
Criar uma VNET
A primeira coisa a ser feita é a criação de uma VNET na Azure. Uma VNET é a representação básica de uma rede dentro da Azure. Nela iremos colocar as interfaces de rede para acesso interno e externo dos recursos. A figura abaixo ilustra como irá ficar nossa solução:
Veja que serão criadas três SUBNETs: A interna, a externa/insegura e a protegida. Isso serve pra você separar o tráfego: uma SUBNET será usada para o acesso externo (internet), a outra será usada para o tráfego interno (dentro da Azure) até a protegida, onde ficarão os seus recursos.
Para criar a VNET (se você não tiver uma), siga os passos abaixo:
Entre na sua conta da Azure e procure por “Virtual networks”. Selecione “Create Virtual Network”. Aqui estou colocando um range de IP aleatório, no meu caso 10.50.0.0/16. Irei criar três Subnets dentro desta VNET:
· PROTECTED com IP 10.50.100.0/24
· EXTERNAL com IP 10.50.2.0/27
· INTERNAL com IP 10.50.1.0/27
Veja abaixo como fica:
Criando o Apliance
Neste ponto, iremos criar o Fortigate. Acesse o Marketplace da Azure e selecione o item “Fortinet FortiGate Next-Generation Firewall”
Selecione Create
Preencha os dados conforme sua necessidade (Região, Resource Group, usuário) e vá até a próxima etapa:
Vale lembrar que você tem diversas formas de usar a licença do FORTIGATE. Em nosso caso vamos usar a opção “Pay As You Go” ou seja, paga pelo uso. Se você já tiver um contrato com a Fortinet e quiser usar suas licenças, selecione “Bring Your Own License”. Você pode escolher qual versão do FORTIGATE instalar, selecionando entre algumas opções. Vou deixar em latest (ultima) que, no momento deste tutorial, era a 7.0.0.
Na tela a seguir você deve escolher o tamanho da VM a instalar. Como havia informado antes, estamos usando a DS1 v2, com 1 Vcpu e 3,5 GB de RAM, o que é suficiente para nossas necessidades. Escolha o tamanho mais adequado e clique em NEXT:
Agora devemos escolher as SUBNETs onde cada interface ficará. Veja que nomeei cada SUBNET com um nome sugestivo para facilitar. Veja como fica na imagem:
Na próxima tela, devemos criar o IP externo do Firewall. Por esse IP iremos acessá-lo e todas as conexões VPN-IPSEC deverão apontar para ele.
Nesta tela teremos algumas configurações avançadas, como definir uma conexão com algum FORTIMANAGER. Não é o nosso caso, portanto não alterarei nada:
Na última tela, teremos a validação das configurações. Basta clicar em Create:
Neste ponto, ligue a VM. Se tudo deu certo, acesse através de um navegador o IP externo criado para o FORTIGATE usando https://IP_DO_APPLIANCE
Entre com o usuário informado nos passos anteriores.
Veja abaixo:
Na tela que segue, apenas clique em LATER
Pronto, você está na tela do FORTIGATE:
Veja que existem duas interfaces de rede:
A port1 está atrelada a interface de rede da Azure na SUBNET EXTERNAL e a port2 na INTERNAL.
Vamos agora fazer alguns testes e ajustes. Primeiro criar uma VM na SUBNET PROTECTED: vou criar uma VM Linux mesmo, apenas para testar o roteamento. Não esqueça de colocar ela na PROTECTED. Veja abaixo a máquina que eu criei:
Veja que ela tem um IP externo atrelado. Deixei assim para poder acessá-la sem depender de outro meio. Vou conectar nela pelo putty:
Pronto, acesso concedido. Estamos na máquina:
Veja que as VMs na Azure já têm toda uma infraestrutura de rede criada, com rotas, DNS e gateways apontando para a internet. Deste modo, esta máquina já consegue pingar o google, por exemplo:
O que iremos fazer agora é usar o FORTIGATE criado para que ele seja o FIREWALL da REDE. Vamos direcionar todo o tráfego para ele. Para tanto, temos um atalho muito bom: uma rota na Azure que foi criada no momento do deploy do Apliance. Em nosso exemplo, ela assumiu o seguinte nome: FORTIGATETESTE2-RT-PROTECTED
Veja as rotas que ele criou:
Note o destino da rota DEFAULT (0.0.0.0/0): ele aponta para o endereço 10.50.1.6 que é porta interna do FORTIGATE criado, veja:
Isso significa que todo o tráfego diferente vai ser enviado para o FORTIGATE. Vamos ativar esta rota na SUBNET PROTECTED. Acesse a VNET e encontre a SUBNET. Veja abaixo:
Quando você salvar e o deploy acabar, você irá perder o acesso a máquina Linux criada na SUBNET PROTECTED:
Isso significa que o IP externo agora não serve para mais nada. Você vai ter que configurar o seu FORTIGATE como o ponto de conexão externa de todas as VMs que estiverem na SUBNET PROTECTED.
Por exemplo, para retomar o acesso desta VM usando o FORTIGATE, criei um endereço VIP com a seguinte configuração:
Onde o IP 10.50.2.5 é o endereço da interface na porta EXTERNAL do FORTIGATE e o IP 10.50.100.4 é o endereço da VM.
Criei também a seguinte regra:
Com isso, consigo recuperar o acesso a VM, utilizando apenas o IP externo do Fortigate e não mais o IP externo atrelado na VM.
Veja como fica a configuração no PUTTY:
Configurei na porta 9500 para não dar conflito com a 22 de administração do Fortigate.
Note que a VM também não acessa mais a internet:
A menos que ela seja autorizada no FORTIGATE:
Conclusão
Veja que esta solução substitui toda a infraestrutura de firewall da Azure pelo Fortigate. Isso, em nosso caso (e é bom deixar bem claro isso: em nosso caso), resolveu de forma adequada o que precisávamos. Já estamos acostumados com a solução e saiu bem mais barata. Seu cenário pode ser diferente, ou ter outras necessidades, cabe a adaptação. O fato é que temos esta liberdade, mesmo utilizando recursos em nuvem. A complexidade neste cenário pode estar relacionada a alteração das ROTAS e das regras do Firewall, mas ainda é bastante atraente.