O blog da AWS
Como implementar o Fortigate com alta disponibilidade na AWS
Por Maurício Hollanda, arquiteto de soluções, AWS;
Karlos Correia, arquiteto de soluções, AWS
e Leandro Momesso , consultor de soluções, Fortinet
Visão geral
Muitas organizações buscam o uso de soluções de segurança para ter um maior controle de tráfego em sua rede com objetivo de aumentar a segurança do seu ambiente na nuvem AWS. Empresas com maiores necessidades de controle, realizam também a inspeção do tráfego externo (norte-sul) e interno (leste-oeste).
Utilizar uma arquitetura com alta disponibilidade e resiliente é crucial para a continuidade dos negócios e a construção de uma arquitetura com o controle dessa comunicação de forma centralizada em um cenário de múltiplas contas é um grande desafio na etapa de planejamento e desenho da arquitetura.
Nesse artigo, iremos apresentar como construir uma arquitetura com controle de comunicação de forma centralizada com alta disponibilidade e resiliente, utilizando a solução de firewall Fortinet FortiGate.
Arquitetura
A arquitetura proposta nesse artigo foi elaborada com base no desenho abaixo.
Nessa seção apresentaremos alguns detalhes da arquitetura elaborada. Seguindo as recomendações de segurança de segmentação de workloads, estamos trabalhando com um cenário multi-account dentro de uma mesma AWS Organizations, utilizando as seguintes contas:
- Network – Conta que irá concentrar todas as conexões que serão inspecionadas pelo firewall, contendo serviços necessários para essa análise como Firewalls Fortigate, Gateway Load Balancer, VPC Endpoints, AWS Transit Gateway, NAT Gateway e Internet Gateway;
- Spoke1 – Conta com os workloads da aplicação 1 da organização e também a conta que receberá o tráfego externo em sua rede interna na AWS;
- Spoke2 – Conta com os workloads da aplicação 2 da organização.
Entrando em mais detalhes de como funcionarão os tráfegos de comunicação nessa arquitetura:
- Toda a comunicação externa para a rede interna, será recebida no Internet Gateway da rede Spoke 1 e através do roteamento Ingress configurado na VPC Spoke 1, a conexão será direcionada para o firewall na VPC de Network para inspeção e validação da comunicação;
- Toda a comunicação em que uma VPC (Ex.: Spoke1 ou Spoke2) precisar se comunicar com a internet, a mesma será encaminhada para os firewalls na VPC Network para que o tráfego seja inspecionado e validado e a saída dessa conexão será pelo Internet Gateway da VPC de Network. Esse fluxo ocorrerá dessa forma, mesmo que exista um Internet Gateway na conta Spoke, onde em nosso cenário, está sendo utilizado apenas para Inbound e não para Outbound;
- Toda a comunicação em que uma VPC (Ex.: Spoke1) precisar estabelecer uma comunicação com um workload de uma outra VPC (Ex.: Spoke2), a mesma será encaminhada para os firewalls da VPC Network para que o tráfego seja inspecionado e validado;
Para que essas comunicações funcionem adequadamente, utilizaremos as seguintes VPCs e Subnets:
VPC | Descrição VPC | Nome Subnet | Descrição Subnet |
VPC Spoke 1 | Contém os workloads da aplicação 1 | Spoke1 Private Subnet | Possui os workloads internos da aplicação 1 |
Spoke1 Transit Subnet | Conexão com as demais VPC através da conexão com o Transit Gateway e os respectivos VPC attachments | ||
Spoke1 Public Subnet | Possui os workloads expostos para internet e protegidos pela inspeção do firewall | ||
Spoke1 GWLBE Subnet | Possui o endpoint do GWLB para garantir o encaminhamento do tráfego para os firewalls através do Gateway Load Balancer | ||
VPC Spoke 2 | Contém os workloads da aplicação 2 | Spoke2 Private Subnet | Possui os workloads internos da aplicação 2 |
Spoke2 Transit Subnet | Conexão com as demais VPC através da conexão com o Transit Gateway e os respectivos VPC attachments | ||
VPC Network | Contém os serviços de rede como TGW, GWLB, FW, etc. | TGW Subnet AZ1 | Conexão com as demais VPC através da conexão com o Transit Gateway e os respectivos VPC attachments na zona de disponibilidade 1 |
TGW Subnet AZ2 | Conexão com as demais VPC através da conexão com o Transit Gateway e os respectivos VPC attachments na zona de disponibilidade 2 | ||
GWLBE Subnet AZ1 | Possui os endpoints do GWLB na zona de disponibilidade 1 para garantir o encaminhamento do tráfego para os firewalls através do GWLB | ||
GWLBE Subnet AZ2 | Possui os endpoints do GWLB na zona de disponibilidade 2 para garantir o encaminhamento do tráfego para os firewalls através do GWLB | ||
FW Private Subnet AZ1 | Possui as interfaces de inspeção do FW e as interfaces do GWLB na zona de disponibilidade 1 | ||
FW Private Subnet AZ2 | Possui as interfaces de inspeção do FW e as interfaces do GWLB na zona de disponibilidade 2 | ||
FW Mgmt Subnet AZ1 | Possui a interface de gerenciamento do firewall na zona de disponibilidade 1 | ||
FW Mgmt Subnet AZ2 | Possui a interface de gerenciamento do firewall na zona de disponibilidade 2 | ||
NATGW Subnet AZ1 | Possui o Nat Gateway para envio de tráfego para a internet na zona de disponibilidade 1 | ||
NATGW Subnet AZ2 | Possui o Nat Gateway para envio de tráfego para a internet na zona de disponibilidade 2 |
Nota: A arquitetura de redes precisa ser planejada e desenhada de acordo com a situação atual da organização. Ajuste as VPCs, subnets, roteamentos e demais recursos, baseados nas necessidades de sua organização.
Etapas
Nessa seção entraremos nos detalhes de cada etapa percorrida para realizar as configurações dessa arquitetura. Teremos 03 etapas macros que serão abordadas:
- Preparação das configurações básicas de redes;
- Instalação e configuração dos firewalls;
- Testes de comunicação.
Importante reforçar que para iniciar as próximas etapas, as 03 contas (Network, Spoke 1 e Spoke 2) já devem estar criadas dentro de sua Organização. Caso precise de apoio para criação das contas utilize o procedimento nesse link.
1.Preparação das configurações básicas de redes
1.1 Criação de VPCs
Nessa etapa, foi realizado a criação das 03 VPCs listadas abaixo:
Conta | VPC Name | CIDR |
Network | Network-VPC | 10.0.0.0/16 |
Spoke 1 | Spoke1-VPC | 10.1.0.0/16 |
Spoke 2 | Spoke2-VPC | 10.2.0.0/16 |
Caso precise de apoio na criação das VPCs, utilize a documentação disponível no link Trabalhar com VPCs – Amazon Virtual Private Cloud.
Importante avaliar o plano de endereçamento e adequá-los a necessidade de sua organização.
1.2. Criação das subnets
Nessa etapa, realizaremos a criação das subnets. Essa configuração será realizada nas contas Network, Spoke1 e Spoke2. Verifique na tabela abaixo quais as contas, VPCs e Subnets que devem ser criadas:
Conta | VPC | Nome Subnet | AZ | CIDR |
Network | Network-VPC | Net-FW-Private-AZ1-Subnet | us-east-1a | 10.0.1.0/24 |
Network | Network-VPC | Net-FW-Private-AZ2-Subnet | us-east-1b | 10.0.2.0/24 |
Network | Network-VPC | Net-GLWBE-AZ1-Subnet | us-east-1a | 10.0.3.0/24 |
Network | Network-VPC | Net-GLWBE-AZ2-Subnet | us-east-1b | 10.0.4.0/24 |
Network | Network-VPC | Net-NATGW-AZ1-Subnet | us-east-1a | 10.0.5.0/24 |
Network | Network-VPC | Net-NATGW-AZ2-Subnet | us-east-1b | 10.0.6.0/24 |
Network | Network-VPC | Net-TGW-AZ1-Subnet | us-east-1a | 10.0.7.0/24 |
Network | Network-VPC | Net-TGW-AZ2-Subnet | us-east-1b | 10.0.8.0/24 |
Network | Network-VPC | Net-FW-Mgmt-AZ1-Subnet | us-east-1a | 10.0.9.0/24 |
Network | Network-VPC | Net-FW-Mgmt-AZ2-Subnet | us-east-1b | 10.0.10.0/24 |
Spoke1 | Spoke1-VPC | Spoke1-Private-Subnet | us-east-1a | 10.1.0.0/24 |
Spoke1 | Spoke1-VPC | Spoke1-Transit-Subnet | us-east-1a | 10.1.2.0/24 |
Spoke1 | Spoke1-VPC | Spoke1-Public-Subnet | us-east-1a | 10.1.3.0/24 |
Spoke1 | Spoke1-VPC | Spoke1-GWLBE-Subnet | us-east-1a | 10.1.4.0/24 |
Spoke2 | Spoke2-VPC | Spoke2-Private-Subnet | us-east-1a | 10.2.0.0/24 |
Spoke2 | Spoke2-VPC | Spoke2-Transit-Subnet | us-east-1a | 10.2.2.0/24 |
Nota: Nessa arquitetura estamos utilizando as zonas de disponibilidade da região norte da Virginia (EUA). Utilize a zona de disponibilidade e região que melhor se adeque a necessidade de sua organização, lembrando que nesse cenário estamos trabalhando com uma única região.
Caso precise de apoio na criação das subnets, utilize a documentação disponível no link Trabalhar com sub-redes – Amazon Virtual Private Cloud.
1.3. Criação do Transit Gateway
Nessa etapa detalharemos as etapas para criação do Transit Gateway. O Transit gateway será criado na conta Network. Para criação do Transit Gateway, utilize o procedimento descrito no link Conceitos básicos dos gateways de trânsito – Amazon VPC, considerando as seguintes informações durante a configuração:
- Desmarque a opções “Default route table association” e “Default route table propagation”, pois iremos customizar a tabela de roteamento do Transit Gateway;
- Marque a opção “Auto accept shared attachments” para que possamos utilizar esse Transit Gateway nas demais contas (Spoke1 e Sploke2). Uma informação importante, o Transit Gateway é um serviço regional, logo, o mesmo só pode ser compartilhado com contas dentro da mesma região, portanto, mantenha o uso da região us-east-1 em suas configurações ou na região que utilizar em seu ambiente.
1.4. Compartilhamento do Transit Gateway entre as contas na mesma região
Nessa etapa realizaremos a configuração do compartilhamento do Transit Gateway para possibilitar com que outras contas possam utilizar o Transit Gateway para encaminhamento de pacotes. Para realizar o compartilhamento, utilize o procedimento descrito no link Sharing a transit gateway with an account or Organization.
1.5. Criação dos attachments das VPCs com o Transit Gateway
Após o compartilhamento do Transit Gateway com as VPCs, realize a criação do attachment das VPCs no Transit Gateway. Esse procedimento deve ser realizado em todas as contas da arquitetura, conforme tabela abaixo:
Conta | Nome | Transit Gateway ID | Att. type | VPC ID | Subnets | Appliance Mode Support |
Spoke 1 | att-spoke1 | TGW ID | VPC | Spoke1-VPC | Spoke1-Transit-Subnet | Disable |
Spoke 2 | att-spoke2 | TGW ID | VPC | Spoke2-VPC | Spoke2-Transit-Subnet | Disable |
Network | att-network | TGW ID | VPC | Network-VPC | Net-TGW-AZ1-Subnet Net-TGW-AZ2-Subnet |
Enable |
Atenção a ativação do Appliance mode Support no attachment da conta de Network.
Caso precise de apoio na configuração dos attachments, utilize o procedimento disponível no link Getting started with transit gateways – Amazon VPC utilizando as configurações descritas na tabela acima.
1.6. Criação das tabelas de roteamento do Transit Gateway
Nessa etapa, serão criadas 02 tabelas de roteamento no Transit Gateway seguindo as configurações da tabela abaixo. Esse procedimento deve ser realizado na conta Network.
Name | Transit Gateway ID | Association | Routes CIDR | Attachment ID |
RTB-Network | Selecione o ID do TGW | att-network | 10.1.0.0/16 | att-spoke1 |
10.2.0.0/16 | att-spoke2 | |||
RTB-Spoke | Selecione o ID do TGW | att-spoke1 att-spoke2 |
0.0.0.0/0 | att-network |
Caso precise de apoio para configuração das tabelas de roteamento no Transit gateway, utilize o procedimento disponível no link Transit gateway route tables – Amazon VPC.
1.7. Criação dos NAT Gateways
Nessa etapa realize a criação de 02 NAT Gateways, sendo um em cada zona de disponibilidade para envio do tráfego da rede interna para a internet. Essa configuração deve ser realizada na conta de Network. Utilize a tabela abaixo como referência para as configurações.
Name | Subnet | Connection type | Alocate Elastic IP? |
natgw-az01 | Net-NATGW-AZ1-Subnet | Public | Sim |
natgw-az02 | Net-NATGW-AZ2-Subnet | Public | Sim |
Caso precise de apoio na criação do NAT Gateway, utilize o procedimento disponível no link NAT gateways – Amazon Virtual Private Cloud.
1.8. Criação do Internet Gateway
Nessa etapa realize a criação de 02 Internet Gateway, sendo 01 IGW na conta Network associado a Network-VPC e outro IGW na conta Spoke1 associado a Spoke1-VPC.
Caso precise de apoio, utilize o procedimento disponível no link Connect to the internet using an internet gateway – Amazon Virtual Pri… na etapa “Create and attach an internet gateway”.
1.9 Configuração das tabelas de roteamento
Nessa etapa, realize a criação, configuração e associação das tabelas de roteamento customizadas conforme tabela abaixo.
VPC | Nome – Tabela roteamento | Incluir rota | Destino | Subnet associada |
Spoke1-VPC | RTB-Spoke1-Private | 0.0.0.0/0 | TGW | Spoke1-Private-Subnet |
Spoke1-VPC | RTB-Spoke1-Transit | 0.0.0.0/0 | TGW | Spoke1-Transit-Subnet |
Spoke1-VPC | RTB-Spoke1-GWLBE | 0.0.0.0/0 | IGW-Spoke1 | Spoke1-GWLBE-Subnet |
10.0.0.0/8 | TGW | Spoke1-GWLBE-Subnet | ||
Spoke1-VPC | RTB-Spoke1-Public | 10.0.0.0/8 | TGW | Spoke1-Public-Subnet |
Spoke2-VPC | RTB-Spoke2-Private | 0.0.0.0/0 | TGW | Spoke2-Private-Subnet |
Spoke2-VPC | RTB-Spoke2-Transit | 0.0.0.0/0 | TGW | Spoke2-Transit-Subnet |
Network-VPC | RTB-Net-GLWBE-AZ1 | 0.0.0.0/0 | NATGW-AZ1 | Net-GLWBE-AZ1-Subnet |
10.0.0.0/8 | TGW | Net-GLWBE-AZ1-Subnet | ||
Network-VPC | RTB-Net-GLWBE-AZ2 | 0.0.0.0/0 | NATGW-AZ2 | Net-GLWBE-AZ2-Subnet |
10.0.0.0/8 | TGW | Net-GLWBE-AZ2-Subnet | ||
Network-VPC | RTB-Net-FW-Private-AZ1 | 10.0.0.0/16 | Local | Net-FW-Private-AZ1-Subnet |
Network-VPC | RTB-Net-FW-Private-AZ2 | 10.0.0.0/16 | Local | Net-FW-Private-AZ2-Subnet |
Network-VPC | RTB-Net-NATGW-AZ1 | 0.0.0.0/0 | IGW | Net-NATGW-AZ1-Subnet |
Network-VPC | RTB-Net-NATGW-AZ2 | 0.0.0.0/0 | IGW | Net-NATGW-AZ2-Subnet |
Network-VPC | RTB-Net-FW-Mgmt-AZ1 | 0.0.0.0/0 | NATGW-AZ1 | Net-FW-Mgmt-AZ1-Subnet |
Network-VPC | RTB-Net-FW-Mgmt-AZ2 | 0.0.0.0/0 | NATGW-AZ2 | Net-FW-Mgmt-AZ2-Subnet |
Caso precise de apoio nessa etapa, utilize o procedimento disponível no link Trabalhar com tabelas de rotas – Amazon Virtual Private Cloud.
Após esse passo do procedimento, finalizamos a preparação da infraestrutura básica de redes para suportar a criação dos firewalls na arquitetura. Nas próximas etapas, daremos sequência na configuração do ambiente para o correto funcionamento dos firewalls.
2. Instalação e configuração dos firewalls
2.1 Criação dos firewalls
Nessa etapa realize a criação das 02 instâncias de firewall na conta de Network (Fortigate-Az1 e Fortigate-Az2) com o objetivo de mantermos de forma centralizada nessa conta a análise do tráfego.
Cada instância deve ficar em zonas de disponibilidade distintas e cada firewall deve ser configurado com 02 interfaces de rede na VPC de Network, sendo uma interface de rede para gerenciamento do firewall conectado a subnet de gerenciamento do firewall (Net-FW-Mgmt-AZ1-Subnet ou Net-FW-Mgmt-AZ2-Subnet) e a outra interface de rede que receberá o tráfego para a inspeção, conectado a subnet de inspeção do firewall (Net-FW-Private-AZ1-Subnet ou Net-FW-Private-AZ2-Subnet).
Existem algumas formas para criação dos firewalls na AWS, sendo uma delas através do AWS Marketplace. Nele, você pode utilizar as imagens disponibilizadas pela própria Fortinet. Nesse momento, é importante avaliar a imagem e o tipo de instância que melhor se adeque as necessidades de sua organização.
Durante a criação das instâncias é importante seguir com as recomendações da Fortinet documentadas nesse link. Importante que o Security Group associado a interface de rede de inspeção de tráfego, tenha as portas UDP 6081 (GENEVE) e TCP 8008 (Detecção de status) liberadas.
Grave o endereço IP privado concedido para as interfaces nas subnets “Net-FW-Private-AZ1-Subnet” e “Net-FW-Private-AZ2-Subnet”. Eles serão utilizados na configuração do Gateway Load Balancer.
2.2 Configuração dos firewalls
Nessa etapa daremos início ao processo de configuração dos firewalls. Para acesso a console você pode criar ou utilizar uma instância EC2 existente, conectada a subnet de gerenciamento do firewall, utilizando o sistema operacional e o browser de sua preferência para acesso ao endereço da interface de gerenciamento do firewall. Complete as etapas descritas abaixo na console CLI de cada firewall instalado.
A configuração abaixo será a mesma para ambos os firewalls.
- Ativação do modo VDOM (Virtual Domain) – Nessa arquitetura utilizaremos o Root VDOM para gerenciamento e o FG-Traffic VDOM para inspeção do tráfego.
config system global
set vdom-mode multi-vdom
end
config vdom
edit FG-Traffic
next
end
end
- Configuração VDOM– Nessa arquitetura, utilizaremos a porta 1 para o Root VDOM e a porta 2 para o FG-Traffic VDOM.
config global
config system interface
edit "port1"
set vdom "root"
set mode dhcp
set allowaccess ping https ssh http fgfm
set type physical
set snmp-index 1
set mtu-override enable
set mtu 9001
next
edit "port2"
set vdom "FG-Traffic"
set mode dhcp
set allowaccess ping probe-response
set type physical
set snmp-index 2
set defaultgw disable
set mtu-override enable
set mtu 9001
next
end
- Configuração do detection response
config system probe-response
set mode http-probe
end
2.3 Criação e configuração do GWLB
Agora que temos os endereços associados as interfaces dos firewalls, realizaremos a criação e configuração do Gateway Load Balancer que encaminhará o tráfego para os 02 firewalls Fortigate na conta Network. Para isso, execute os passos listados abaixo:
- Na console AWS, navegue até a opção Load Balancers no menu do serviço EC2 e clique em “Create Load Balancer”
- Clique em Create, abaixo da opção Gateway Load Balancer;
- Forneça um nome para o GWLB;
- Em Network Mapping, selecione a VPC “Network-VPC” e em subnets selecione as subnets “Net-FW-Private-AZ1-Subnet”e “Net-FW-Private-AZ2-Subnet”;
- Em IP listener routing, criaremos um novo target group com as seguintes configurações:
- Target type: IP addresses
- Name: Forneça um nome desejado. Ex.: Target-Group-GWLB
- Protocol: Geneve
- VPC: Network-VPC
- Health checks: TCP
- Health Check Port: 8008
- IP: Forneça o IP das interfaces (porta 2) dos 02 firewalls e inclua na lista.
- Após a criação do Target Group, volte ao setup do Gateway Load Balancer e selecione o Target Group criado;
- Após a criação do GWLB, para garantir a alta disponibilidade do mesmo em múltiplas zonas, ative a opção “Cross-zone load balancing”. Para isso selecione a opção “Edit Attributes” do GWLB e salve a configuração após ativação.
- Após a criação, salve os IPs associados a cada interface do Gateway Load balancer de cada Availability Zone, pois utilizaremos esses endereços na configuração do túnel Geneve no firewall.
2.4 Configuração do túnel Geneve
Nessa etapa, voltaremos aos firewalls para realizar a configuração do túnel Geneve nos 02 firewalls no VDOM FG-Traffic. Veja que na linha de comando “set remote-ip” você deve inserir o IP de cada zona de disponibilidade do GWLB coletado no passo anterior.
A configuração abaixo será a mesma para ambos os firewalls.
config system geneve
edit "geneve-az1"
set interface "port2"
set type ppp
set remote-ip <GWLB IP AZ US-EAST-1A>
next
edit "geneve-az2"
set interface "port2"
set type ppp
set remote-ip <GWLB IP AZ US-EAST-1B>
next
end
2.5 Configuração das rotas estáticas
Nessa etapa, realizaremos a configuração das rotas estáticas nos 02 firewalls, utilizando a CLI Console de cada firewall. Acompanhe os passos abaixo:
Atenção: Nessa configuração cada firewall terá sua própria configuração.
- No firewall 01, localizado na zona de disponibilidade “us-east-1a” realize a seguinte configuração:
config router static
edit 1
set device "geneve-az1"
next
edit 2
set device "geneve-az2"
next
edit 3
set dst 10.0.2.0 255.255.255.0
set gateway 10.0.1.1
set device "port2"
next
end
Veja que apontamos para a Subnet do firewall da zona de disponibilidade “us-east-1b” (10.0.2.0/24) e utilizamos o gateway da zona de disponibilidade “us-east-1a” (10.0.1.1). Veja na documentação desse link que o IP final .1 é reservado pela AWS para o VPC router.
- No firewall 02, localizado na zona de disponibilidade “us-east-1b” realize a seguinte configuração:
config router static
edit 1
set device "geneve-az1"
next
edit 2
set device "geneve-az2"
next
edit 3
set dst 10.0.1.0 255.255.255.0
set gateway 10.0.2.1
set device "port2"
next
end
Essa configuração já é diferente da anterior, onde o comando aponta para a Subnet do firewall da zona de disponibilidade “us-east-1a” (10.0.1.0/24) e utiliza o gateway da zona de disponibilidade “us-east-1b” (10.0.2.1).
2.6 Configuração das policies de roteamento
Nessa etapa, realizaremos a configuração das policies de roteamento nos 02 firewalls utilizando a CLI Console de cada firewall instalado. A configuração abaixo será a mesma para ambos os firewalls.
config router policy
edit 1
set input-device "geneve-az1"
set output-device "geneve-az1"
next
edit 2
set input-device "geneve-az2"
set output-device "geneve-az2"
next
end
2.7 Configuração da policy de proteção do Fortigate
Nessa etapa, realizaremos a configuração da policy de proteção nos 02 firewalls utilizando a CLI Console de cada firewall instalado.
Com objetivo de facilitar a configuração, adotaremos nessa policy uma configuração básica de segurança. Nesse ponto é importante adequar as policies mediante a necessidade e as características de proteção de sua organização.
A configuração abaixo será a mesma para ambos os firewalls.
config system zone
edit FG-Traffic
set interface geneve-az1 geneve-az2
next
end
config firewall policy
edit 1
set name "FG-Traffic"
set srcintf "FG-Traffic"
set dstintf "FG-Traffic"
set action accept
set srcaddr "all"
set dstaddr "all"
set schedule "always"
set service "ALL"
set utm-status enable
set ssl-ssh-profile "certificate-inspection"
set av-profile "g-default"
set ips-sensor "g-default"
set application-list "g-default"
set logtraffic all
next
end
2.8 FortiGate SDN Connector
A policy de firewall tradicionais baseadas em endereços IP, se torna muito complexa, uma vez que os endereços IPs dos recursos AWS são dinâmicos e efêmeros. Os firewalls precisam de novos atributos para operarem em um ambiente dinâmico como na AWS. A Fortinet possui uma integração nativa com a AWS através do serviço Fabric Connector, que possibilita o mapeamento dinâmico dos recursos AWS baseado em tags para aplicação de policies de segurança. Não importa como os recursos mudem seus locais ou formatos, o FortiGate será capaz de identifica-los como objetos e utilizá-los nas policies de firewall sem atualização manual pelo administrador. Veja os passos para realizar essa configuração em ambos os firewalls.
- Criação de uma IAM role para possibilitar com que as instâncias do firewall configurem o AWS SDN Connector. A IAM role deve estar associada a seguinte policy:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["ec2:Describe*"],
"Resource": "*",
"Effect": "Allow"
}
]
}
- Após a criação da role associe a IAM role acima na instância EC2 dos FortiGates. Caso precise de apoio nessa configuração utilize esse link.
- Configuração do FortiGate SDN Connector.
-
- Acesse a console do firewall e no menu esquerdo clique em Security Fabric -> External Connectors
- Clique em Create New -> Amazon Web Services (AWS)
- Enable Use metadata IAM
- Clique OK
- Criação de objetos dinâmicos utilizando o AWS SDN Connector.
-
- No menu esquerdo clique em Policy & Objects -> Address
- Clique em Create New -> Address
- Configure o endereço:
- Escolha um nome para o objeto
- No campo Type selecione Dynamic
- No campo Sub Type escolha Fabric Connector Address
- No campo SDN Connector selecione o conector criado no passo anterior
- No campo filter, configure o filtro desejado, como por exemplo, selecionar todos os recursos que estão no VPC: VpcId=vpc-xxxxxxxxxxx
- Em interface selecione any
- Clique em OK
- Verifique que o AWS SDN Connector pode mapear dinamicamente todos os endereços IP de acordo com o filtro especificado.
-
- No menu esquerdo clique em Policy & Objects-> Address
- Passe o mouse sobre o objeto VPC_ADDRESS criado no passo anterior e veja a lista de endereços IPs encontrados.
2.9 Criação do serviço de endpoint
Nessa etapa, voltaremos a console da AWS para realizar a criação do serviço de endpoint em que os endpoints do GWLB serão associados. Todas configurações serão realizadas na conta de Network.
- Na console AWS, navegue até a opção Endpoint services no menu do serviço VPC e clique em “Create endpoint service”
- Forneça um nome para o endpoint service;
- Em Load balancer type, selecione a opção “Gateway”
- Em Available load balancers, selecione o GWLB criado.
- Após a criação do serviço de endpoint, conceda permissão para a conta Spoke1 na aba “Allow Principals” para que possamos criar o endpoint na conta Spoke1. Nesse passo, daremos permissão para a conta <arn:aws:iam::<accountnumber>:root> fazendo referência a conta Spoke1. Importante avaliar a permissão que se adeque as necessidades de sua organização.
- Grave o campo “Service name” do Endpoint Service, pois utilizaremos no próximo passo.
2.10 Criação dos endpoints
Nessa etapa, realizaremos a criação dos 03 endpoints, sendo 02 na conta de Network e um na conta Spoke1.
Criação dos endpoints na conta de Network (01 em cada zona de disponibilidade):
- Na console AWS da conta Network, navegue até a opção Endpoint no menu do serviço VPC e clique em “Create endpoint”;
- Forneça um nome para o endpoint. Ex.: gwlbe-endpoint-az1;
- Em Service Category, selecione a opção “Other endpoint services”, insira o Service Name do endpoint service copiado na etapa anterior e clique em “Verify Service”.
- Em VPC, selecione a “Network-VPC” e marque a subnet “Net-GLWBE-AZ1-Subnet” na zona de disponibilidade “us-east-1a.
- Clique em Create endpoint.
- Repita os passos acima para criação do endpoint na zona de disponibilidade “us-east-1b”. Caso você tenha marcado a opção de aprovação dos endpoints, não esqueça de aprová-los no endpoint service.
Criação do endpoint na conta Spoke1:
- Na console AWS da conta Spoke1, navegue até a opção Endpoint no menu do serviço VPC e clique em “Create endpoint”;
- Forneça um nome para o endpoint. Ex.: gwlbe-endpoint-spoke1;
- Em Service Category, selecione a opção “Other endpoint services”, insira o Service Name do endpoint service copiado na etapa anterior e clique em “Verify Service”.
- Em VPC, selecione a “Spoke1-VPC” e marque a subnet “Spoke1-GLWBE-Subnet”.
- Clique em Create endpoint. Caso você tenha marcado a opção de aprovação dos endpoints, não esqueça de aprová-los no endpoint service.
2.11 Inclusão do Gateway Load Balancer Endpoint nas tabelas de roteamento
Após a criação dos endpoints, realizaremos nessa etapa a criação, configuração e associação das tabelas de roteamento customizadas conforme tabela abaixo.
VPC | Nome – Tabela roteamento | Incluir rota | Destino | Subnet associada |
Network-VPC | RTB-Net-TGW-AZ1 | 0.0.0.0/0 | GWLBe-AZ1 | Net-TGW-AZ1-Subnet |
Network-VPC | RTB-Net-TGW-AZ2 | 0.0.0.0/0 | GWLBe-AZ2 | Net-TGW-AZ2-Subnet |
Você também criará uma tabela de roteamento do tipo Ingress que será associado ao Internet Gateway na conta Spoke1.
VPC | Nome – Tabela roteamento | Incluir rota | Destino | IGW associada |
Spoke1-VPC | RTB-Spoke1-Ingress | 10.1.3.0/24 | GWLBE-Spoke1 | IGW Spoke1 |
Caso precise se apoio nessa etapa, utilize o procedimento disponível no link Create route tables.
Nas tabelas de roteamento já existentes abaixo, inclua as seguintes rota.
VPC | Nome – Tabela roteamento | Incluir rota | Destino | Subnet associada |
Network-VPC | RTB-Net-NATGW-AZ1 | 10.0.0.0/8 | GWLBe-AZ1 | Net-NATGW-AZ1-Subnet |
Network-VPC | RTB-Net-NATGW-AZ2 | 10.0.0.0/8 | GWLBe-AZ2 | Net-NATGW-AZ2-Subnet |
Spoke1-VPC | RTB-Spoke1-Public | 0.0.0.0/0 | GWLBE-Spoke1 | Spoke1-Public-Subnet |
Caso precise de apoio nessa etapa, utilize o procedimento disponível no link Trabalhar com tabelas de rotas – Amazon Virtual Private Cloud.
3. Testes de comunicação
Após a conclusão das configurações acima, com objetivo de testar a comunicação entre workloads em diferentes segmentos de rede e com a internet, realize a criação de uma instância EC2 nas subnets privadas das contas Spoke1 e Spoke2 e uma instância na subnet pública com IP público na conta Spoke1. Vamos realizar 04 testes de comunicação:
- Comunicação entre as instâncias sem regra de bloqueio;
- Comunicação entre as instâncias com regra de bloqueio;
- Comunicação da instância com internet;
- Comunicação da internet com a instância pública.
- Comunicação entre as instâncias sem regra de bloqueio
Conecte na instância da rede privada na conta Spoke 1 e faça um PING para a instância da conta Spoke 2. Após a execução do PING, você deve visualizar o log no Fortigate similar ao da imagem abaixo.
- Comunicação entre as instâncias com regra de bloqueio
Primeiramente você deve criar uma policy de firewall para bloqueio de ICMP em ambos os firewalls como a imagem abaixo.
Após a criação da regra, tente estabelecer a comunicação ICMP entre as instâncias e visualize o log do Fortigate. Você verá um bloqueio similar ao da imagem abaixo.
- Comunicação da instância com internet
Agora dentro da instância da rede privada na conta Spoke1, tente estabelecer uma comunicação com um site público e visualize se o tráfego está sendo detectado pelo firewall. Como exemplo, realizamos uma simulação de acesso ao site www.fortinet.com e tivemos o resultado do log conforme a imagem abaixo.
- Comunicação da internet com a instância pública
Nesse teste realizamos a instalação de um Apache no servidor da subnet pública e liberamos a porta 80 no Security Group da instância apenas para testes. Estabelecemos uma comunicação com o servidor através de seu IP público na internet e tivemos o resultado do log conforme imagem abaixo, evidenciando a inspeção do tráfego externo no firewall antes de chegar na instância.
Conclusão
Nesse artigo realizamos a criação de uma arquitetura de segurança de tráfego centralizada, utilizando a solução de firewall Fortinet Fortigate, implantada em um cenário com alta disponibilidade em multi-zona, utilizando o serviço de Gateway Load Balancer da AWS, garantindo a continuidade da inspeção, mesmo diante de um cenário de indisponibilidade de uma das zonas. Você poderá utilizar essa arquitetura como referência para implantação em sua organização.
Sobre o autor
Mauricio Hollanda é arquiteto de Soluções da Amazon Web Services para o setor público, atua no segmento de Educação e ingressou na AWS em 2022. Trabalha há mais de 17 anos com tecnologia da informação atuando na gestão de ambientes de nuvem, infraestrutura de data center e segurança.
Karlos Correia é Arquiteto de Soluções da Amazon Web Services para o setor público e atua especificamente com Governo Federal. Trabalhou anteriormente com arquitetura e planejamento de infraestrutura em empresas do setor de telecomunicações e um é apaixonado por aviação.
Leandro Momesso é consultor de soluções de nuvem na Fortinet para América Latina, atua no desenvolvimento de arquiteturas de segurança e suporte a clientes na estratégia de segurança em nuvem. Trabalhou anteriormente com arquitetura de soluções de data center, segurança e network para grandes clientes.