Firewall

Transit Gateway AWS, Two Regions, Route BGP, VPN IPSec, Fortigate

Como havia comentado anteriormente, neste post irei demonstrar um cenário onde vamos utilizar “Transit Gateway” na AWS, para substituir o peering entre as VPC, e utilizá-lo em uma VPN IPSec com Fortigate com roteamento BGP.

Topologia Transit Gateway com 2 regiões e VPN IPSec com Fortigate

Vamos ao nosso cenário:

AWS Cloud (sa-east-1)
my-vpc-01 (10.120.0.0/24)
                my-subnet-01 (10.120.0.0/24)
my-vpc-02 (10.120.1.0/24)
                my-subnet-01 (10.120.1.0/24)

my-route-table-01
                my-subnet-01 (10.120.0.0/24) (anexado a subnet)
my-route-table-02
                my-subnet-02 (10.120.1.0/24) (anexado a subnet)
my-sg-01
TGW-01 (transit gateway)

AWS Cloud (us-east-2)
my-vpc-03 (10.120.2.0/24)
                my-subnet-01 (10.120.2.0/24)
my-vpc-04 (10.120.3.0/24)
                my-subnet-01 (10.120.3.0/24)
my-route-table-03
                my-subnet-01 (10.120.2.0/24) (anexado a subnet)

my-route-table-04
                my-subnet-02 (10.120.3.0/24) (anexado a subnet)
my-sg-02
TGW-02 (transit gateway)

Fortigate (OnPremises)
Rede01 10.126.0.0/24
Rede02 10.126.1.0/24
Rede03 10.126.2.0/24

Agora vamos a mão na massa, não vou dar tantos detalhes na criação dos objetos neste post.


*Obs neste post, temos redes simples e roteamente FULL ou seja todo mundo fala com todo mundo, SG e ACL liberado Any, isso para facilita o entendimento, em produção isso deve ser revisto e liberado somente o que for necessário para seu pleno funcionamento. Colocamos todas as subnets na mesma zona para faciliar o artigo, mas em produção sugiro ter pelo menos duas subnets, uma em cada zona, exemplo subnet1 zona A e subnet2 zona B.

Nossas VPCs (AWS sa-east-1)

Nossas Subnets

Nossos Route Tables

Agora vamos criar nosso Transit Gateway (sa-east-1)

Name tag “tgw-01”
Description “Transit Gateway Sao Paulo”
ASN “64530” esse será nosso ASN
Auto accept shared attachments *Deixe habilitado
O restante deixem como mostrado na figura abaixo

Transit Gateway criado em “transit Gateways” Create

Agora vamos criar nosso Transit Gateways Attachment

Name tag “tgw-attch-01”
Transit gateway ID “escolha o que acabamos de criar”
Attachment type “Escolha VPC”
VPC attachment “Habilite DNS Support”
VPC ID “Escolha my-vpc-01”

Clique em criar

Repita os mesmos passos para attachment a “my-vpc-02”

Agora temos dois transit attachment

Agora que temos o Transit Gateway criado e temos as VPC anexadas, vamos criar o roteamento para nossas VPCs (sa-east-1) (us-east-2) (rede Fortigate)
Em route table vamos associar da subnet em seus respectivo arquivo de rota

Após associar as subnets, vamos criar o roteamento para nosso transit gateway
10.120.1.0/24 (rede aws sa-east-1) para nosso tgw
10.120.2.0/24 (rede aws us-east-2) para nosso tgw
10.120.3.0/24 (rede aws us-east-2) para nosso tgw
10.126.0.0/24 (rede Fortigate) para nosso tgw
10.126.1.0/24 (rede Fortigate) para nosso tgw
10.126.2.0/24 (rede Fortigate) para nosso tgw

Repita os passos para my-route-table-02
10.120.1.0/24 (rede aws ea-east-1) para nosso tgw
10.120.2.0/24 (rede aws us-east-2) para nosso tgw
10.120.3.0/24 (rede aws us-east-2) para nosso tgw
10.126.0.0/24 (rede Fortigate) para nosso tgw
10.126.1.0/24 (rede Fortigate) para nosso tgw
10.126.2.0/24 (rede Fortigate) para nosso tgw

Até o presente momento ja temos essa topologia

Agora em nossos SG, vamos liberar os trafego

Liberamos aqui as seguintes redes
10.120.1.0/24 (rede aws ea-east-1)
10.120.2.0/24 (rede aws ea-east-2)
10.120.3.0/24 (rede aws ea-east-2)
10.126.0.0/24 (rede Fortigate 01)
10.126.1.0/24 (rede Fortigate 02)
10.126.2.0/24 (rede Fortigate 03)

Repita os passos para “my-sg-02”

Liberamos aqui as seguintes redes
10.120.0.0/24 (rede aws ea-east-1)
10.120.2.0/24 (rede aws ea-east-2)
10.120.3.0/24 (rede aws ea-east-2)
10.126.0.0/24 (rede Fortigate 01)
10.126.1.0/24 (rede Fortigate 02)
10.126.2.0/24 (rede Fortigate 03)

Ficará desta forma

Agora vamos partir da nosso ambiente na AWS em us-east-2

Vamos as nossas VPCs
my-vpc-03 10.120.2.0/24
my-vpc-03 10.120.3.0/24

Nossas subnets

Nossos Route table, ja deixei associado nossas subnet as tabelas de rotas

Agora vamos criar nosso Transit Gateway em us-east-2

As opções são as mesmas

Name tag “tgw-02”
Description “Transit Gateway Ohio”
ASN “64530” esse será nosso ASN
Auto accept shared attachments *Deixe habilitado
O restante deixem como mostrado na figura abaixo

Nosso TGW

Agora vamos criar nosso Transit Gateways Attachment

Name tag “tgw-attch-02”
Transit gateway ID “escolha o que acabamos de criar”
Attachment type “Escolha VPC”
VPC attachment “Habilite DNS Support”
VPC ID “Escolha my-vpc-03”

Clique em criar

Repita os mesmos passos para attachment a “my-vpc-03”

Agora que temos o Transit Gateway criado e temos as VPC anexadas, vamos criar o roteamento para nossas VPCs (sa-east-1) (us-east-2) (rede Fortigate)

10.120.0.0/24 (rede aws sa-east-1) para nosso tgw
10.120.1.0/24 (rede aws sa-east-1) para nosso tgw
10.120.3.0/24 (rede aws us-east-2) para nosso tgw
10.126.0.0/24 (rede Fortigate) para nosso tgw
10.126.1.0/24 (rede Fortigate) para nosso tgw
10.126.2.0/24 (rede Fortigate) para nosso tgw

Repita os mesmos passos para “my-rote-table-02”

10.120.0.0/24 (rede aws sa-east-1) para nosso tgw
10.120.2.0/24 (rede aws sa-east-1) para nosso tgw
10.120.4.0/24 (rede aws us-east-2) para nosso tgw
10.126.0.0/24 (rede Fortigate) para nosso tgw
10.126.1.0/24 (rede Fortigate) para nosso tgw
10.126.2.0/24 (rede Fortigate) para nosso tgw

Até aqui temos essa infra em us-east-2

Agora em nossos SG, vamos liberar os trafego

Liberamos aqui as seguintes redes
10.120.0.0/24 (rede aws ea-east-1)
10.120.1.0/24 (rede aws ea-east-1)
10.120.3.0/24 (rede aws us-east-2)
10.126.0.0/24 (rede Fortigate 01)
10.126.1.0/24 (rede Fortigate 02)
10.126.2.0/24 (rede Fortigate 03)

Repita os passos para “my-sg-04”

10.120.0.0/24 (rede aws ea-east-1)
10.120.1.0/24 (rede aws ea-east-1)
10.120.3.0/24 (rede aws us-east-2)
10.126.0.0/24 (rede Fortigate 01)
10.126.1.0/24 (rede Fortigate 02)
10.126.2.0/24 (rede Fortigate 03)

Ficará desta forma

Calma ainda não acabou .rs…… agora vamos compartilhar nosso transit gateway de sa-east-1 com us-east-2, agora precisar pegar o ID do nosso transit gateway de us-east-2, anotem esse numero (não o meu mas sim o seu rs..)

Agora vamos voltar para sao paulo, em nosso transit gateway de sao paulo e vamos em transit gateway attchments, create transit gateway attchments

name tag “shared-tgw-ohio
transit gateway ID “nosso tgw de sao paulo”
Attchment Type “Peering Coonection”
Account “My Account”
Region “US East (Ohio) (us-east-2)
Transit Gateway ID “O ID que separamos do TGW de Ohio”
Clique em create

Se tudo deu certo, estamos neste ponto

Agora temos que aceitar o peering lá em Ohio

Estamos assim em Ohio

Vamos aceitar o peering

Selecione o transit gateway attchment, depois em actions, Accep transit gateway attachment

Mais um vez

Estamos assim em nosso transit gateway em ohio

Estamos assim em nosso transit gateway em são paulo

Até agora temos essa infraestrutura de rede na AWS em sa-east-1 (sao paulo) e us-east-2 (Ohio), o roteamento entre as regiões está sendo feito via “Transit Gateway”, temos rotas cadastradas e liberação em nossos SG.

Ainda não acabou ..rs….calma respira, estamos quase em 50%, simmmm isso mesmo 50% rs… ainda temos que criar o roteamente dentro do Transit Gateway em Sao Paulo e Ohio, mais é simples, bora lá.

Em “Transit Gateways, vamos em Transit gateway Route Tables

Temos este Route Table (Transit Gateway) “my-route-table-tgw”

Em Associations, veja que temos nossos anexos criados anteriormente

Agora vamos em “Routes”

Veja que temos ‘route’ para nossas VPC de sa-east-1, vamos adicionar rotas para as VPCs de us-east-2

Em create routre, CIDR “10.120.2.0/24 e escolha o attchment “Peering”, clique em create static route

Repita os passos para a segunda VPC de Ohio

Se tudo deu certo até agora, temos esse cenário:

Vamos aproveitar e fazer a mesma coisa no transit gateway de Ohio, ufa…..dá trabalho né….rs…., estamos quase lá…

Em Ohio (us-east-2), temos nosso route table transit gateway

Temos nossas associações

Agora vamos criar todas da mesma maneira que fizemos em sa-east-1, porém em us-east-2 iremos criar as rotas para a rede do Fortigate também, associando elas ao peering.

Se tudo correu bem, temos este cenário

Em us-east-2 (Ohio) tudo certo agora, vamos voltar para sa-east-1 (Sao Paulo)

Vamos partir para nossa VPN com Fortigate, em “Virtual Private Network (VPN), vamos criar um Customer Gateway

Name “cg-fgt”
Routing “Dynamic”
BGP ASN “65010” esta ASN será do nosso Fortigate
Cetificate ARN “Deixe como esta”
Device “Fortigate” este item não é obrigatório
Clique em “Create Customer Gateway”

Se tudo correu bem

Agora vamos voltar para nosso Transit Gateway Attchment em sa-east-1 e vamos anexar nossa VPN
Transit Gateway ID “escolha nosso transit gateway”
Attchment Type “VPN”
VPN Attchment “”Existing” escolha a que foi criada (customer gateway)
Routing Options “Dymanic BGP”
Enable Accleration “habilite”
O restante deixe como esta

Se tudo correu bem, temos este cenário, temos anexados em nosso transit gateway duas VPCs, um Peering e uma VPN.

Feito isso, nossa conexão Site-to-Site é criada automaticamente. Veja como ficou:
Temos transit gateway criado e cg criado

Temos aqui os detalhes dos Tunneis que estão DOWN (pois ainda não chegamos no fortigate)

Agora por fim e não menos importante (rs…) vamos para o fortigate. Antes disso precisamos pegar o arquivos na AWS para sabermos nossa PSK, pegamos ele em connections mesmo, fazer download e escolher Fortigate, feito download do arquivo, bora lá fazer as configurações.
Vamos criar nossos Tuneis Phase1 e Phase2

Phase1

Phase2

Agora vamos criar o Segundo Tunel

Phase1

Phase2

Se tudo correu bem, temos dois tuneis VPN

Agora vamos configura nosso BGP.

#Vamos fazer via CLI no prompt do Fortigate

##Aqui vamos configura as interfaces (VPN)
##As informações de configurações encontra-se no arquivo .txt que fizemos download do console da AWS


config system interface
    edit TunnelAWS01
        set ip 169.254.97.118 255.255.255.255
        set remote-ip 169.254.97.117 255.255.255.252
    next
    edit TunnelAWS02
        set ip 169.254.72.94 255.255.255.255
        set remote-ip 169.254.72.93 255.255.255.252
    next
end

Se tudo correu bem, temos essa saída:

E temos as configurações nas interfaces

Vamos adicionar essas Interfaces a nossa Zona “Cloud”, aconselho a trabalhar com zonas, isso facilita o trabalho administrativo.

Agora vamos criar as regras de Firewall, neste post criaremos regras de InBound e OutBound Any para facilitar o artigo, é claro que no ambiente de produção isso não deve acontecer (mas sabemos por ai que é assim que funciona rs…)

##Vamos criar as regras via CLI do Fortigate

#Criar regras de firewall
###Eu trabalho com Zonas, então Trust é minha LAN e UnTrust é minha WAN

config firewall policy
    edit 1
        set name Cloud-to-Trust
        set srcintf Cloud
        set dstintf Trust
        set srcaddr all
        set dstaddr all
        set action accept
        set schedule always
        set service ALL
    next
    edit 2
        set name Trust-to-Cloud
        set srcintf Trust
        set dstintf Cloud
        set srcaddr all
        set dstaddr all
        set action accept
        set schedule always
        set service ALL
end

Se tudo correu bem temos essa saída

Temos nossas regras criadas

Vamos ver se nossa VPN esta UP!. Nossos tuneis estão UP, Phase1 e Phase2

Porém nosso BGP ainda não esta UP!

Vamos configura o nosso anuncio de BGP para a AWS
Vamos fazer via CLI do Fortigate

#Configurando BGP

config router bgp
    set as 65010
    set router-id 20.201.30.224
    config neighbor
        edit 169.254.97.117
            set soft-reconfiguration enable
            set remote-as 64530
        next
    end
    config neighbor
        edit 169.254.72.93
            set soft-reconfiguration enable
            set remote-as 64530
        next
end

Se tudo correu bem

Agora vamos anunciar nossas rotas para AWS

Fortigate –> Network –> BGP
10.126.0.0/24
10.126.1.0/24
10.126.2.0/24
Se tudo correu bem temos essas rotas anunciadas.

E temos esses vizinhos configuradores

Vejam que com essas configurações nossas Rotas BGP para AWS já estão sendo recebidas

Vamos ver se na AWS nosso Transit Gateway ja esta recebendo nossas rotas anunciado pelo Fortigate? Vamos lá em “Transit Gateways” depois em “Transit Gateway Attchments”, vamos selecionar nosso transit gatewsy route table e em “routes”.
Vejam pela imagem abaixo que nossas redes anunciadas pelo Fortigate já estão aparecendo

Agora vamos ver se tudo isso que foi feito acima (Vamos combinar que dá um certo trabalho e um pouco de conhecimento) esta funcionando.

Agora fazer os testes a partir de uma VM que esta atras do Fortigate
IP: 10.126.0.132, a partir desta VM temos que conseguir chegar em todas as EC2 que estão na AWS, tanto em sa-east-1 (sao paulo) como em us-east-2 (ohio).
IPs de destinos de nossas EC2
my-ec2-01 IP 10.120.0.173
my-ed2-02 IP 10.120.1.221
Conforme imagem abaixo:

Vamos verificar a conectividade entre nossa rede 10.126.0.0/24 (Fortigate) e as redes da AWS (sao paulo) 10.120.0.0/24 e 10.120.1.0/24
1 teste OK

2 teste ok

Conseguimos conectividade para AWS sa-east-1, agora vamos para us-east-2.
IPs de destinos de nossas EC2
my-ec2-03 IP 10.120.2.164
my-ed2-04 IP 10.120.3.223
Conforme imagem abaixo:

Vamos verificar a conectividade entre nossa rede 10.126.0.0/24 (Fortigate) e as redes da AWS (sao paulo) 10.120.2.0/24 e 10.120.3.0/24
1 teste ok

2 teste ok

Imagem do Debug do Fortigate onde vemos os pacotes

Agora vamos ver o a conectividade da AWS para nossa rede Fortigate.
VMs fortigate
my-vm-01 IP 10.126.0.132
my-vm-02 IP 10.126.1.4
my-vm-03 IP 10.126.2.4
Vamos executar os teste a partir da my-ec2-01 IP 10.120.0.173
Estou dentro da VM my-ec2-01 IP 10.120.0.173
Vamos aos teste de conectividades para Fortigate
1 teste ok

2 teste ok

3 teste ok

Temos conectividade entre AWS sa-east-1 e as redes do Fortigate, agora vamos para us-east-1>
Estou dentro da my-ec2-03 em us-east-2 (Ohio) vamos ver se termos conectividade

1 teste ok

2 teste ok

3 teste ok

4 teste ok

Teste de da rede 10.126.1.0/24, conforme figura abaixo, teste de conectividade esta ok.

Com os testes concluímos nosso artigo, ufá, deu trabalho mas no final deu tudo certo.

Abaixo a topologia final.

Espero ter ajudado.

Links de referencias:

https://pt.wikipedia.org/wiki/Border_Gateway_Protocol
https://aws.amazon.com/pt/transit-gateway/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc
https://docs.aws.amazon.com/pt_br/vpc/latest/peering/create-vpc-peering-connection.html
https://pt.wikipedia.org/wiki/IPsec
https://docs.fortinet.com/document/fortigate-public-cloud/7.0.0/aws-administration-guide/506140/connecting-a-local-fortigate-to-an-aws-vpc-vpn
https://docs.aws.amazon.com/vpc/latest/tgw/transit-gateway-peering-scenario.html

Seja Feliz!!!!


Deploy Palo Alto HA Azure CLI (bash) Template ARM

Neste post iremos fazer o deploy de Palo Alto (Version 9) em HA “session synchronization”, utilizando um template modificado (adequado as minhas preferencias para este artigo de exemplo).
Nesta topologia/arquitetura de rede colocamos o Palo Alto para ser a rota default de todas as nossas vnets que estão no azure (neste exemplo somente “Trust”, mas nada impede de colocar varias redes com “Peering”) com isso toda entrada ou saida de dados passa obrigatóriamente pelo Palo Alto, essa arquitetura não esta certa nem errada, ai vai do compliance de cada empresa, time de segurança, time de rede e claro do orçamento de cada um. Mas isso não siginifica que penso como ambiente OnPremises somente, que não penso em nuvem, isso é somente uma arquitetura/topologia que muitas empresas que estão em Cloud (Azure,AWS,GCP) utilizam.

Agora vamos colocar a mão na massa.

Nos teremos os seguintes componentes:

2x VMs (PAN OS) Standard D3 v2 – Availability zone 1
8x Interfaces de rede (4 para cada VM) denomindas eth0/1/2/3, eth0=interface management, eth1=interface UnTrust, eth2= Interface Trust e eth3=interface HA
1x Vnet com CIDR 10.110.0.0/22 (aqui vai da sua rede e crescimento previsto)
1x Network Security Group (anexado a snet mgmt)
2x IPs Publicos (uma para cada VM anexado a eth1 para gerencia), este depende do seu acesso a rede.
3x IPs Publicos, 1 para NAT OUTBOUND, 1 para NAT INBOUND AppGW e 1 para NAT INBOUND JUMP
2x Discos HDD (um para cada VM)

Vamos as nomenclaturas, utilizei a recomendada pela MS Azure link
vmfwedge01
vmfwedge02
pip-vmfwedge001-shared-brazilsouth-mgmt
pip-vmfwedge002-shared-brazilsouth-mgmt
pip-fw-edge-shared-brazilsouth-wan-01
pip-fw-edge-shared-brazilsouth-wan-02
pip-fw-edge-shared-brazilsouth-wan-03
nsg-fw-edge-shared-brazilsouth
nic-fw-edge-vmfwedge001-shared-brazilsouth-eth0
nic-fw-edge-vmfwedge001-shared-brazilsouth-eth1
nic-fw-edge-vmfwedge001-shared-brazilsouth-eth2
nic-fw-edge-vmfwedge001-shared-brazilsouth-eth3
nic-fw-edge-vmfwedge002-shared-brazilsouth-eth0
nic-fw-edge-vmfwedge002-shared-brazilsouth-eth1
nic-fw-edge-vmfwedge002-shared-brazilsouth-eth2
nic-fw-edge-vmfwedge002-shared-brazilsouth-eth3
vmfwedge001_OsDisk_1_xxxxx
vmfwedge002_OsDisk_1_xxxxx
vnet-fw-edge-shared-brazilsouth

Aqui os links para baixar os templates utlizados neste artigo

No arquivo acima teremos uma template.json e dois parameters.jons

No arquivo “parametersFile.json” nos temos todas as referencias para criação da VM, Vnet, RG, etc….
vamos a uma preve explicação sobre o template

Linha 9: IP para liberação de acesso a snet de mgmt (para liberar somente seu bloco coloque neste formato XXX.XXX.XXX.XXX/XX), para liberar tudo colocar 0.0.0.0/0, mas cuidado, isso libera acesso total a interface mgmt do palo alto, não recomendo deixar “any”.
Linha 12: nome do NSG a ser utilizado na snet de mgmt, item obrigatório
Linha 15: Não precisa alterar
Linha 18: Nome da VM (Virtual machine) pode usar a sua escolha, recomendo se alterar esse nome, para alterar os nomes das interfaces de rede para ficar tudo no mesmo padrão.
Linha 21: ultima versão do palo alto, neste caso a 9
Linha 24: Site da VM, neste exemplo “Standard_D3_v2”, pois não iremos precisar de mais que 4 interfaces de rede
Linha 27:: Nome da Vnet a ser criada para utilização no Palo Alto
Linha 33: CIDR da rede neste exemplo “10.110.0.0/22”
Linha 36: nome do Resource Group, neste exemplo “rg-fw-edge-shared-brazilsouth”, pode ser alterado, porém será necessário alterar no script bash abaixo
Linha 39: nome da snet de mgmt snet-fw-edge-shared-brazilsouth-00
Linha 42: nome da snet de UnTrus snet-fw-edge-shared-brazilsouth-01
Linha 45: nome da snet de Trust snet-fw-edge-shared-brazilsouth-02
Linha 48: CIDR snet mgmt 10.110.252.0/25
Linha 51: CIDR snet UnTrust 10.110.252.128/25
Linha 54: CIDR snet Trust 10.110.253.0/25

Agora mais alguns parametros

Linha 57: deixe desta forma, pois iremos utilizar usuário e senha para conectar no Palo Alto
Linha 60: nome do usuário admin, neste exemplo FWSYS (fica a seu critério)
Linha 63: senha, fica a seu critério
Linha 69: nome do resource group a ser utilizado, neste exemplo “rg-fw-edge-shared-brazilsouth”, ele será criado pelo script logo abaixo.
Linha 75: IP Publico da Interface de MGMT, neste exemplo “pip-vmfwedge001-shared-brazilsouth-mgmt”, será criado pelo script logo abaixo, se alterar o nome será necessário alterar no script bash.
Linha 78: Static para utilizar IP fixo
Linha 83: muito importante, neste linha difinimos o “Availability zone”, neste exemplo “1”
As demais linha não precisam se preocupar.

Agora vamos para o arquivos “parametersFiles2.json”

Basicamente deve ser alterado as linhas
Linha 18: nome da vm neste exemplo “vmfwedge02”

Linha 75: nome do IP publico da interface de MGMT neste exemplo “pip-vmfwedge002-shared-brazilsouth-mgmt”

Pronto agora vamos ao deploy via bash (CLI Azure)

Será necessário deixar os arquivos dentro de uma mesma pasta/local

########Declarando variaveis

##Declarando Variaveis (Obrigatório)

###Declarando Variaveis Subscriptions (Nome da sua Subscription Azure)
export Subscription_Name="Santana Corp"

###Variaveis da VM (nomes das VM, igual do template)
export VM_Name_01='vmfwedge001'
export VM_Name_02='vmfwedge002'

###Declarando Variaveis Resource Groups
export RG="rg"
export Name_01="fw-edge"
export Environment="shared"
export Number="0"
export Location_00="brazilsouth"
export RG_Name_FULL_01="${RG}"-"${Name_01}"-"${Environment}"-"${Location_00}"

###Declarando Variaveis Região
export Location="brazilsouth"

###Declarando Variaveis de Rede (Vnet) (Igual do template)
export Vnet="vnet"
export Vnet_Name_FULL="${Vnet}"-"${Name_01}"-"${Environment}"-"${Location}"
export CIDR_01="10.110.252.0/22"
export Subnet_Name_00="snet"-"${Name_01}"-"${Environment}"-"${Location}"-"${Number}"0
export Subnet_Name_01="snet"-"${Name_01}"-"${Environment}"-"${Location}"-"${Number}"1
export Subnet_Name_02="snet"-"${Name_01}"-"${Environment}"-"${Location}"-"${Number}"2
export Subnet_Name_03="snet"-"${Name_01}"-"${Environment}"-"${Location}"-"${Number}"3
export Subnet_Name_04="snet"-"${Name_01}"-"${Environment}"-"${Location}"-"${Number}"4
export Subnet_Name_05="snet"-"${Name_01}"-"${Environment}"-"${Location}"-"${Number}"5
export Subnet_Name_06="snet"-"${Name_01}"-"${Environment}"-"${Location}"-"${Number}"6
export Subnet_Name_07="snet"-"${Name_01}"-"${Environment}"-"${Location}"-"${Number}"7
export prefix_00="10.110.252.0/25"
export prefix_01="10.110.252.128/25"
export prefix_02="10.110.253.0/25"
export prefix_03="10.110.253.128/25"
export prefix_04="10.110.254.0/25"
export prefix_05="10.110.254.128/25"
export prefix_06="10.110.255.0/25"
export prefix_07="10.110.255.128/25"

###Declarando variaveis da interfaces network
export Interface_NIC='nic'
export Interface_Name="${Name_01}"
export Interface_Environment="${Environment}"
export Interface_Location="${Location_00}"
export Interface_ETH='eth'
export Interface_00='0'
export Interface_01='1'
export Interface_02='2'
export Interface_03='3'
export Interface_04='4'
export Interface_05='5'
export Interface_06='6'
export Interface_07='7'
export Interface_Name_Full_00="${Interface_NIC}"-"${Interface_Name}"-"${VM_Name_01}"-"${Interface_Environment}"-"${Interface_Location}"-"${Interface_ETH}""${Interface_00}"
export Interface_Name_Full_01="${Interface_NIC}"-"${Interface_Name}"-"${VM_Name_01}"-"${Interface_Environment}"-"${Interface_Location}"-"${Interface_ETH}""${Interface_01}"
export Interface_Name_Full_02="${Interface_NIC}"-"${Interface_Name}"-"${VM_Name_01}"-"${Interface_Environment}"-"${Interface_Location}"-"${Interface_ETH}""${Interface_02}"
export Interface_Name_Full_03="${Interface_NIC}"-"${Interface_Name}"-"${VM_Name_01}"-"${Interface_Environment}"-"${Interface_Location}"-"${Interface_ETH}""${Interface_03}"
export Interface_Name_Full_04="${Interface_NIC}"-"${Interface_Name}"-"${VM_Name_01}"-"${Interface_Environment}"-"${Interface_Location}"-"${Interface_ETH}""${Interface_04}"
export Interface_Name_Full_05="${Interface_NIC}"-"${Interface_Name}"-"${VM_Name_01}"-"${Interface_Environment}"-"${Interface_Location}"-"${Interface_ETH}""${Interface_05}"
export Interface_Name_Full_06="${Interface_NIC}"-"${Interface_Name}"-"${VM_Name_01}"-"${Interface_Environment}"-"${Interface_Location}"-"${Interface_ETH}""${Interface_06}"
export Interface_Name_Full_07="${Interface_NIC}"-"${Interface_Name}"-"${VM_Name_01}"-"${Interface_Environment}"-"${Interface_Location}"-"${Interface_ETH}""${Interface_07}"

#### VM02
export Interface_Name_Full_13="${Interface_NIC}"-"${Interface_Name}"-"${VM_Name_02}"-"${Interface_Environment}"-"${Interface_Location}"-"${Interface_ETH}""${Interface_00}"
export Interface_Name_Full_14="${Interface_NIC}"-"${Interface_Name}"-"${VM_Name_02}"-"${Interface_Environment}"-"${Interface_Location}"-"${Interface_ETH}""${Interface_01}"
export Interface_Name_Full_15="${Interface_NIC}"-"${Interface_Name}"-"${VM_Name_02}"-"${Interface_Environment}"-"${Interface_Location}"-"${Interface_ETH}""${Interface_02}"
export Interface_Name_Full_08="${Interface_NIC}"-"${Interface_Name}"-"${VM_Name_02}"-"${Interface_Environment}"-"${Interface_Location}"-"${Interface_ETH}""${Interface_03}"
export Interface_Name_Full_09="${Interface_NIC}"-"${Interface_Name}"-"${VM_Name_02}"-"${Interface_Environment}"-"${Interface_Location}"-"${Interface_ETH}""${Interface_04}"
export Interface_Name_Full_10="${Interface_NIC}"-"${Interface_Name}"-"${VM_Name_02}"-"${Interface_Environment}"-"${Interface_Location}"-"${Interface_ETH}""${Interface_05}"
export Interface_Name_Full_11="${Interface_NIC}"-"${Interface_Name}"-"${VM_Name_02}"-"${Interface_Environment}"-"${Interface_Location}"-"${Interface_ETH}""${Interface_06}"
export Interface_Name_Full_12="${Interface_NIC}"-"${Interface_Name}"-"${VM_Name_02}"-"${Interface_Environment}"-"${Interface_Location}"-"${Interface_ETH}""${Interface_07}"

###Variaveis de IPs Publicos
export IP_01="pip"
export ZONE="1"
export IP_02="mgmt"
export SKU="Standard"
export Number_01="01"
export Number_02="02"
export Number_03="03"
export IP_03="wan"
export Name_Object01="fw-edge"

###Variaveis da ifconfig eth
export IFCONFIG_Name="ipconfig"
export IFCONFIG_Number01="1"
export IFCONFIG_Number02="2"
export IFCONFIG_Number03="3"
export IFCONFIG_Number04="4"

###Variaveis interface de rede
export INT_01="nic"
export INT_02="${Name_01}"
export INT_03="${VM_Name_01}"
export INT_11="${VM_Name_02}"
export INT_04="${Environment}"
export INT_05="${Location_00}"
export INT_06="eth"
export INT_07="0"
export INT_08="1"
export INT_09="2"
export INT_10="3"
export INT_Name_01="${INT_01}"-"${INT_02}"-"${INT_03}"-"${INT_04}"-"${INT_05}"-"${INT_06}""${INT_08}"
export INT_Name_02="${INT_01}"-"${INT_02}"-"${INT_03}"-"${INT_04}"-"${INT_05}"-"${INT_06}""${INT_09}"
export INT_Name_03="${INT_01}"-"${INT_02}"-"${INT_03}"-"${INT_04}"-"${INT_05}"-"${INT_06}""${INT_07}"
export INT_Name_04="${INT_01}"-"${INT_02}"-"${INT_11}"-"${INT_04}"-"${INT_05}"-"${INT_06}""${INT_07}"


###Declarando Variaveis Tags
export Description="Departamento"
export Value_Description="Redes/Telecom/Segurança/Infraestrutura"
export Cost_Center="Centro de Custo"
export Cost_Center_Value="Redes/Telecom/Segurança/Infraestrutura"
export Support_Description_Description="E-mail Suporte"
export Support_Description_Value="[email protected]"

####Selecionar subscription
az account set --subscription "${Subscription_Name}"

####Criando Resource Group Firewall EDGE Shared
az group create -n "${RG_Name_FULL_01}" -l "${Location}" --tags "${Description}"="${Value_Description}" "${Cost_Center}"="${Cost_Center_Value}" "${Support_Description_Description}"="${Support_Description_Value}"

###Create IPs Publicos
az network public-ip create -g "${RG_Name_FULL_01}" -n "${IP_01}"-"${VM_Name_01}"-"${Environment}"-"${Location_00}"-"${IP_02}" --sku "${SKU}" --zone "${ZONE}"
az network public-ip create -g "${RG_Name_FULL_01}" -n "${IP_01}"-"${VM_Name_02}"-"${Environment}"-"${Location_00}"-"${IP_02}" --sku "${SKU}" --zone "${ZONE}"
az network public-ip create -g "${RG_Name_FULL_01}" -n "${IP_01}"-"${Name_Object01}"-"${Environment}"-"${Location_00}"-"${IP_03}"-"${Number_01}" --sku "${SKU}" --zone "${ZONE}"
az network public-ip create -g "${RG_Name_FULL_01}" -n "${IP_01}"-"${Name_Object01}"-"${Environment}"-"${Location_00}"-"${IP_03}"-"${Number_02}" --sku "${SKU}" --zone "${ZONE}"
az network public-ip create -g "${RG_Name_FULL_01}" -n "${IP_01}"-"${Name_Object01}"-"${Environment}"-"${Location_00}"-"${IP_03}"-"${Number_03}" --sku "${SKU}" --zone "${ZONE}"

####Criando Virtual Network (Vnet)
az network vnet create -g "${RG_Name_FULL_01}" -n "${Vnet_Name_FULL}" --address-prefix "${CIDR_01}" -l $Location --tags "${Description}"="${Value_Description}" "${Cost_Center}"="${Cost_Center_Value}" "${Support_Description_Description}"="${Support_Description_Value}"

####Criando Subnet
az network vnet subnet create -g "${RG_Name_FULL_01}" --vnet-name "${Vnet_Name_FULL}" -n "${Subnet_Name_00}" --address-prefixes "${prefix_00}"
az network vnet subnet create -g "${RG_Name_FULL_01}" --vnet-name "${Vnet_Name_FULL}" -n "${Subnet_Name_01}" --address-prefixes "${prefix_01}"
az network vnet subnet create -g "${RG_Name_FULL_01}" --vnet-name "${Vnet_Name_FULL}" -n "${Subnet_Name_02}" --address-prefixes "${prefix_02}"

####Deploy Palo Alto Template
az deployment group create -g "${RG_Name_FULL_01}" --template-file template.json --parameters @parametersFile.json

###Desalocando a VM (aqui iremos desligar/desalocar a VM)
az vm deallocate -g "${RG_Name_FULL_01}" -n "${VM_Name_01}"

####Criando restantes das Subnets
az network vnet subnet create -g "${RG_Name_FULL_01}" --vnet-name "${Vnet_Name_FULL}" -n "${Subnet_Name_03}" --address-prefixes "${prefix_03}"
###az network vnet subnet create -g "${RG_Name_FULL_01}" --vnet-name "${Vnet_Name_FULL}" -n "${Subnet_Name_04}" --address-prefixes "${prefix_04}"
###az network vnet subnet create -g "${RG_Name_FULL_01}" --vnet-name "${Vnet_Name_FULL}" -n "${Subnet_Name_05}" --address-prefixes "${prefix_05}"
###az network vnet subnet create -g "${RG_Name_FULL_01}" --vnet-name "${Vnet_Name_FULL}" -n "${Subnet_Name_06}" --address-prefixes "${prefix_06}"
###az network vnet subnet create -g "${RG_Name_FULL_01}" --vnet-name "${Vnet_Name_FULL}" -n "${Subnet_Name_07}" --address-prefixes "${prefix_07}"

####Criando interfaces de rede v2 (interface de rede HA eth3)
az network nic create -g "${RG_Name_FULL_01}" --vnet-name "${Vnet_Name_FULL}"  --subnet "${Subnet_Name_03}" -n 

#### Adicionando interfaces Network
az vm nic add --nics "${Interface_Name_Full_03}" -g "${RG_Name_FULL_01}" --vm-name "${VM_Name_01}"

###Iniciando a VM01
az vm start -g "${RG_Name_FULL_01}" -n "${VM_Name_01}"

###################
####Deploy Palo Alto Template segunda VM02
az deployment group create -g "${RG_Name_FULL_01}" --template-file template.json --parameters @parametersFile2.json

###Desalocando a VM02
az vm deallocate -g "${RG_Name_FULL_01}" -n "${VM_Name_02}"

####Criando interfaces de rede v2 (VM02)
az network nic create -g "${RG_Name_FULL_01}" --vnet-name "${Vnet_Name_FULL}"  --subnet "${Subnet_Name_03}" -n "${Interface_Name_Full_08}" --ip-forwarding

#### Adicionando interfaces Network vm2
az vm nic add --nics "${Interface_Name_Full_08}" -g "${RG_Name_FULL_01}" --vm-name "${VM_Name_02}"

###Inciado a VM02
az vm start -g "${RG_Name_FULL_01}" -n "${VM_Name_02}"

###Anexando NSG SNET 00
az network vnet subnet update -g "${RG_Name_FULL_01}" -n "${Subnet_Name_00}" --vnet-name "${Vnet_Name_FULL}" --network-security-group "nsg-fw-edge-shared-brazilsouth"

###Configurando IPs interface eth1
az network nic ip-config create -g "${RG_Name_FULL_01}" -n "${IFCONFIG_Name}""${IFCONFIG_Number02}" --nic-name "${INT_Name_01}" --public-ip-address "${IP_01}"-"${Name_Object01}"-"${Environment}"-"${Location_00}"-"${IP_03}"-"${Number_01}"
az network nic ip-config create -g "${RG_Name_FULL_01}" -n "${IFCONFIG_Name}""${IFCONFIG_Number03}" --nic-name "${INT_Name_01}" --public-ip-address "${IP_01}"-"${Name_Object01}"-"${Environment}"-"${Location_00}"-"${IP_03}"-"${Number_02}"
az network nic ip-config create -g "${RG_Name_FULL_01}" -n "${IFCONFIG_Name}""${IFCONFIG_Number04}" --nic-name "${INT_Name_01}" --public-ip-address "${IP_01}"-"${Name_Object01}"-"${Environment}"-"${Location_00}"-"${IP_03}"-"${Number_03}"

##Declaranado Variaveis para Fixar IP (eht1)
NIC_ID001=$(az network nic show --name "${INT_Name_01}" -g "${RG_Name_FULL_01}" --query id --output tsv)

##Declarando varivel para utilizar IP Fixo existente (eht1)
IP_ID001=$(az network nic ip-config show -g "${RG_Name_FULL_01}" -n "${IFCONFIG_Name}""${IFCONFIG_Number02}" --nic-name "${INT_Name_01}" --query privateIpAddress --output tsv)
IP_ID002=$(az network nic ip-config show -g "${RG_Name_FULL_01}" -n "${IFCONFIG_Name}""${IFCONFIG_Number03}" --nic-name "${INT_Name_01}" --query privateIpAddress --output tsv)
IP_ID003=$(az network nic ip-config show -g "${RG_Name_FULL_01}" -n "${IFCONFIG_Name}""${IFCONFIG_Number04}" --nic-name "${INT_Name_01}" --query privateIpAddress --output tsv)

###Fixando o IP (eht1)
az network nic ip-config update -g "${RG_Name_FULL_01}" --nic-name "${INT_Name_01}" -n "${IFCONFIG_Name}""${IFCONFIG_Number02}" --private-ip-address $IP_ID001
az network nic ip-config update -g "${RG_Name_FULL_01}" --nic-name "${INT_Name_01}" -n "${IFCONFIG_Name}""${IFCONFIG_Number03}" --private-ip-address $IP_ID002
az network nic ip-config update -g "${RG_Name_FULL_01}" --nic-name "${INT_Name_01}" -n "${IFCONFIG_Name}""${IFCONFIG_Number04}" --private-ip-address $IP_ID003

###Configurando IPs interface eth2
az network nic ip-config create -g "${RG_Name_FULL_01}" -n "${IFCONFIG_Name}""${IFCONFIG_Number02}" --nic-name "${INT_Name_02}"

##Declaranado Variaveis para Fixar IP (eht2)
NIC_ID002=$(az network nic show --name "${INT_Name_02}" -g "${RG_Name_FULL_01}" --query id --output tsv)

##Declarando varivel para utilizar IP Fixo existente (eht2)
IP_ID004=$(az network nic ip-config show -g "${RG_Name_FULL_01}" -n "${IFCONFIG_Name}""${IFCONFIG_Number02}" --nic-name "${INT_Name_02}" --query privateIpAddress --output tsv)

###Fixando o IP (eht1)
az network nic ip-config update -g "${RG_Name_FULL_01}" --nic-name "${INT_Name_02}" -n "${IFCONFIG_Name}""${IFCONFIG_Number02}" --private-ip-address $IP_ID004

##Declaranado Variaveis para Fixar IP VM01(eht0)
NIC_ID005=$(az network nic show --name "${INT_Name_03}" -g "${RG_Name_FULL_01}" --query id --output tsv)

##Declarando varivel para utilizar IP Fixo existente (eht0)
IP_ID005=$(az network nic ip-config show -g "${RG_Name_FULL_01}" -n "${IFCONFIG_Name}""${IFCONFIG_Number01}" --nic-name "${INT_Name_03}" --query privateIpAddress --output tsv)

###Fixando o IP (eht0)
az network nic ip-config update -g "${RG_Name_FULL_01}" --nic-name "${INT_Name_03}" -n "${IFCONFIG_Name}""${IFCONFIG_Number01}" --private-ip-address $IP_ID005

############
##Declaranado Variaveis para Fixar IP VM02(eht0)
NIC_ID006=$(az network nic show --name "${INT_Name_04}" -g "${RG_Name_FULL_01}" --query id --output tsv)

##Declarando varivel para utilizar IP Fixo existente (eht0)
IP_ID006=$(az network nic ip-config show -g "${RG_Name_FULL_01}" -n "${IFCONFIG_Name}""${IFCONFIG_Number01}" --nic-name "${INT_Name_04}" --query privateIpAddress --output tsv)

###Fixando o IP (eht0)
az network nic ip-config update -g "${RG_Name_FULL_01}" --nic-name "${INT_Name_04}" -n "${IFCONFIG_Name}""${IFCONFIG_Number01}" --private-ip-address $IP_ID006

Agora nos temos nos objetos criados, vamos acessar via IP da interface MGMT do VM01, sempre com https://XXX.XXX.XXX.XXX
A tela inicial apresentada

Agora vamos as configurações para Palo Alto

1-) Interfaces de rede, clique em “Network” depois “Interfaces”

Agora vamos as configurações
Clique em “ethernet1/1” será nossa interface de “UnTrust”

Em interface Type altere para “Layer3”, depois em IPV4 add o IP da interface eth1, neste caso 10.110.252.132, 10.110.252.134,10.110.252.135,10.110.252.136

Clique OK

Agora vamos para “ethernet1/2” nossa interface “Trust”

Mesmo procedimentos, porém com os IPs 10.110.253.4 e 10.110.253.6

Agora iremos na ethernet1/3, nossa interface de HA

Nesta somente deixa o “Interface Type” como “HA” e clique em “OK”

Agora vamos criar nossas “Zonas”

Clique em “Zone” e depois em “add”

Primeira zona “UnTrust”, Type “L3” interface “ethernet1/1”, clique em “ok”

Segunda “zona”

Name: “Trust” Type “Layer3” interfaces “ethernet1/2”, clique em “ok”

Vamos criar nossa VR (Virtual Routers), vá em “Network” depois em “Virtual Routers”

Vamos utilizar a “Default”, clique em “Default”

Route Settings, Interfaces Add

Depois clique em Static Routes, add

Name: UnTrust (Nossa zona não segura “Internet”
Destionation: 0.0.0.0/0 tudo que ele não conhecer irá mandar para esta ROTA
Interface: “ethernet1/1”
Next Hop: IP Address
IP: 10.110.252.129
Agora pórque este IP? Vamos a explicação, a subnet (snet) utilizada nesta interface foi a: “snet-fw-edge-shared-brazilsouth-01” que tem seu CIDR “10.110.252.128/25” ou seja:

Temos o ID da rede 10.110.252.128/25
Inicia em 10.110.252.129 e vai até 10.110.252.254
Brodcast 10.110.252.255
No Azure ele toma para si (se apodera) dos 3 primeiros IPs, neste exemplo:
10.110.252.129
10.110.252.130
10.110.252.131

O IP 10.110.252.132 esta em nossa interface eth1, por isso o gateway neste snet (Subnet) é o primeiro IP da rede neste caso 10.110.252.129, clique em OK

Vamos add nossa rota interna (Nossa rede interna) Neste exemplo, somente iremos add a snet (subnet snet-fw-edge-shared-brazilsouth-02 10.110.253.0/25)

Aqui a lógica para o IP é a mesma

Agora vamos efetivar nossas configurações, clique em “Commit”

Agora veja em “network”

As interfaces estão “up”

Agora vamos as configurações na segunda VM (caixa)

Vamos em “network” e depois em “interfaces”, neste só iremos configurar isso nada mais.

Em “ethernet1/1”

Interface Type: Layer3
IP: 10.110.252.133, seguindo nossa CIDR:
snet-fw-edge-shared-brazilsouth-01 10.110.252.128/25, clique em OK

Em “ethernet1/2”

Interface Type: layer3
IP: 10.110.253.5 seguindo nossa CIDR
snet-fw-edge-shared-brazilsouth-02 10.110.253.0/25

Vamos em “ethernet1/3”

Interface Type: “HA”, clique em ok

Vamos efetivar nossas configurações, clique em “Commit”

Vejam as interfaces “up”

Agora vamos configurar nosso HA, para isso será necessário criar um “Service Principal” (App Registration no Azure)

Segue link de referencia

https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal

Veja o permissionamento que este App teve ter

Referencia

https://docs.paloaltonetworks.com/vm-series/9-0/vm-series-deployment/set-up-the-vm-series-firewall-on-azure/configure-activepassive-ha-for-vm-series-firewall-on-azure.html

Neste exemplo que deixei como “Contributor”

Com nosso AppRegistration criado, vamos add em nossa Palo Alto, VM01
Vamos em “Devices”

VM Series

Azure HA Configuration, clique na roda dentada

Vamos iniciar o preenchimento

Resource Group: é o que criamos em nosso script, clique em validade

Se tudo ocorreu certo, deve recever essa mensagem

Clique em “close” depois em “ok”

Continuemos a nossa configuração de HA

Em “High Availability”

Setup, clique na roda dentada

Habilite “Enable HA”
Group ID “1”
Description “HA Azure”
Mode “Active Passive”
Habilite “Enable Config Sync”
Peer HA1 IP Address “10.110.252.5” *IP da interfaces mgmt da segunda VM”
Clique em “ok”

Em “Data Link (HA2), clique na roda dentada


Seguindo a mesma lógica para endereçamento IP Azure

Port “ethernet1/3
IPv4 “10.110.253.132” IP da interface eth3 da VM01
Netmask “255.255.255.128” mascara da snet
Gateway “10.110.253.129” gateway da snet
Clique em “ok”

Se tudo deu certo, teremos esta tela

Vamos efetivar nossas configurações

Clique em “Commit”

Agora vamos em “Dashbord”

Vamos add “Widgets” de HA

Estamos quase lá

Agora vamos confirar a segunda VM

Na segunda VM vamos em “Devices” “High Availability”

Setup, clique na roda dentada

Habilite “Enable HA”
Group ID “1”
Description “HA Azure”
Mode “Active Passive”
Habilite “Enable Config Sync”
Peer HA1 IP Address: 10.110.252.4 *IP da interface mgmt da vm01
Clique em OK

Em “Data Link (HA2), clique na roda dentada

Port “ethernet1/3”
IPv4 “10.110.253.133” ip da inteface eth3
Netmask: 255.255.255.128
Gateway “10.110.253.129”

Seguindo a mesma lógica de endereçamento azure

Clique em OK

Agora vamos efetivas nossas configurações, clique em “Commit”

Em “Dashbord”

Vamos add “Widgets” HA

Veja como esta

Agora vamos na VM01 em Dashbord

Vamos fazer o Sync, clique em “Sync to peer”

Clique em “yes”

Pronto, nossa HA esta completo

Veja em Dashbord da VM01 e VM02

Agora vamos criar uma regra de NAT para saída (OUTBOUND) para internet

Vamos em “Policies” depois em “Nat” e clique em ADD

General Name “Trust-To-UnTrust”
Description “NAT para acesso a internet utilizando o IP Publico 20.206.248.193” este IP esta na eth1
Tags “NAT, UnTrust, Internet”
NAT Type “ipv4”

Original Packet

Souce Zone “Trust” nossa rede interna
Destination Zone “UnTrust” Internet
Destination Interface “ethernet1/1” nossa interface UnTrust
Source Address “10.110.253.0/25” neste momento somente a “snet” “Trust”
Destionation Address “Any” neste exemplo, fica a seu critério esta liberação

Translated Packet

Translation Type “Dynamic IP And Port”
Address Type “Interface Address”
Interface “ethernet1/1” nossa interface “UnTrust” onde temos algums IPs
IP Address “10.110.252.134” este IP esta atribuido a interface eth1, no azure não atribuimos o IP publico diretamente e sim o privado que tem o publico associado

Veja na interface eth1 o IP 10.110.252.134 esta associado ao IP 20.206.248.193

Clique em “ok”

Agora vamos criar uma regra de saida no firewall para acessar a internet

Vamos em “Security”, clique em “add”

General
Name “Trust-To-UnTrust”
Rule Type “universal (default)
Description “Regra de acesso a internet somente http e https”
Tags “acesso a internet, internet, rule, security, police”

Agora em Source
Source Zone “Trust”
Source Address “10.110.253.0/25”

Não itemos utilizar “User”, vamos direto para “Destination”
Destination Zone “UnTrust”
Destination Address “Any” fica a seu critério liberar “any” ou não

Agora vamos para “Application”

Principio de segurança, mas fica a seu critério liberar ou não
Application “ssl” “telnet” “web-browsing”

Vamos para “Service/URL Category”

Mais uma vez fica a seu critério tal liberação
Service “http” “https”
URL Category “internet-communication-and-telephony” “online-storage-and-backup” “web-hosyting”

Vamos para action

Action “Allow”

Log Setting “Log at Session Start”
Log Setting “Log at Session End”

Clique em “ok”

Agora vamos efetivar nossas configurações, clique em “commit”

Agora vamos dar continuidade em nossa configuração da arquitetura/topologia de rede Azure

Agora precisamos criar um arquivo de roteamento (Route Table”

Criar Azure

Escolha sua subscription
Resource Group
Region
Name
Propagate gateway routes “yes”

Agora vamos configurar nosso arquivo de roteamento

Vamos criar uma unica rota, pois nesta arquitetura/topologia tudo passa pelo Palo Alto em HA

Name “Default”
Address Prefix “0.0.0.0/0”
Virtual Applicance “10.110.253.6” segundo IP da nossa interface eth2 (Trust)

Agora vamos add um subnet (snet), neste exemplo somente a:
vnet-fw-edge-shared-brazilsouth 10.110.253.0/25

Nosso arquivo de roteamento ficou desta forma

Agora qualquer solicitação da snet 10.110.253.0/25 vai para “Trust” no palo alto para ser tratada (liberado ou não), um simples “ping” terá que ter regra para liberação.

Neste exemplo liberamos somente o acesso a internet utilizar http e https

*Toda configuração feita na VM01 replica para VM02″

Veja como esta nossa arquitetura/topologia

Agora vamos criar uma regra de NAT para INBOUND, isso mesmo, vamos publica uma aplicação neste exemplo denomina “Site” que esta atrás de um “Application Gateway” (Rede Interna).

Vamos lá (A parte de criação/configuração do AppGw não será apresentanda aqui, pode ser usar um load balance tradicional)

Vamos ao objetos

Application Gateway (IP: 10.110.253.126)

VMs com a Aplicação denominada “Site6”

VMWEBBR01 10.110.253.10
VMWEBBR02 10.110.253.10
VMWEBBR03 10.110.253.11

Vamos as regras no Palo Alto, em “Policies” “Nat”, clique em “add

Vamos criar um NAT de INBOUND

Name “UnTrust-To-AppGW”
Description “Regra para publicação da app “Site”
Tags “UnTrust”, “NAT”, “Internet”

Original Packet

Source Zone “Untrust”
Destination Zone “UnTrus”
Destination Interface “Any”
Source Address “Any” pois estamos publicando para internet
Destination Address “10.110.252.135” IP da interface eth1 (segundo IP com IP publico)

Translated Packet

Translation Type “Static IP”
Translation Address “10.110.253.126” IP do AppGw
Translation port “” deixar em branco (NAT 1:1)

Clique em “ok”

Se tudo esta correto verá tera essa visão

Agora vamos criar a regra de seguranã/firewall

Em “Seguriry”, add

General

Name “UnTrus-To-AppGw”
Rule Type “universal”
Description “Regra para publicação da aplicação Site6”
Tags “UnTrust” “Internet” “Rule”

Source

Source Zone “UnTrust”
Source Address “Any” publicando para internet

Destination

Destination “Trust”
Destionation Address “10.110.253.135” IP que esta na interface eth1 com IP publico

Application

Applications “web-browsing” principio de segurança

Servive/URL Category

Service “http’ e “https” “principio de segurança”
URL Category “any”

Action

Action “Allow”
log Setting “Log at Session Start” “Log at Session End”

Clique em “ok”

Se tudo correu bem esta vendo esta tela

Agora vamos efetivar nossas configurações, clique em “Commit”

Pronto, agora qual alguém chamar nossa aplicação “site6” https://site6.supportbrazil.com irá para interface eth1 do nosso Palo Alto, dentro dele fará um NAT para nosso AppGw com IP 10.110.253.126 e a partir dai o AppGw irá enviar os pacotes para as VMs.

VMWEBBR01 10.110.253.10
VMWEBBR02 10.110.253.10
VMWEBBR03 10.110.253.11

Veja nosso arquitetura/topologia

E se por algum motivo a VM01 (Caixa principal do Palo Alto) ficar indisponivel, todos os IPs secundarios das interfaces ETH1 e ETH2 seram migrados automaticamente para a caixa secundaria

Links de referencias

https://docs.paloaltonetworks.com/vm-series/9-0/vm-series-deployment/set-up-the-vm-series-firewall-on-azure/configure-activepassive-ha-for-vm-series-firewall-on-azure.html

https://docs.paloaltonetworks.com/pan-os/7-1/pan-os-admin/networking/nat/nat-configuration-examples/destination-nat-exampleone-to-one-mapping.html#ide31f0849-78d6-4859-9607-ca308386fdf4

Espero ter contribuido para sua arquitetura/Topologia mais segura e concentrada em um unico ponto, lembrando que estamos com Palo Alto HA e Availability Zone.

Seja Feliz!!!!



Adicionando Vnet a infraestrutura existente com Peering e propagação BGP, via CLI (Bash) Azure

Como vimos em nossa seria de artigos de criação de vnet, peering, bgp e VPN IPSec com BGP, vamos criar mais uma vnet em nossa infraestrutura já existente. Veja nossos artigos nas sequencia:

Criando Vnet com Tags via CLI (Bash) Azure
Criando Virtual Network Gateway (VPN com BGP) Azure via CLI (Bash)
Criando Virtual Network com Peering via CLI (Bash) Azure
Criando Peering Virtual Network (Azure) via CLI (Bash) com Gateway de propagação.
Criando Local Network Gateway com BGP – VPN IPSec Fortigate.

Vamos ao script

#!/bin/bash
#Declarando variaveis
##Selecionar subscription

export Subscription_01=’Santana-Corp’

##região
export Location=brazilsouth

##Environmont
export Environment_01=’backend-Prodution’

##Resouce Group
export RG_Name01=”${Environment_01}”-Network

##Vnet Name
export Vnet_01=vnet-“${Environment_01}”

##Nome do Objeto
export NameObject_01=”${Vnet_01}”

##Projeto
export Projecto_01=’Backend’
export ID_Object=’678654789′

##Centro de Custo
export Costcenter_Team=’Team Backend’
export Costcenter_Number=’78954′

##Suporte Acionamento
export Support_Team=’[email protected]
export Support_Number=’+55 11 3000-XXXX’

##CIDR Network (Prefixo da Rede)
export CIDR_01=’172.29.226.0/24′

##Nome subnet
export Subnet_01=sub01-“${NameObject_01}”
export Subnet_02=sub02-“${NameObject_01}”
export Subnet_03=sub03-“${NameObject_01}”
export Subnet_04=sub04-“${NameObject_01}”

##CIDR Subnet
export prefix_01=’172.29.226.0/26′
export prefix_02=’172.29.226.64/26′
export prefix_03=’172.29.226.128/26′
export prefix_04=’172.29.226.192/26′

##Tags
export Tag01_Key=”${Environment_01}”
export Tag02_Key=”${Projecto_01}”
export Tag03_Key=”${ID_Object}”
export Tag04_Key=”${Costcenter_Team}”
export Tag05_Key=”${Costcenter_Number}”
export Tag06_Key=”${Support_Team}”
export Tag07_Key=”${Support_Number}”
export Name_Value_01=’Environment’
export Name_Value_02=’Projeto’
export Name_Value_03=’ID Projeto’
export Name_Value_04=’Centro de Custo Team’
export Name_Value_05=’Centro de Custo Number’
export Name_Value_06=’Time de Suporte’
export Name_Value_07=’Telefone do Suporte’

#Seleciona Subscription
az account set –subscription “$Subscription_01”

#Criando Resource Groups
az group create –name “${RG_Name01}” –location $Location –tags “${Name_Value_01}”=”${Tag01_Key}” “${Name_Value_02}”=”${Tag02_Key}” “${Name_Value_03}”=”${Tag03_Key}” “${Name_Value_04}”=”${Tag04_Key}” “${Name_Value_05}”=”${Tag05_Key}” “${Name_Value_06}”=”${Tag06_Key}” “${Name_Value_07}”=”${Tag07_Key}”

#Criando Virtual Network (Vnet)
az network vnet create -g “${RG_Name01}” -n “${NameObject_01}” –address-prefix $CIDR_01 –location $Location –tags “${Name_Value_01}”=”${Tag01_Key}” “${Name_Value_02}”=”${Tag02_Key}” “${Name_Value_03}”=”${Tag03_Key}” “${Name_Value_04}”=”${Tag04_Key}” “${Name_Value_05}”=”${Tag05_Key}” “${Name_Value_06}”=”${Tag06_Key}” “${Name_Value_07}”=”${Tag07_Key}” 

#Criando Subnet
az network vnet subnet create -g “${RG_Name01}” –vnet-name “${NameObject_01}” -n $Subnet_01 –address-prefixes $prefix_01
az network vnet subnet create -g “${RG_Name01}” –vnet-name “${NameObject_01}” -n $Subnet_02 –address-prefixes $prefix_02
az network vnet subnet create -g “${RG_Name01}” –vnet-name “${NameObject_01}” -n $Subnet_03 –address-prefixes $prefix_03
az network vnet subnet create -g “${RG_Name01}” –vnet-name “${NameObject_01}” -n $Subnet_04 –address-prefixes $prefix_04

##Variaveis para criação do Peering

#Subscriptions
export Subscription_01=’Santana-COrp’

#Resouce Group
export RG_Name01=”Shared-Prodution-Network”export RG_Name02=”backend-Prodution-Network”

#Name Object
export NameObject_01=”${Vnet_01}”-“${Subscription_01}”-“${Environment_01}”

#Peering
export Vnet_Name_01=”vnet-Shared-Prodution”
export Vnet_Name_02=”vnet-backend-Prodution”
export Peering_01=”Peering-vnet-Shared-Prodution2″
export Peering_02=”Peering-backend-Prodution-Network”

#export Vnet_Remote=$(az network vnet show –resource-group Shared-Prodution-Network -n vnet-Shared-Prodution –query id –output tsv)

#Vnet Remote
export Vnet_Remote_01=”/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/backend-Prodution-Network/providers/Microsoft.Network/virtualNetworks/vnet-backend-Prodution”
export Vnet_Remote_02=”/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/Shared-Prodution-Network/providers/Microsoft.Network/virtualNetworks/vnet-Shared-Prodution”

#Selecionar subscription
az account set –subscription “${Subscription_01}”

#Criando Peering
## Vnet Shared Prodution

az network vnet peering create -g “${RG_Name01}” -n “${Peering_01}” –vnet-name “${Vnet_Name_01}” –remote-vnet “${Vnet_Remote_01}” –allow-vnet-access –allow-forwarded-traffic –allow-gateway-transit –allow-vnet-access

## Vnet Backend Prodution
az network vnet peering create -g “${RG_Name02}” -n “${Peering_02}” –vnet-name “${Vnet_Name_02}” –remote-vnet “${Vnet_Remote_02}” –allow-vnet-access –allow-forwarded-traffic –allow-vnet-access –use-remote-gateways

Veja o resultado

Em nosso fortigate

Com isso concluimos nossa seria de Vnet com peering e propagação BGP, a cada vnet nova criada com peering (utilizando as configuração aqui exibidas) não é necessário fazer mais nada em nosso fortigate ou Gateway de VPN, um lembrete muito importante as redes não podem se sobscrever (Over lapping).

Update IOS Apple Error WiFi Sonicwall “Drop Code: 41, Module ID: 26”

Hoje me deparei com o seguinte cenário:

Rede WiFi de visitantes –> Atualização IOS Apple 8.1 –> Download concluído com sucesso –> IOS Apple faz mais uma checagem antes do Update, neste momento recebemos a mensagem, “Não possível fazer atualização, por favor verificar sua conexão com Internet.

Olhando os logs do firewall obtive o seguinte erro:
Ethernet Header
 Ether Type: IP(0x800), Src=[f0:db:f8:96:07:82], Dst=[00:17:c5:e0:12:48]
IP Packet Header
 IP Type: TCP(0x6), Src=[192.168.31.134], Dst=[17.151.36.30]
TCP Packet Header
 TCP Flags = [ACK,PSH,], Src=[49534], Dst=[80], Checksum=0x20e
Application Header
 HTTP
Value:[0]
DROPPED, Drop Code: 41, Module Id: 26, (Ref.Id: _4996_uyHtJcpfngKrRmv) 2:2)

Drop Code: 41 IDP Detection

Solução rápida, colocar sua rede WiFi na “Excluision List IPS” e habilitar em Firewall –> App Control Advanced –> Configure App Control Setting –> “Enable Application Control Exclusion List” depois –> “Use IPS Excluison List”

OU pode ir na FONTE em Control App Advantage

PROXY-ACCESS

NON_SSL_TRAFFIC_OVER_SSL_PORT

PROXY RESQUEST

HTTP Proxy

Seja feliz!!!

ICMP Windows Azure

No Windows Azure o ICMP ou PING não é liberado por padrão.

Mas podemos usar o Sysinternals para resolver isso.

1º Baixe a ferramente SysInternals.

http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx

Após descompacte, abra o prompt como administrator, abra o diretório PSTools e execute o comando.

Em sua maquina por exemplo.

Psping 191.237.251.23:80 (IP ou nome dois pontos e a porta)

C:\BKP-CHARLES\Downloads\PSTools>psping.exe 191.237.251.23:80

PsPing v2.01 – PsPing – ping, latency, bandwidth measurement utility
Copyright (C) 2012-2014 Mark Russinovich
Sysinternals – http://www.sysinternals.com

TCP connect to 191.237.251.23:80:
5 iterations (warmup 1) connecting test:
Connecting to 191.237.251.23:80 (warmup): 5.69ms
Connecting to 191.237.251.23:80: 5.63ms
Connecting to 191.237.251.23:80: 6.67ms
Connecting to 191.237.251.23:80: 5.54ms
Connecting to 191.237.251.23:80: 6.13ms

TCP connect statistics for 191.237.251.23:80:
Sent = 4, Received = 4, Lost = 0 (0% loss),
Minimum = 5.54ms, Maximum = 6.67ms, Average = 5.99ms

C:\BKP-CHARLES\Downloads\PSTools>

==============================================================================================

Agora de dentro da VM no Windows Azure

C:\Users\admin.azure>cd..

C:\Users>cd..

C:\>cd PSTools

C:\PSTools>psping.exe yahoo.com:80

PsPing v2.01 – PsPing – ping, latency, bandwidth measurement utility
Copyright (C) 2012-2014 Mark Russinovich
Sysinternals – http://www.sysinternals.com

TCP connect to 206.190.36.45:80:
5 iterations (warmup 1) connecting test:
Connecting to 206.190.36.45:80 (warmup): 201.09ms
Connecting to 206.190.36.45:80: 198.17ms
Connecting to 206.190.36.45:80: 196.82ms
Connecting to 206.190.36.45:80: 196.81ms
Connecting to 206.190.36.45:80: 197.10ms

TCP connect statistics for 206.190.36.45:80:
Sent = 4, Received = 4, Lost = 0 (0% loss),
Minimum = 196.81ms, Maximum = 198.17ms, Average = 197.22ms

C:\PSTools>

===============================================================================================

icmp_azure

Seja Feliz!!!!

Bloqueando sites específicos Fortinet

Vamos bloquear alguns sites específicos manualmente, neste exemplo não iremos utilizar categorização WEB na Fortinet.

Vamos lá, em UTM Security Profiles

image

Web Filter, URL Filter, Creat New

Name: neste exemplo vamos utilizar “RESTRICT”

OK

image

Agora em dentro de “RESTRICT” “Creat New”

URL: Neste exemplo vamos bloquear qualquer coisa .uol.com.br “*.uol.com.br”
Type: Wildcard (Utilizando esta opção, conseguimos bloquear *.domínio
Action: Block
Enable: Deixe habilitado.

OK

image

Agora vamos vincular ao profile em web filter, neste exemplo iremos bloquear para toda empresa *.uol.com.br

Em Web Filter, Profile, Default, Advanced Filter, habilite a opção “Web URL Filter” “RESTRICT”

Apply

image

Agora vamos criar um regra de acesso a internet

Em “Policy”, Police, Creat New

Policy Type: Firewall
Policy Subtype: Address
Incoming Interface: port1 (LAN)
Source Address: all
Outgoing Interface: port3 (WAN2)
Destination Address: all
Schedule: always
Service: ALL
Action: ACCEPT
Enable NAT: Deixe habilitada
Log Allowed Traffic: Deixe habilitada esta opção

Em UTM Security Profiles, habilite “Web Filter”, deixe no modo “ON” selecione o “Default” em profile

OK

image

Regra criada

image

Vamos fazer o teste e verificar se realmente está sendo bloqueado a URL que informamos.

Veja que o acesso a internet está normal

image

Agora vamos acessar o site www.uol.com.br

image

Agora vamos tentar acessar um site dentro do domínio uol.com.br, neste exemplo http://email.uol.com.br

O bloqueio ocorreu 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

Criando Pontos de Extremidade Windows Azure (Liberando portas no Firewall)

Vamos criar pontos de extremidades no Windows Azure, na realizadade vamos liberar no firewall do Windows Azure portas de acesso para nossa maquina virtual dentro do Windows Azure.

No Windows Azure cada maquina virtual recebe um IP Privado interno e um IP Público, porém o acesso é através de NAT passando pelo firewall do Windows Azure (Eu particularmente prefiro assim é mais seguro), vejo no desenho abaixo como funciona

image

ao acessar o endereço IP 23.97.99.183 ou o nome de DNS BRSPSRV001.cloudapp.net o firewall faz o NAT na porta 80 (ha que vamos liberar) para a maquina virtual.

Veja na imagem abaixo que nosso servidor WEB já está disponivél

image

Poré quando acessamos pelo IP 23.97.99.183 ou pelo nome DNS BRSPSRV001.cloudapp.net de fora do Windows Azure não conseguimos porque a liberação não foi feita

image

image

Agora vamos fazer a liberação da porta 80

No portal do Windows Azure acessa clique em sua maquina virtual

image

Depois clique em pontos de extremidade

image

Agora clique em adicionar

image

Vamos habilitar “Adicionar um ponto de extremidade autônomo”

image

Em Nome escolha “HTTP”
Protocolo “TCP”
Porta Pública “80”
Porta Privada “80”

Neste exemplo usaremos essas configurações, mas podemos fazer por exemplo o seguinte NAT, porta pública “8080” e privada “80”.

Deixa as demais opções em branco

image

Clique ok

A regra está sendo criada

image

Pronto a regra foi criada, o NAT da porta 80 pública para porta 80 privada está ok.

image

Agora em nosso navegador podemos acessar nosso site normalmente

Por nome de DNS

image

Por IP Público

image

Isso vale para qualquer porta tanto para Windows Server como VM com Linux.

E no Firewall do Windows as portas devem estar liberadas também.