Для обеспечения высокой доступности Palo Alto VM-Series Firewall используется конфигурация active/passive. В которой активный фаервол постоянно синхронизирует свою конфигурацию и информацию об активных сессиях с аналогично настроенным пассивным фаерволом. Существует два варианта достижения HA в AWS: «Secondary IP Move» и «Dataplane Interface Move«.
Secondary IP Move
При недоступности активного фаервола, пассивный переходит в роль активного. Так же делает API запросы на перенос вторичных IP адресов с недоступного узла на себя и обновляет таблицы маршрутизации, для того чтобы траффик отправлялся на новый активный фаервол. Переключение ролей фаерволов в данном способе быстрее, чем в «Dataplane Interface Move«.
Dataplane Interface Move
Как и в случае «Secondary IP Move«, если пассивный фаервол обнаруживает, что активный больше недоступен, то он переходит в роль активного, но вместо переноса IP адресов, переносит ENI с недоступного фаервола на себя.
Так как планируется использовать VM Firewall как GlobalProtect для доступа к локальным ресурсам из вне, и фаерволы должны быть в разных AZ, подходит только вариант «Secondary IP Move«, но в данном случае это будет EIP который ассоциирован с основным приватным IP адресом.
Для HA необходимо минимум 4 интерфейса на каждом из фаеволов:
- ENI0: MGMT — для управления и конфигурации через консоль или веб интерфейс. Так же этот интерфейс будет использоваться как HA1 линк
- ENI1: HA2 — для проверки состояния фаерволов
- ENI2: Untrust — интерфейс для подключения к GlobalProtect. На активном фаерволе с этим интерфейсом будет ассоциирован EIP
- ENI3: Trust — интерфейс, через который будут доступны локальные ресурсы
Нужно учитывать, что есть лимит на максимальное количество присоединенных ENI к инстансу в зависимости от его типа и размера. С лимитами можно ознакомится тут. В данном случае будут использоваться инстансы — m5.xlarge
Для наглядности диапазоны сетей будут формироваться следующим образом:
10.0.»номер_фаервола»+»номер_интерфейса».0/24
Итого имеем:
По типам это будут публичные сети и изолированные/приватные (для GP им не нужен доступ в Интернет)
В итоге имеем следующую схему:
AWS Infrastructure
VPC
Перейдем в раздел «VPC» и выберем «Create VPC«. Визард использовать не будем, создадим необходимые ресурсы сами. Укажем имя и CIDR, остальное оставим по умолчанию.
Во вкладке «VPC» найдем «Internet gateways» и выберем «Create internet gateway»
Приаттачим созданный IGW к нашей VPC
Subnets
Создадим необходимые сети, для этого перейдем «VPC» -> «Subnets» и выберем «Create subnet«. Необходимо создать по 4 сети в 2-х AZ согласно таблице выше
Проверяем созданные сети, их CIDR и Availability zone
Route tables
Создадим 3 таблицы маршрутизации:
- PA-LAB-NETWORK-DEFAULT-RT
- PA-LAB-NETWORK-PUBLIC-RT
- PA-LAB-NETWORK-GP-TRUST-RT
Для этого перейдем «VPC» -> «Route tables» и выберем «Create route table»
Для «TRUST» зоны мы создаем отдельную таблицу, так как потом будем добавлять в нее маршруты на Transit Gateway.
Выберем таблицу маршрутизации «PA-LAB-NETWORK-PUBLIC-RT» перейдем во вкладку «Routes» и выберем «Edit routes» и добавим маршрут по умолчанию на IGW
Так же ассоциируем таблицу маршрутизации с публичными сетями:
- MGMT-A
- MGMT-B
- UNTRUST-A
- UNTRUST-B
Перейдем во вкладку «Subnet associations» и выберем «Edit subnet associations»
Так же ассоциируем таблицу «TRUST-RT» с сетями «TRUST-A» и «TRUST-B»
Теперь выбираем таблицу «DEFAULT-RT» и задем ее как основную таблицу.
Security Group
Далее нам нужно создать 4 группы безопасности:
- PA-LAB-NETWORK-GP-MGMT-SG
- PA-LAB-NETWORK-GP-HA-SG
- PA-LAB-NETWORK-GP-UNTRUST-SG
- PA-LAB-NETWORK-GP-TRUST-SG
Для HA можно оставить только необходимые порты, но мы просто разрешим траффик внутри группы безопасности.
Для этого перейдем «VPC» -> «Security» и выберем «Create security group«. Создадим 4 группы безопасности со следующими правилами:
Проверяем группы безопасности, что они относятся к правильной VPC и их правила
ENI
Создадим 8 ENI согласно именам наших SG, ассоциируем с соответствующими группами безопасности, добавим описание и тег «Name«.
Переходим в раздел «EC2» -> «Network & Security» -> «Network Interfaces» и выберем «Create network interface»
Проверяем созданные интерфейсы, что они относятся к правильной VPC, AZ и сетям
EIP
Теперь необходимо создать 3 EIP:
- GP-MGMT-A
- GP-MGMT-B
- GP-PORTAL
Для этого перейдем «VPC» -> «Virtual private cloud» -> «Elastic IPs» и выберем «Allocate Elastic IP address«. И добавим тег «Name»
Проверяем созданные EIP
IP адреса «MGMT-A-EIP» и «MGMT-B-EIP» ассоциируем с соответствующими интерфейсами, «GP-PORTAL-IP» ассоциируем с интерфейсом «GP-UNTRUST-A«, именно инстанс в AZ A будет у нас изначально активным.
IAM
Для HA режима необходимо создать IAM Policy со следующим содержимым:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:AttachNetworkInterface", "ec2:DetachNetworkInterface", "ec2:DescribeInstances", "ec2:DescribeNetworkInterfaces", "ec2:AssignPrivateIpAddresses", "ec2:AssociateAddress", "ec2:DescribeRouteTables" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Action": [ "ec2:ReplaceRoute" ], "Resource": [ "arn:aws:ec2:*:*:route-table/*" ], "Effect": "Allow" } ] }
Больше информации о необходимых правах можно найти тут.
Для этого переходим в раздел «IAM» -> «Access management» -> «Policies» и выбираем «Create policy«, переключимся с визуального редактора во вкладку «JSON» и вставим нашу политику.
Так же создадим IAM Role, переходим в раздел «IAM» -> «Access management» -> «Roles» и выбираем «Create role»
- Trusted entity type: «AWS service»
- Use case: «EC2»
И ассоциируем ранее созданную политику.
MarketPlace
Мы будем использовать «VM-Series Next-Generation Firewall (BYOL and ELA)» AMI, но перед этим нужно подписаться на нее в AWS MarketPlace
После того, как подписались на AMI, если перейти к конфигурации можно найти AMI ID для вашего региона
EC2 Instance
Создадим первый инстанс для зоны A, AMI ID указываем с предыдущего шага, instance type: m5.xlarge. Обязательно укажем SSH ключ, предварительно создате или экспортируйте его.
Network settings
Выберем нашу VPC, сеть выбираем любую из AZ A, так как будем присоединять сетевые интерфейсы вручную и обязательно указываем, что в качестве группы безопасности будем использовать существующую и оставляем это поле пустым.
Дальше во вкладке «Advanced network configuration» в качестве «Network interface 1» выбираем «MGMT» интерфейс, все остальные настройки не трогаем.
Добавляем еще 3 дополнительных интерфейса в следующем порядке:
- HA
- UNTRUSTED
- TRUSTED
Во вкладке «Advanced details» находим пункт «IAM instance profile» и выбираем созданную IAM Role.
Точно так же создаем инстанс для AZ B.