Neste post iremos fazer o deploy de Fortigate (Version 7) em HA (Active/Passive) “Load Balance (ELB/ILB)”, utilizando um template modificado fornecido pela prória fortigate (adequado as preferencias para este artigo de exemplo).
Nesta topologia/arquitetura de rede colocamos o Fortigate EDGE para ser a rota default de todas as nossas vnets que estão no azure, com isso toda entrada ou saida de dados passa obrigatóriamente pelo Fortigate EDGE, essa arquitetura não esta certa nem errada, tudo vai depender do compliance de cada empresa, time de segurança, time de rede e claro do orçamento de cada um. Lembra muito o artigo que escrevi sobre Palo Alto
No final vou deixar os arquivos para download e algumas explicações sobre os arquivos .json
Uma breve explicação.
Vamos aos objetos criados no azure
Resource Group
rg-fw-edge-shared-brazilsouth
NAME | TYPE | LOCATION |
fwedge01_OsDisk_1_8e3e21f33b774e919ba304a2ec8a3b62 | Disk | Brazil South |
fwedge01_disk2_5e1d09faa5fa446eb56329f30ce3ff51 | Disk | Brazil South |
fwedge02_OsDisk_1_cbedf98d06474b009df9c9c13b972f55 | Disk | Brazil South |
fwedge02_disk2_c8449694114e4b849123c6f93103624f | Disk | Brazil South |
elb-fwedge-01 | Load balancer | Brazil South |
ilb-fwedge-01 | Load balancer | Brazil South |
int-fwedge01-eth0 | Network interface | Brazil South |
int-fwedge01-eth1 | Network interface | Brazil South |
int-fwedge01-eth2 | Network interface | Brazil South |
int-fwedge01-eth3 | Network interface | Brazil South |
int-fwedge02-eth0 | Network interface | Brazil South |
int-fwedge02-eth1 | Network interface | Brazil South |
int-fwedge02-eth2 | Network interface | Brazil South |
int-fwedge02-eth3 | Network interface | Brazil South |
nsg-fwedge-sharedbrazilsouth | Network security group | Brazil South |
pip-fwedge-mgmt-a | Public IP address | Brazil South |
pip-fwedge-mgmt-b | Public IP address | Brazil South |
pip-lb-external-fwedge-01 | Public IP address | Brazil South |
rt-fw-edge-shared-brazilsouth | Route table | Brazil South |
fwedge01 | Virtual machine | Brazil South |
fwedge02 | Virtual machine | Brazil South |
vnet-fwedge-shared-brazilsouth | Virtual network | Brazil South |
Discos
Temos dois discos em cada Fortigate VM:
DiskOS 2GB SSD Premium
DiskDATA 30GB SSD Premium
Teremos uma VNET “vnet-fwedge-shared-brazilsouth” com as seguintes subnets (snets)
Name | CIDR |
snet-fwedge-shared-brazilsouth-External | 10.126.0.0/27 |
snet-fwedge-shared-brazilsouth-Internal | 10.126.0.32/27 |
snet-fwedge-shared-brazilsouth-HASync | 10.126.0.64/27 |
snet-fwedge-shared-brazilsouth-Management | 10.126.0.96/27 |
snet-fwedge-shared-brazilsouth-Protected | 10.126.0.128/27 |
snet-fwedge-shared-brazilsouth-LoadBalance | 10.126.0.160/27 |
Temos 4 interfaces de rede para cada VM
Interface Name | VM Attach | Snet Name | IP Int | CIDR |
int-fwedge01-eth0 | fwedge01 | snet-fwedge-shared-brazilsouth-External | 10.126.0.5 | 10.126.0.0/27 |
int-fwedge01-eth1 | fwedge01 | snet-fwedge-shared-brazilsouth-Internal | 10.126.0.37 | 10.126.0.32/27 |
int-fwedge01-eth2 | fwedge01 | snet-fwedge-shared-brazilsouth-HASync | 10.126.0.69 | 10.126.0.64/27 |
int-fwedge01-eth3 | fwedge01 | snet-fwedge-shared-brazilsouth-Management | 10.126.0.101 | 10.126.0.96/27 |
int-fwedge02-eth0 | fwedge02 | snet-fwedge-shared-brazilsouth-External | 10.126.0.6 | 10.126.0.0/27 |
int-fwedge02-eth0 | fwedge02 | snet-fwedge-shared-brazilsouth-Internal | 10.126.0.38 | 10.126.0.32/27 |
int-fwedge02-eth0 | fwedge02 | snet-fwedge-shared-brazilsouth-HASync | 10.126.0.70 | 10.126.0.64/27 |
int-fwedge02-eth0 | fwedge02 | snet-fwedge-shared-brazilsouth-Management | 10.126.0.102 | 10.126.0.96/27 |
Temos dois Load Balances
1x Internal Load Balance (ilb-fwedge-01) IP: 10.126.0.190
1x External Load Balance (elb-fwedge-01) IP: XXX.XXX.XXX.XXX
Temos 1 NSG (Network Security Group) (snet-fwedge-shared-brazilsouth-03 “Management”)
1x “nsg-fwedge-shared-brazilsouth-mgmt” com as seguintes regras
Allow-MGMT-HTTPS/SSH
Source: XXX.XXX.XXX.XXX/XX (IP ou IPs de origem que podem se conectar na interface MGMT)
Destination: 10.126.0.96/24 (Rede de gerencia MGMT)
Temos 3 IPs Publicos
pip-fwedge-mgmt-a (Management Fortigate A)
pip-fwedge-mgmt-b (Management Fortigate B)
pip-lb-external-fwedge-01 (IP Publico External Load Balance)
Temos 2 Virtual Machines
fwedge01 (Standard_F8s – 8vCPUs, 16 GB Memory)
fwedge02 (Standard_F8s – 8vCPUs, 16 GB Memory)
Temos um arquivo de Route Table “rt-fw-edge-shared-brazilsouth”, nele temos as seguintes rotas:
Name | CIDR | Next Hop type | Next Hop IP address |
DefaultRoute | 0.0.0.0/0 | VirtualAppliance | 10.126.0.190 |
Agora vamos ao nosso script
#!/bin/bash
##Declarando variaveis
##Declarando Variaveis (Obrigatório)
export Subscription_Name="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" ##inserir sua Subscription Azure
export RG_Name02="rg-fw-edge-shared-brazilsouth"
export Location_Region="brazilsouth"
###Script
###Selecionar subscription
az account set --subscription "${Subscription_Name}"
##Criando RG
az group create -n "${RG_Name02}" -l "${Location_Region}"
##Deploy Fortigate Template
az deployment group create -g "${RG_Name02}" --template-file template.json --parameters @parametersFile.json
##Desligando VMs
az vm stop -g "${RG_Name02}" -n "fwedge01"
az vm stop -g "${RG_Name02}" -n "fwedge02"
##Deallocate
az vm deallocate -g "${RG_Name02}" -n "fwedge01"
az vm deallocate -g "${RG_Name02}" -n "fwedge02"
###Criando Storage Accout (Para boot diag)
az storage account create -g "${RG_Name02}" -n "stgdiagfwedgefgt01" -l "${Location_Region}" --sku "Standard_LRS"
##Criando Snet Internal Load Balance (Subnet para load balance interno)
az network vnet subnet create -g "${RG_Name02}" --vnet-name "vnet-fwedge-shared-brazilsouth" -n "snet-fwedge-shared-brazilsouth-LoadBalance" --address-prefixes "10.126.0.160/27"
##alterando IP Internal Load Balance
az network lb frontend-ip update -g "${RG_Name02}" --lb-name "ilb-fwedge-01" -n "frontend-fwedge-internal-01" --vnet-name "vnet-fwedge-shared-brazilsouth" --subnet "snet-fwedge-shared-brazilsouth-LoadBalance" --private-ip-address "10.126.0.190"
###Habilitando Boot dioag VM01/02
az vm boot-diagnostics enable -n "fwedge01" -g "${RG_Name02}" --storage "stgdiagfwedgefgt01"
az vm boot-diagnostics enable -n "fwedge02" -g "${RG_Name02}" --storage "stgdiagfwedgefgt01"
##Fixando IP eht0 (VM01/02)
az network nic ip-config update -g "${RG_Name02}" --nic-name "int-fwedge01-eth0" -n "ipconfig1" --private-ip-address "10.126.0.5"
az network nic ip-config update -g "${RG_Name02}" --nic-name "int-fwedge02-eth0" -n "ipconfig1" --private-ip-address "10.126.0.6"
###Fixando IP eth1 (VM01/02)
az network nic ip-config update -g "${RG_Name02}" --nic-name "int-fwedge01-eth1" -n "ipconfig1" --private-ip-address "10.126.0.37"
az network nic ip-config update -g "${RG_Name02}" --nic-name "int-fwedge02-eth1" -n "ipconfig1" --private-ip-address "10.126.0.38"
###Fixando IP eth2 (VM01/02)
az network nic ip-config update -g "${RG_Name02}" --nic-name "int-fwedge01-eth2" -n "ipconfig1" --private-ip-address "10.126.0.69"
az network nic ip-config update -g "${RG_Name02}" --nic-name "int-fwedge02-eth2" -n "ipconfig1" --private-ip-address "10.126.0.70"
###Fixando IP eth3 (VM01/02)
az network nic ip-config update -g "${RG_Name02}" --nic-name "int-fwedge01-eth3" -n "ipconfig1" --private-ip-address "10.126.0.101"
az network nic ip-config update -g "${RG_Name02}" --nic-name "int-fwedge02-eth3" -n "ipconfig1" --private-ip-address "10.126.0.102"
###Anexando NSG MGMT a snet mgmt
az network vnet subnet update -g "${RG_Name02}" -n "snet-fwedge-shared-brazilsouth-Management" --vnet-name "vnet-fwedge-shared-brazilsouth" --network-security-group "nsg-fwedge-shared-brazilsouth-mgmt"
###Deletando regras existentes (criadas pelo templete, pode-se alterar diretamente no template tb)
az network nsg rule delete -g "${RG_Name02}" --nsg-name "nsg-fwedge-shared-brazilsouth-mgmt" -n "AllowAllInbound"
az network nsg rule delete -g "${RG_Name02}" --nsg-name "nsg-fwedge-shared-brazilsouth-mgmt" -n "AllowAllOutbound"
##Criando regras NSG MGMT HTTPS
az network nsg rule create -g "${RG_Name02}" --nsg-name "nsg-fwedge-shared-brazilsouth-mgmt" -n "Allow-MGMT-HTTPS" --priority "100" \
--source-address-prefixes "179.215.182.42/32" --source-port-ranges "*" \
--destination-address-prefixes "10.126.0.96/27" --destination-port-ranges "443" --access "Allow" \
--protocol "TCP" --description "Acesso liberado a snet management"
##Alterando regras NSG MGMT SSH
az network nsg rule create -g "${RG_Name02}" --nsg-name "nsg-fwedge-shared-brazilsouth-mgmt" -n "Allow-MGMT-SSH" --priority "101" \
--source-address-prefixes "179.215.182.42/32" --source-port-ranges "*" \
--destination-address-prefixes "10.126.0.96/27" --destination-port-ranges "22" --access "Allow" \
--protocol "TCP" --description "Acesso liberado a snet management"
###Anexando Subnet Internal a Route Table
az network vnet subnet update -g "${RG_Name02}" -n "snet-fwedge-shared-brazilsouth-Internal" --vnet-name "vnet-fwedge-shared-brazilsouth" --route-table "rt-fw-edge-shared-brazilsouth-internal"
###Inciando as VM01/02
az vm start -g "${RG_Name02}" -n "fwedge01"
az vm start -g "${RG_Name02}" -n "fwedge02"
Agora tudo pronto, vamos acessar nosso FGT, iremos acesso pelo IP Publico “pip-fwedge-mgmt-a”
Vamos as configurações iniciais
Temos nosso Dashbord inicial
Vamos verificar nosso HA Sync
Vamos em System / HA
Tudo certo
Vamos agora em “Network” “Static Routes”
Por padrão teremos essas rotas (Isso pode ser editado/alterado no template)
Vamos fazer algumas modificações e deixar desta forma
Basicamente, iremos remover a rota “168.63.129.16/32” “10.126.0.1” “port1”
Toda e qualquer nova rede que for criar e for feito peering com a rede do Firewall-EDGE 10.126.0.0/24 teremos que criar a “Static Route”
Vamos a um exemplo, em nosso ambiente azure temos a Vnet “10.188.0.0/24”, iremos fazer um peering com ela e add route static no FGT.
Sempre usaremos a port2, pois ela é nossa “LAN-Trust”, o gw 10.126.0.33 é o gw do azure (já expliquei em outros posts como funciona a rede no azure, que ele guarda para si os 3 primeiros IP de cada subnet)
Agora nossa Static Route ficará desta forma
Vamos agora criar um regra de acesso a internet
“Policy & Objects” “Firewall Policy”
Create New
Clique em “ok”
Agora nos temos uma regra que vem da nossa interface “LAN-Trust” para a nossa interface “WAN-UnTrust”
Agora vamos add essa vnet/subnet ao nosso Route Table
Assim ficou nosso arquivo
**(Esta vnet tem que possui peering com nossa rede do firewall edge)
Vamos ao teste
Criamos a seguinte vm “vm-lan-trust-01”
subnet 10.188.0.0/26
IP: 10.188.0.4
Estamos dentro da nossa VM Trust
vamos fazer um teste de curl para http//ifconfig.me e monitor em nosso firewall
Como podem ver em nossa VM Trust, trouxe o IP da interface WAN-UnTrust e todo trafego passou pelo nossa firewall
Agora um outro cenário, temos parceiros/clientes que precisam acessar nossas aplicações ou um ambiente de “Transfer” (Connect Direct IBM, SFTP, FTPS, SMB) para isso acontecer de forma segura podemos estabelecer Tuneis IPSec com nossas Parceiros/Clientes e desta forma liberar o acesso de forma segura.
Outra cenario seria a publicação de uma aplicação interna e expo-la para internet, temos varias possibilidade de forma segura em nossa ambiente.
Agora algumas explicações referente aos .json
Linha 5/6: usuário de acesso ao firewall
Linha 8/9: senha
Linha 12: prefixo do firewall
Linha 15: versão do licenciamento, neste exemplo seria PayAsGo (Pague pelo uso, se vc possui BYOL, altere para o valor que consta no template)
Linha 18: ultima versão do firmware
Linha 21: Size VM
Linha 36: nome do IP Publico do External LB
Linha 39: RG
Linha 42: IP Publico MGMT FGT A
Linha 45: RG
Linha 48: IP Publico MGMT FGT B
Linha 51: RG
Continuando
Linha 57: nome da vnet (o proprio template cria a vnet)
Linha 60: RG
Linha 63: CIDR da Vnet
Linha 66: Nome da Vnet External
Linha 69: CIDR da Subnet External
As outras são auto explicativas
***Nunca esquecer de add Static Route em nosso firewall, sempre add as subnet no arquivo Route Table, sempre fazer peering para novas Vnets.
Seja Feliz!!!!!!!!!!!!!!!!!
Você precisa fazer login para comentar.