fortinet

DEPLOY Fortigate HA AZURE CLI (BASH) TEMPLATE ARM

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

NAMETYPELOCATION
fwedge01_OsDisk_1_8e3e21f33b774e919ba304a2ec8a3b62DiskBrazil South
fwedge01_disk2_5e1d09faa5fa446eb56329f30ce3ff51DiskBrazil South
fwedge02_OsDisk_1_cbedf98d06474b009df9c9c13b972f55DiskBrazil South
fwedge02_disk2_c8449694114e4b849123c6f93103624fDiskBrazil South
elb-fwedge-01Load balancerBrazil South
ilb-fwedge-01Load balancerBrazil South
int-fwedge01-eth0Network interfaceBrazil South
int-fwedge01-eth1Network interfaceBrazil South
int-fwedge01-eth2Network interfaceBrazil South
int-fwedge01-eth3Network interfaceBrazil South
int-fwedge02-eth0Network interfaceBrazil South
int-fwedge02-eth1Network interfaceBrazil South
int-fwedge02-eth2Network interfaceBrazil South
int-fwedge02-eth3Network interfaceBrazil South
nsg-fwedge-sharedbrazilsouthNetwork security groupBrazil South
pip-fwedge-mgmt-aPublic IP addressBrazil South
pip-fwedge-mgmt-bPublic IP addressBrazil South
pip-lb-external-fwedge-01Public IP addressBrazil South
rt-fw-edge-shared-brazilsouthRoute tableBrazil South
fwedge01Virtual machineBrazil South
fwedge02Virtual machineBrazil South
vnet-fwedge-shared-brazilsouthVirtual networkBrazil 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)

NameCIDR
snet-fwedge-shared-brazilsouth-External10.126.0.0/27
snet-fwedge-shared-brazilsouth-Internal10.126.0.32/27
snet-fwedge-shared-brazilsouth-HASync10.126.0.64/27
snet-fwedge-shared-brazilsouth-Management10.126.0.96/27
snet-fwedge-shared-brazilsouth-Protected10.126.0.128/27
snet-fwedge-shared-brazilsouth-LoadBalance10.126.0.160/27

Temos 4 interfaces de rede para cada VM

Interface NameVM AttachSnet NameIP IntCIDR
int-fwedge01-eth0fwedge01snet-fwedge-shared-brazilsouth-External10.126.0.510.126.0.0/27
int-fwedge01-eth1fwedge01snet-fwedge-shared-brazilsouth-Internal10.126.0.3710.126.0.32/27
int-fwedge01-eth2fwedge01snet-fwedge-shared-brazilsouth-HASync10.126.0.6910.126.0.64/27
int-fwedge01-eth3fwedge01snet-fwedge-shared-brazilsouth-Management10.126.0.10110.126.0.96/27
int-fwedge02-eth0fwedge02snet-fwedge-shared-brazilsouth-External10.126.0.610.126.0.0/27
int-fwedge02-eth0fwedge02snet-fwedge-shared-brazilsouth-Internal10.126.0.3810.126.0.32/27
int-fwedge02-eth0fwedge02snet-fwedge-shared-brazilsouth-HASync10.126.0.7010.126.0.64/27
int-fwedge02-eth0fwedge02snet-fwedge-shared-brazilsouth-Management10.126.0.10210.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:

NameCIDRNext Hop typeNext Hop IP address
DefaultRoute0.0.0.0/0VirtualAppliance10.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”

Entre com usuário e senha que contas no template

Vamos as configurações iniciais

Clique em “Begin”
Clique em “ok”
Clique e “ok”

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”

Ficará desta forma

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.

Link para download

Seja Feliz!!!!!!!!!!!!!!!!!

Autenticação FSSO AGENT Fortinet

Vamos neste post como instalar e configurar FSSO AGENT do Fortinet.

Veja o desenho abaixo

image

Primeiro passo fazer download do FSSO AGENT pelo site da http://support.fortinet.com ou diretamente neste link http://migre.me/jr1kJ

Segundo passo a instalação em um servidor com Active Directory (AD)
Vamos a instalação

Duplo clique no instalador

image

Next

image

Aceite os termos e clique em NEXT

image

Local de instalação, next

image

Usuário e senha do administrador do domínio

image

Deixe a tela de opção do jeito que está

image

Clique em Install

image

A instalação

image

Instalado com sucesso, vamos a configuração, habilite “Lanch DC Agente Install Wizard” depois Finish

image

Collector Agent IP address: IP do Servidor

Collector Agent listening port: 8002

Next

image

Selecione o domínio a ser monitorado e clique em Next

image

Nesta tela vamos escolher as configurações padrões
Para maiores informações veja http://docs-legacy.fortinet.com/fos50hlp/50/index.html#page/FortiOS%205.0%20Help/FSAE.036.11.html

Clique em Next

image

Pronto, agente instalado clique em “Finish”

Vamos configurar o Agent

Acesse no menu iniciar, Fortinet, Fortinet Sing On Agent, Configure Fortinet Single On Agent

image

A primeira alteração a ser feita é a autenticação do agente com o fortinet, vamos configurar uma senha neste exemplo “123@mudar

image

Depois vamos ver as opções, “Select Domains To Monitor”

image

Habilite seu domínio, neste exemplo “GLBX\glbx.local” clique em OK

image

O Agente está fazendo as configurações

image

Agora clique em “Set Group Filters”

image

Clique em “Add…”

image

Clique em “Advanced”
image

Escolha os grupos a serem monitorados, neste exemplo ACCESS_FULL_INTERNET e ACCESS_RESTRICT_INTERNET, clique em Add

image

Marque a opção “Default filter” e clique em OK

image

Aqui você verá os grupos monitorados, clique em OK

image

Agente sendo configurado

Agora vamos salvar

image

Clique em “Salve&Close”

image

Agente sendo configurado e salvo

image

Um detalhe muito importante as portas 8000 e 8002 devem estar liberados no firewall do servidor para comunicação em o firewall e o servidor.

Pronto nosso agente está instalado e configurado, agora vamos configura-lo em nosso firewall.

No Firewall clique em User & Device, Authentication, Single Sign-On, Create New

 

image

Type: Fortinet Single-Sign-On Agent
Name: SRV-DC01
Primary Agent IP/name: IP de nosso servidor 10.174.1.3
Password: lembra que configuramos a senha no agent no servidor, neste exemplo “123@mudar
Neste exemplo vamos usar somente um Agent FSSO, mas é recomendável pelo menos dois, caso um falha teremos outro para autenticação, mas neste exemplo iremos utiliza somente um.

image

Clique em “Apply & Refresh”

image

Agora veja que nosso agente já trouxe as informações de nossos grupos com acesso a internet, neste exemplo “ACCESS_FULL_INTERNET e ACCESS_RESTRICT_INTERNET”

Clique em ok.

image

Pronto agente configurado no Firewall

Agora vamos criar os grupos de acesso no firewall

Clique em “User & Device” User Group, Creat New

image

Name: SRV-DC01-FULL-ACCESS
Type: Fortinet Single Sign-On (FSSO)
Available Members: Veja que trouxe nosso grupos, vamos selecionar “GLBX/ACCESS_FULL_INTERNET” e clicar na seta para adicionar em Members, clique ok

image

image

Grupo criado, agora vamos criar o grupo de acesso restrito, creat new

Name: SRV-DC01-RESTRICT-ACCESS
Type: Fortinet Single Sign-On (FSSO)
Available Members selecione o grupo GLBX/ACCESS_RESTRICT_INTERNET e clique na seta para adicionar em Members, clique ok

image

image

Pronto agora temos nossos dois grupos de acesso a internet FULL e RESTRICT criados em nosso firewall

Agora vamos criar a politica de acesso

Em POLICY, Policy,Creat New

Primeira Etapa

Policy Type: Firewall
Policy Subtype: User Identity
Incoming Interface: port1 (LAN)
Source Address: Objeto criado coma range de nossa rede interna
Outgoing Interface: port3 (WAN1)
Enable NAT: Habilite

image

Agora vamos a segunda etapa, em “Configure Authentication Rules” Creat New”

Destination Address: all
Group: SRV-DC01-FULL-ACCESS (Grupo que tem acesso FULL a internet)
User: Click to ad… não utilizamos usuários específicos
Schedule: always
Service: ALL
Action: ACCEPT
Log Allowed Traffic: Deixe habilitado
Generate Logs when Session Starts: Deixe habilitado

image

Clique em OK

Agora vamos criar o acesso para os usuário do grupo RESTRICT

Creat New

Destination: all
Group: ACCESS_RESTRICT_INTERNET
User: Click to add… não estamos utilizando usuário específicos
Schedule: always
Service: HTTP, por ser restrito, deixemos somente HTTP port 80
Action: ACCEPT
Log Allowed Traffic: Deixe habilitado
Generate Logs when Session Starts

EM UTM Security Profiles, vamos habilitar “Web Filter” onde temos alguns sites bloqueados

image

Clique ok

Agora vemos nossas regras de autenticação criadas

image

Clique ok

image

Regras criadas

Vamos ao teste utilizando o usuário “vpmonteiro” que está no grupo acesso restrito

Bloqueamos estes sites para o grupo restrito

image

Vamos acessar uma maquina no domínio com o usuário “vpmonteiro”

image

Veja que o usuário está conectado em nosso firewall

image

Ao abrir o navegador, conseguimos acesso a internet normalmente

image

Vamos ver se o usuário está logado mesmo, acessando o FSSO AGENT no AD e clicando em Show Logon Users

image

Veja que o usuário “vpmonteiro” está conectado

image

Vamos ver se ele consegue acessar aqueles sites que bloqueamos acima

image

Veja que o ao acessar um site restrito o acesso foi bloqueado

Vamos tentar via HTTPS

image

Veja que não é acessado.

Logs do Fortinet

image

Agora vamos ver com o usuário “csantana” que não possui restrições

 

image

Veja que o usuário está logado

image

image

image

Veja que conseguimos acessar qualquer site normalmente

image

Veja que ao tentar acessar uma maquina fora do domínio ela não consegue acessar nenhum site

image

image

Agora vou deixar a politica de acesso a internet habilitada por LDAP e com já configuramos tudo no POST anterior veja

image

E se tentarmos autenticar com o usuário restrito “vpmonteiro”

O acesso a sites restritos continua normalmente

image

E veja os dois usuário logados um por LDAP e outro por FSSO

image

Seja Feliz!!!

Bloqueando arquivos executáveis para download e execução pelo navegador utilizando fortinet

Vamos bloquear o download de arquivos “.exe” pelo navegador

Acesso o Fortinet

Data Leak Prevention, File Filter

image

New File Filter Table

Name: Bloqueio .exe

OK

image

Agora em “Creat New”

image

Filter Type: Escolha “File Type”
File Type: Escolha “Executable (exe)

OK

image

APPLY

Filtro criado

image

Agora vamos em Sensor, em UTM Security Profiles, Sensor

 

image

Vamos criar um novo Perfil

image

Clique no sinal de “+”

Name: vamos dar um nome para o perfil, neste exemplo “Bloqueio .exe”

image

Agora em “Creat New”

Filter: Escolha “Files”
Filter Type included in “Bloqueio .exe” o que criamos em File Filter”
Examine the following Services: Vamos deixar somente “HTTP”
Action: Block
OK

image

APPLY

Teremos este:

image

O Perfil para bloquear arquivos .exe está criado, porém ainda não está funcionando pois não vinculamos ele a uma regra de acesso a internet em policy.

Ao acessar a URL “http://download.skype.com/bf94b0508d33d968c9200839f080e127/partner/59/SkypeSetupFull.exe

Conseguimos fazer o download do Skype normalmente

image

Agora vamos aplicar o filtro de bloqueio .exe na regra de acesso a internet

Vamos em “Policy” – Policy

EM “UTM Security Profiles” vamos habilitar “DLP Sensor” e escolher o perfil que criamos “Bloqueio .exe”

image

OK, pronto agora qualquer download ou execução de arquivos .exe pelo navegador será bloqueada.

image

Podemos em Monitor

image

Bloqueando acesso ao aplicativo Skype com Fortinet

Vamos bloquear o Skype utilizando o Fortinet em nossa organização.

Acesse o firewall, UTM Security Profiles

image

Vamos criar um novo profile, clique no sinal de + do lado esquerdo

image

New Application Control List

Name: Skype Blocked

OK

image

“Creat New”

image

Deixe somente marcado “Category” – “P2P” – “Popilarity” – “Technology” – “Browser-based” – “Peer-to-Peer” – “Risk” – “Excessiver-Bandwaidth”

Na caixa de pesquisa digite “Skype”

image

Seleciona “Skype”, em “Action” e clique em “Block”

image

Veja que foi criar a regra de bloqueio de aplicação

image

APPLY

Ainda não está funcionando pois não vinculamos o perfil a regra de acesso a internet, o Skype ainda está funcionando.

image

Agora vamos vincular o perfil de bloqueio do skype a regra de acesso a internet

Em “Policy”, Policy

image

Vamos na regra de acesso a internet

Em “UTM Security Profiles” habilite “Application Control” e escolha o perfil que criamos “Skype Blocked”

 

image

OK

A regra já está funcionando.

Agora o Skype não conecta

image

Vamos ver os LOGS do fortinet

Em “UTM Security Profiles”, Monitor, Application Monitor

image

O site do Skype conecta normalmente, pois não bloqueamos a URL nem a categoria.

image