Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе Check Point NGFW
- Next-Generation Firewall
- Подготовьте облако к работе
- Подготовьте окружение
- Разверните ресурсы
- Настройте шлюзы межсетевых экранов
- Подключитесь к сегменту управления через VPN
- Запустите консоль управления SmartConsole
- Добавьте шлюзы межсетевых экранов
- Настройте сетевые интерфейсы шлюза FW-A
- Настройте сетевые интерфейсы шлюза FW-B
- Создайте сетевые объекты
- Определите правила политики безопасности
- Настройте статическую таблицу трансляции NAT
- Примените правила политик безопасности
- Включите работу модуля route-switcher
- Протестируйте работоспособность и отказоустойчивость решения
- Как удалить созданные ресурсы
С помощью руководства вы развернете высокодоступную отказоустойчивую сетевую инфраструктуру с выделенным DMZ
Элементы инфраструктуры размещаются в двух зонах доступности и группируются по назначению в отдельные каталоги. Такое решение позволит публиковать общедоступные веб-ресурсы (например, фронтенд-приложения) в изолированной от внутренней инфраструктуры DMZ зоне, а также обеспечит защищенность и высокую доступность всего периметра.
Решение включает следующие основные сегменты (каталоги):
- Каталог public содержит Application Load Balancer для организации публичного доступа из сети интернет к опубликованным в DMZ приложениям.
- Каталог mgmt предназначен для размещения межсетевых экранов NGFW и ресурсов управления облачной инфраструктурой. Включает в себя две ВМ с межсетевыми экранами (fw-a, fw-b), ВМ сервера централизованного управления межсетевыми экранами (mgmt-server) и ВМ доступа к сегменту управления по VPN (jump-vm).
- Каталог dmz предоставляет возможность публикации приложений с открытым доступом из внешней сети интернет.
- Каталоги app и database могут быть использованы для размещения бизнес-логики приложений (в руководстве ВМ в них не устанавливаются).
Более подробное описание приведено в репозитории проекта
Чтобы развернуть защищенную высокодоступную сетевую инфраструктуру с выделением DMZ на основе Check Point Next-Generation Firewall:
- Подготовьте облако к работе.
- Подготовьте окружение.
- Разверните ресурсы.
- Настройте шлюзы межсетевых экранов.
- Включите работу модуля route-switcher.
- Протестируйте работоспособность и отказоустойчивость решения.
Если созданные ресурсы вам больше не нужны, удалите их.
Next-Generation Firewall
Next-Generation Firewall используется для защиты и сегментации облачной сети с выделением DMZ зоны для размещения публичных приложений. В Yandex Cloud Marketplace доступно несколько вариантов NGFW.
В данном сценарии развернуто решение Check Point CloudGuard IaaS, которое предоставляет следующие возможности:
- межсетевое экранирование;
- NAT;
- предотвращение вторжений;
- антивирус;
- защита от ботов;
- гранулярный контроль трафика на уровне приложений;
- логирование сессий;
- централизованное управление с помощью решения Check Point Security Management.
В данном руководстве решение Check Point CloudGuard IaaS настроено с базовыми политиками доступа (Access Control) и NAT трансляций.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры входит:
- плата за постоянно работающие ВМ (см. тарифы Yandex Compute Cloud);
- плата за использование Application Load Balancer (см. тарифы Yandex Application Load Balancer);
- плата за использование Network Load Balancer (см. тарифы Yandex Network Load Balancer);
- плата за использование публичных IP-адресов и исходящий трафик (см. тарифы Yandex Virtual Private Cloud);
- плата за использование функций (см. тарифы Yandex Cloud Functions);
- плата за использование CheckPoint NGFW.
Необходимые квоты
Важно
В руководстве предполагается развертывание ресурсоемкой инфраструктуры.
Убедитесь, что в облаке достаточно квот и они не заняты ресурсами для других задач.
Количество занимаемых руководством ресурсов
Ресурс | Количество |
---|---|
Каталоги | 7 |
Группы виртуальных машин | 1 |
Виртуальные машины | 6 |
vCPU виртуальных машин | 18 |
RAM виртуальных машин | 30 ГБ |
Диски | 6 |
Объем SSD дисков | 360 ГБ |
Объем HDD дисков | 30 ГБ |
Облачные сети | 7 |
Подсети | 14 |
Таблицы маршрутизации | 4 |
Группы безопасности | 10 |
Статические публичные IP-адреса | 2 |
Публичные IP-адреса | 2 |
Статические маршруты | 17 |
Бакеты | 1 |
Cloud функции | 1 |
Триггеры для cloud функций | 1 |
Общий объём RAM всех запущенных функций | 128 МБ |
Балансировщики NLB | 2 |
Целевые группы для NLB | 2 |
Балансировщики ALB | 1 |
Группы бэкендов для ALB | 1 |
Целевые группы для ALB | 1 |
Подготовьте окружение
В руководстве используется программное обеспечение для ОС Windows и подсистема Windows Subsystem for Linux
Инфраструктура разворачивается с помощью Terraform
Настройте WSL
-
Проверьте, установлена ли подсистема WSL на вашем компьютере. Для этого в терминале интерфейса командной строки выполните команду:
wsl -l
При установленной WSL терминал выведет список доступных дистрибутивов, например:
Windows Subsystem for Linux Distributions: docker-desktop (Default) docker-desktop-data Ubuntu
-
Если WSL не установлена, установите
ее и повторите предыдущий шаг. -
Дополнительно можно установить на подсистему WSL привычный вам дистрибутив ОС Linux, например, Ubuntu
. -
Чтобы сделать установленный дистрибутив системой по умолчанию, выполните команду:
wsl --setdefault ubuntu
-
Чтобы перевести терминал в режим работы в подсистеме Linux, выполните команду:
wsl ~
Примечание
Все описанные далее действия в терминале выполняются в ОС Linux.
Создайте сервисный аккаунт с правами администратора на облако
-
В консоли управления
выберите каталог, в котором хотите создать сервисный аккаунт. -
В списке сервисов выберите Identity and Access Management.
-
Нажмите кнопку Создать сервисный аккаунт.
-
Введите имя сервисного аккаунта, например,
sa-terraform
.Требования к формату имени:
- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
Имя сервисного аккаунта должно быть уникальным в рамках облака.
-
Нажмите кнопку Создать.
-
Назначьте сервисному аккаунту роль администратора:
- На стартовой странице
консоли управления выберите облако. - Перейдите на вкладку Права доступа.
- Нажмите кнопку Настроить доступ.
- В открывшемся окне выберите раздел Сервисные аккаунты и выберите сервисный аккаунт
sa-terraform
. - Нажмите кнопку
Добавить роль и выберите рольadmin
. - Нажмите кнопку Сохранить.
- На стартовой странице
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Создайте сервисный аккаунт:
yc iam service-account create --name sa-terraform
Где
name
— имя сервисного аккаунта. Требования к имени:- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
Результат:
id: ajehr0to1g8bh0la8c8r folder_id: b1gv87ssvu497lpgjh5o created_at: "2023-03-04T09:03:11.665153755Z" name: sa-terraform
-
Назначьте аккаунту роль администратора:
yc resource-manager cloud add-access-binding <идентификатор_облака> \ --role admin \ --subject serviceAccount:<идентификатор_сервисного_аккаунта>
Результат:
done (1s)
Чтобы создать сервисный аккаунт, воспользуйтесь методом REST API create для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService/Create.
Чтобы назначить сервисному аккаунту роль на облако или каталог, воспользуйтесь методом REST API updateAccessBindings
для ресурса Cloud или Folder:
-
Выберите роль, которую хотите назначить сервисному аккаунту. Описание ролей можно найти в документации Yandex Identity and Access Management в справочнике ролей Yandex Cloud.
-
Узнайте ID каталога с сервисными аккаунтами.
-
Получите IAM-токен для авторизации в API Yandex Cloud.
-
Получите список сервисных аккаунтов в каталоге, чтобы узнать их идентификаторы:
export FOLDER_ID=b1gvmob95yys******** export IAM_TOKEN=CggaATEVAgA... curl \ --header "Authorization: Bearer ${IAM_TOKEN}" \ "https://iam.api.cloud.yandex.net/iam/v1/serviceAccounts?folderId=${FOLDER_ID}"
Результат:
{ "serviceAccounts": [ { "id": "ajebqtreob2d********", "folderId": "b1gvmob95yys********", "createdAt": "2018-10-18T13:42:40Z", "name": "my-robot", "description": "my description" } ] }
-
Сформируйте тело запроса, например в файле
body.json
. В свойствеaction
укажитеADD
, в свойствеroleId
— нужную роль, напримерeditor
, а в свойствеsubject
— типserviceAccount
и идентификатор сервисного аккаунта:body.json:
{ "accessBindingDeltas": [{ "action": "ADD", "accessBinding": { "roleId": "editor", "subject": { "id": "ajebqtreob2d********", "type": "serviceAccount" } } }] }
-
Назначьте роль сервисному аккаунту. Например, на каталог с идентификатором
b1gvmob95yys********
:export FOLDER_ID=b1gvmob95yys******** export IAM_TOKEN=CggaAT******** curl \ --request POST \ --header "Content-Type: application/json" \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --data '@body.json' \ "https://resource-manager.api.cloud.yandex.net/resource-manager/v1/folders/${FOLDER_ID}:updateAccessBindings"
Установите необходимые утилиты
-
Установите Git
с помощью команды:sudo apt install git
-
Установите Terraform:
-
Перейдите в корневую папку:
cd ~
-
Создайте папку
terraform
и перейдите в нее:mkdir terraform cd terraform
-
Скачайте файл
terraform_1.3.9_linux_amd64.zip
:curl \ --location \ --remote-name \ https://hashicorp-releases.yandexcloud.net/terraform/1.3.9/terraform_1.3.9_linux_amd64.zip
-
Установите утилиту
zip
и распакуйте zip-архив:apt install zip unzip terraform_1.3.9_linux_amd64.zip
-
Добавьте путь к папке, в которой находится исполняемый файл, в переменную
PATH
:export PATH=$PATH:~/terraform
-
Убедитесь, что Terraform установлен, выполнив команду:
terraform -help
-
-
Создайте конфигурационный файл с указанием источника провайдеров для Terraform:
-
Создайте файл
.terraformrc
с помощью встроенного редактораnano
:cd ~ nano .terraformrc
-
Добавьте в него следующий блок:
provider_installation { network_mirror { url = "https://terraform-mirror.yandexcloud.net/" include = ["registry.terraform.io/*/*"] } direct { exclude = ["registry.terraform.io/*/*"] } }
Подробнее о настройках зеркал см. в документации Terraform
.
-
Разверните ресурсы
-
Склонируйте репозиторий
yandex-cloud-examples/yc-dmz-with-high-available-ngfw
из GitHub и перейдите в папку сценарияyc-dmz-with-high-available-ngfw
:git clone https://github.com/yandex-cloud-examples/yc-dmz-with-high-available-ngfw.git cd yc-dmz-with-high-available-ngfw
-
Настройте профиль CLI для выполнения операций от имени сервисного аккаунта:
CLIЕсли у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра
--folder-name
или--folder-id
.-
Создайте авторизованный ключ для сервисного аккаунта и запишите его файл:
yc iam key create \ --service-account-id <идентификатор_сервисного_аккаунта> \ --folder-id <id_каталога_с_сервисным_аккаунтом> \ --output key.json
Где:
service-account-id
— идентификатор сервисного аккаунта.folder-id
— идентификатор каталога, в котором создан сервисный аккаунт.output
— имя файла с авторизованным ключом.
Результат:
id: aje8nn871qo4******** service_account_id: ajehr0to1g8b******** created_at: "2023-03-04T09:16:43.479156798Z" key_algorithm: RSA_2048
-
Создайте профиль CLI для выполнения операций от имени сервисного аккаунта:
yc config profile create sa-terraform
Результат:
Profile 'sa-terraform' created and activated
-
Задайте конфигурацию профиля:
yc config set service-account-key key.json yc config set cloud-id <идентификатор_облака> yc config set folder-id <идентификатор_каталога>
Где:
service-account-key
— файл с авторизованным ключом сервисного аккаунта.cloud-id
— идентификатор облака.folder-id
— идентификатор каталога.
-
Добавьте аутентификационные данные в переменные окружения:
export YC_TOKEN=$(yc iam create-token) export YC_CLOUD_ID=$(yc config get cloud-id) export YC_FOLDER_ID=$(yc config get folder-id)
-
-
Получите IP-адрес вашего ПК:
curl 2ip.ru
Результат:
192.2**.**.**
-
Откройте файл
terraform.tfvars
с помощью редактораnano
и отредактируйте:-
Строку, содержащую идентификатор облака:
cloud_id = "<идентификатор_облака>"
-
Строку, содержащую список разрешенных публичных IP-адресов для доступа к ВМ
jump-vm
:trusted_ip_for_access_jump-vm = ["<внешний_IP-адрес_ПК>/32"]
-
-
Разверните ресурсы в облаке с помощью Terraform:
-
Выполните инициализацию Terraform:
terraform init
-
Проверьте конфигурацию Terraform файлов:
terraform validate
-
Проверьте список создаваемых облачных ресурсов:
terraform plan
-
Создайте ресурсы:
terraform apply
-
Настройте шлюзы межсетевых экранов
В руководстве в качестве примера приводятся шаги настройки шлюзов межсетевых экранов FW-A и FW-B с базовыми политиками доступа (Access Control) и NAT, необходимыми для проверки работоспособности и тестирования отказоустойчивости, но не являющимися достаточными для развертывания инфраструктуры в продуктивной среде.
Подключитесь к сегменту управления через VPN
После развертывания инфраструктуры в каталоге mgmt
появится ВМ jump-vm
на основе образа Ubuntu с настроенным WireGuard VPNjump-vm
для доступа к подсетям сегментов mgmt
, dmz
, app
, database
.
Чтобы настроить VPN туннель:
-
Получите имя пользователя в подсистеме Linux:
whoami
-
Установите
на ваш ПК приложение WireGuard. -
Откройте приложение WireGuard и нажмите кнопку Add Tunnel.
-
В появившемся диалоге выберите файл
jump-vm-wg.conf
в папкеyc-dmz-with-high-available-ngfw
.Чтобы найти папку, созданную в подсистеме Linux, например, Ubuntu, введите в адресной строке диалога путь к файлу:
\\wsl$\Ubuntu\home\<имя_пользователя_Ubuntu>\yc-dmz-with-high-available-ngfw
Где
<имя_пользователя_Ubuntu>
— полученное ранее имя пользователя текущего дистрибутива ОС Linux. -
Нажмите кнопку Activate, чтобы активировать туннель.
-
Проверьте сетевую связность с сервером управления через VPN туннель WireGuard, выполнив в терминале команду:
ping 192.168.1.100
Важно
Если пакеты не достигают сервера управления, убедитесь, что в группе безопасности
mgmt-jump-vm-sg
в правилах входящего трафика указан верный внешний IP-адрес ПК.
Запустите консоль управления SmartConsole
Для управления и настройки решения Check Point
-
Подключитесь к серверу управления NGFW. Для этого в браузере перейдите по адресу
https://192.168.1.100
. -
Авторизуйтесь, используя логин
admin
и парольadmin
. -
В открывшемся интерфейсе Gaia Portal скачайте графическое приложение SmartConsole. Для этого нажмите Manage Software Blades using SmartConsole. Download Now!.
-
Установите приложение SmartConsole на ваш ПК.
-
Получите пароль доступа к SmartConsole. Для этого в терминале выполните команду:
terraform output fw_smartconsole_mgmt-server_password
-
Откройте SmartConsole и авторизуйтесь, указав логин
admin
, IP-адрес сервера управления192.168.1.100
и полученный на предыдущем шаге пароль доступа к SmartConsole.
Добавьте шлюзы межсетевых экранов
В режиме Wizard добавьте в сервер управления шлюз межсетевого экрана FW-A:
-
Слева сверху в выпадающем списке Objects выберите More object types → Network Object → Gateways and Servers → New Gateway....
-
Нажмите Wizard Mode.
-
В открывшемся диалоге введите:
- Gateway name:
FW-A
- Gateway platform:
CloudGuard IaaS
- IPv4:
192.168.1.10
- Gateway name:
-
Нажмите Next.
-
Получите пароль доступа к межсетевым экранам. Для этого в терминале выполните команду:
terraform output fw_sic-password
-
В поле One-time password введите полученный на предыдущем шаге пароль.
-
Нажмите Next и Finish.
Аналогичным образом добавьте в сервер управления шлюз межсетевого экрана FW-B со следующими значениями:
- Gateway name:
FW-B
- IPv4:
192.168.2.10
Настройте сетевые интерфейсы шлюза FW-A
Настройте сетевой интерфейс eth0
шлюза FW-A:
- На вкладке Gateways & Servers откройте диалог настроек шлюза FW-A.
- На вкладке Network Management в таблице Topology выберите интерфейс
eth0
и нажмите Modify.... - В разделе Leads To выберите Override.
- Напротив опции Specific наведите курсор на имя интерфейса
FW-A-eth0
и в появившемся окне нажмите значок редактирования. - В открывшемся диалоге переименуйте
FW-A-eth0
вmgmt
. - В разделе Security Zone активируйте Specify Security Zone и выберите InternalZone.
Аналогичным образом настройте сетевые интерфейсы eth1
, eth2
, eth3
и eth4
:
-
Для интерфейса
eth1
в разделе Security Zone укажите зону ExternalZone. Переименовывать интерфейс не нужно. -
Интерфейс
eth2
переименуйте вdmz
, активируйте Interface leads to DMZ и укажите зону DMZZone.Чтобы скрыть адреса ВМ, которые находятся в DMZ-сегменте и выходят в интернет, настройте Automatic Hide NAT. Для этого:
- В диалоге редактирования интерфейса
dmz
нажмите на сетьNet_10.160.1.0
и перейдите вкладку NAT. - Активируйте опцию Add automatic address translation rules, в выпадающем списке выберите Hide и опцию Hide behind gateway.
- Повторите те же действия для сети
Net_10.160.2.0
.
- В диалоге редактирования интерфейса
-
Интерфейс
eth3
переименуйте вapp
и укажите зону InternalZone. -
Интерфейс
eth4
переименуйте вdatabase
и укажите зону InternalZone.
Настройте сетевые интерфейсы шлюза FW-B
Настройте сетевые интерфейсы шлюза FW-B аналогично сетевым интерфейсам шлюза FW-A. При названии интерфейсов выбирайте существующие имена из списка.
Чтобы выбрать имя интерфейса из уже заданных:
- В разделе Leads To выберите Override.
- Напротив опции Specific в выпадающем списке найдите нужное имя.
Важно
Повторное переименование интерфейсов приведет к ошибке реплицирования имен сетевых объектов во время установки политик безопасности.
Создайте сетевые объекты
-
Слева сверху в выпадающем списке Objects выберите New Network... и создайте сети
public - a
иpublic - b
со следующими параметрами:Name Network address Net mask public - a 172.16.1.0 255.255.255.0 public - b 172.16.2.0 255.255.255.0 -
Выберите New Network Group... и создайте группу
public
, добавив в нее сетиpublic - a
иpublic - b
. -
Выберите New Host... и создайте хосты со следующими параметрами:
Name IPv4 address dmz-web-server 10.160.1.100 FW-a-dmz-IP 10.160.1.10 FW-a-public-IP 172.16.1.10 FW-b-dmz-IP 10.160.2.10 FW-b-public-IP 172.16.2.10 -
Выберите More object types → Network Object → Service → New TCP... и создайте TCP-сервис для развернутого приложения в DMZ-сегменте, указав имя
TCP_8080
и порт8080
.
Определите правила политики безопасности
Чтобы добавить правило безопасности:
- На вкладке Security policies в разделе Access Control выберите подраздел Policy.
- В таблице правил нажмите правую кнопку мыши и в открывшемся контекстном меню напротив опции New Rule выберите Above или Below.
- В новой строке:
- в колонке Name укажите
Web-server port forwarding on FW-a
; - в колонке Source нажмите иконку
+
и выберите объектpublic
; - в колонке Destination выберите объект
FW-a-public-IP
; - в колонке Services & Applications выберите объект
TCP_8080
; - в колонке Action выберите опцию
Accept
; - в колонке Track выберите опцию
Log
; - в колонке Install On выберите объект
FW-a
.
- в колонке Name укажите
Аналогичным образом внесите остальные правила из приведенной ниже таблицы базовых правил для проверки работы политик межсетевых экранов, прохождения проверок NLB healtcheck, публикации тестового приложения из DMZ-сегмента и тестирования отказоустойчивости.
No | Name | Source | Destination | VPN | Services & Applications | Action | Track | Install On |
---|---|---|---|---|---|---|---|---|
1 | Web-server port forwarding on FW-a | public | FW-a-public-IP | Any | TCP_8080 | Accept | Log | FW-a |
2 | Web-server port forwarding on FW-b | public | FW-b-public-IP | Any | TCP_8080 | Accept | Log | FW-b |
3 | FW management & NLB healthcheck | mgmt | FW-a, FW-b, mgmt-server | Any | https, ssh | Accept | Log | Policy Targets (All gateways) |
4 | Stealth | Any | FW-a, FW-b, mgmt-server | Any | Any | Drop | Log | Policy Targets (All gateways) |
5 | mgmt to DMZ | mgmt | dmz | Any | Any | Accept | Log | Policy Targets (All gateways) |
6 | mgmt to app | mgmt | app | Any | Any | Accept | Log | Policy Targets (All gateways) |
7 | mgmt to database | mgmt | database | Any | Any | Accept | Log | Policy Targets (All gateways) |
8 | ping from dmz to internet | dmz | ExternalZone | Any | icmp-requests (Group) | Accept | Log | Policy Targets (All gateways) |
9 | Cleanup rule | Any | Any | Any | Any | Drop | Log | Policy Targets (All gateways) |
Настройте статическую таблицу трансляции NAT
Source NAT
трансляции обеспечивают прохождение ответа от приложения через тот же межсетевой экран, через который поступил запрос от пользователя. Destination NAT
трансляции направляют запросы пользователей на сетевой балансировщик трафика, за которым находится группа веб-серверов приложения.
Заголовки пакетов, приходящих от Application Load Balancer с запросами от пользователей к опубликованному в DMZ приложению, будут транслироваться в Source IP
DMZ-интерфейсов межсетевых экранов и в Destination IP
балансировщика трафика для веб-серверов.
Чтобы настроить таблицы трансляции NAT шлюза FW-A:
- Перейдите в подраздел NAT раздела Access Control.
- В таблице правил нажмите правую кнопку мыши и в открывшемся контекстном меню напротив опции New Rule выберите Above или Below.
- В новой строке:
- в колонке Original Source нажмите иконку
+
и выберите объектpublic
; - в колонке Original Destination выберите объект
FW-a-public-IP
; - в колонке Original Services выберите объект
TCP_8080
; - в колонке Translated Source выберите объект
FW-a-dmz-IP
; - в колонке Translated Destination выберите объект
dmz-web-server
; - в колонке Install On выберите объект
FW-a
.
- в колонке Original Source нажмите иконку
- Обязательно поменяйте метод NAT для
FW-a-dmz-IP
. Для этого в таблице правой кнопкой мыши нажмите на объектFW-a-dmz-IP
и в контекстном меню выберите NAT Method > Hide.
Аналогичным образом настройте статическую таблицу трансляции NAT для шлюза FW-B в соответствии с таблицей:
No | Original Source | Original Destination | Original Services | Translated Source | Translated Destination | Translated Services | Install On |
---|---|---|---|---|---|---|---|
1 | public | FW-a-public-IP | TCP_8080 | FW-a-dmz-IP (Hide) | dmz-web-server | Original | FW-a |
2 | public | FW-b-public-IP | TCP_8080 | FW-b-dmz-IP (Hide) | dmz-web-server | Original | FW-b |
Примените правила политик безопасности
- Сверху слева нажмите Install Policy.
- В открывшемся диалоге нажмите Push & Install.
- В следующем диалоге нажмите Install и дождитесь завершения процесса.
Включите работу модуля route-switcher
После завершения настройки NGFW убедитесь, что проверка состояния FW-A и FW-B выдает значение Healthy
. Для этого в консоли управленияmgmt
выберите сервис Network Load Balancer и перейдите на страницу сетевого балансировщика route-switcher-lb-...
. Раскройте целевую группу и убедитесь, что состояния целевых ресурсов — Healthy
. Если их состояние — Unhealthy
, то необходимо убедиться, что FW-A и FW-B запущены, функционируют и настроены.
Когда статус FW-A и FW-B изменится на Healthy
, в файле route-switcher.tf
измените значение параметра start_module
модуля route-switcher
на true
. Чтобы включить работу модуля, выполните команды:
terraform plan
terraform apply
В течение 5 минут модуль route-switcher
начнет работу по обеспечению отказоустойчивости исходящего трафика в сегментах.
Протестируйте работоспособность и отказоустойчивость решения
Проверьте работоспособность системы
-
Чтобы узнать публичный IP-адрес балансировщика, в терминале выполните команду:
terraform output fw-alb_public_ip_address
-
Убедитесь, что сетевая инфраструктура доступна извне. Для этого в браузере перейдите по адресу:
http://<публичный_IP-адрес_балансировщика_ALB>
Если система доступна извне, в браузере откроется страница
Welcome to nginx!
. -
Убедитесь, что разрешающие правила политики безопасности межсетевых экранов активны. Для этого на вашем ПК перейдите в папку
yc-dmz-with-high-available-ngfw
и подключитесь по SSH к одной из ВМ в DMZ-сегменте:cd ~/yc-dmz-with-high-available-ngfw ssh -i pt_key.pem admin@<внутренний_IP-адрес_ВМ_в_DMZ_сегменте>
-
Чтобы проверить наличие доступа из ВМ в DMZ сегменте к публичному ресурсу в сети интернет, выполните команду:
ping ya.ru
Команда должна выполниться в соответствии с разрешающим правилом
ping from dmz to internet
. -
Убедитесь, что запрещающие правила политики безопасности выполняются.
Чтобы проверить отсутствие доступа к ВМ
Jump ВМ
в сегментеmgmt
из сегментаdmz
, выполните команду:ping 192.168.1.101
Выполнение команды должно завершиться ошибкой в соответствии с запрещающим правилом
Cleanup rule
.
Проверка отказоустойчивости
-
На вашем ПК установите утилиту
httping
для выполнения периодических http-запросов:sudo apt-get install httping
-
Чтобы узнать публичный IP-адрес балансировщика, в терминале выполните команду:
terraform output fw-alb_public_ip_address
-
Запустите входящий трафик к опубликованному в DMZ-сегменте приложению с помощью запроса к публичному IP-адресу балансировщика ALB:
httping http://<публичный_IP-адрес_балансировщика_ALB>
-
Откройте еще одно окно терминала и подключитесь по SSH к одной из ВМ в DMZ-сегменте:
ssh -i pt_key.pem admin@<внутренний_IP-адрес_ВМ_в_DMZ_сегменте>
-
Установите пароль для пользователя
admin
:sudo passwd admin
-
В консоли управления
Yandex Cloud измените параметры этой ВМ:- В списке сервисов выберите Compute Cloud.
- На панели слева выберите
Виртуальные машины. - В строке с нужной ВМ нажмите
и выберите Редактировать. - В открывшемся окне в блоке Дополнительно включите опцию Доступ к серийной консоли.
- Нажмите кнопку Сохранить изменения.
-
Подключитесь к серийной консоли ВМ, введите логин
admin
и созданный ранее пароль. -
С помощью команды
ping
запустите исходящий трафик из ВМ в DMZ-сегменте к ресурсу в сети интернет:ping ya.ru
-
В консоли управления
Yandex Cloud в каталогеmgmt
остановите ВМfw-a
, эмулируя отказ основного межсетевого экрана. -
Наблюдайте за пропаданием пакетов, отправляемых
httping
иping
. После отказа FW-A может наблюдаться пропадание трафика на протяжении приблизительно 1 мин, после чего трафик должен восстановиться. -
Убедитесь, что в таблице маршрутизации
dmz-rt
в каталогеdmz
дляnext hop
используется адрес FW-B. -
В консоли управления
Yandex Cloud запустите ВМfw-a
, эмулируя восстановление основного межсетевого экрана. -
Наблюдайте за пропаданием пакетов, отправляемых
httping
иping
. После восстановления FW-A может наблюдаться пропадание трафика на протяжении приблизительно 1 мин, после чего трафик должен восстановиться. -
Убедитесь, что в таблице маршрутизации
dmz-rt
в каталогеdmz
дляnext hop
используется адрес FW-A.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы выполните команду:
terraform destroy
Terraform удалит все ресурсы без возможности восстановления: сети, подсети, виртуальные машины, балансировщики, каталоги и т.д.
Так как созданные ресурсы расположены в каталогах, то в качестве более быстрого способа удаления всех ресурсов можно использовать удаление всех каталогов через консоль Yandex Cloud с последующим удалением файла terraform.tfstate
из папки yc-dmz-with-high-available-ngfw
на вашем ПК.