Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе Next-Generation Firewall
- Описание решения
- Архитектура решения и основные компоненты
- Разворачиваемые сегменты и ресурсы
- Подготовка к развертыванию
- Развертывание Terraform сценария
- Действия после развертывания сценария с видео-демонстрацией
- Подключение к сегменту управления
- Настройка NGFW
- Включение работы модуля route-switcher
- Проверка работоспособности
- Проверка отказоустойчивости
- Требования к развертыванию в продуктивной среде
- Удаление созданных ресурсов
Сценарий разворачивает в Yandex Cloud облачную инфраструктуру для решения задач:
- защиты и сегментации инфраструктуры на зоны безопасности
- публикации приложений в интернет из зоны DMZ
- обеспечения высокой доступности развернутых приложений
Каждый сегмент сети (далее сегмент) содержит ресурсы одного назначения, обособленные от других ресурсов. Например, DMZ сегмент предназначен для размещения общедоступных приложений (обычно Frontend веб-сервера), а сегмент Application содержит Backend приложения. В облаке каждому сегменту соответствует свой каталог и своя облачная сеть VPC. Связь между сегментами происходит через виртуальные машины Next-Generation Firewall (NGFW), обеспечивающие комплексную защиту сегментов и контроль трафика между сегментами.
Высокая доступность архитектуры достигается за счет:
- использования двух NGFW
- размещения ресурсов в двух зонах доступности
- сервиса Application Load Balancer для отказоустойчивости и балансировки опубликованных приложений в DMZ
- Облачной функции для переключения исходящего из сегмента трафика при отказе NGFW
Посмотреть вебинар Yandex Cloud "Реализуем защищённую высокодоступную сетевую инфраструктуру" (в вебинаре используется предыдущая версия модуля route-switcher):
Описание элементов схемы:
Название элемента | Описание | Комментарии |
---|---|---|
VPC: public | Сегмент сети public | Для организации публичного доступа из интернет |
VPC: mgmt | Сегмент сети mgmt | Для управления облачной инфраструктурой и размещения служебных ресурсов |
VPC: dmz | Сегмент сети DMZ | Для размещения Frontend приложений, доступных из интернет |
VPC: app | Сегмент сети app | Для размещения Backend приложений |
VPC: database | Сегмент сети database | Для размещения баз данных |
FW-A | Виртуальная машина Check Point NGFW | Для защиты инфраструктуры и сегментации сети на зоны безопасности. Активен для входящего трафика и исходящего трафика. |
FW-B | Виртуальная машина Check Point NGFW | Для защиты инфраструктуры и сегментации сети на зоны безопасности. Активен для входящего трафика и в резерве для исходящего трафика. |
ALB | Балансировщик нагрузки на FW-A и FW-B | Для балансировки и отказоустойчивости опубликованных в DMZ приложений |
Функция route-switcher | Облачная функция | Для переключения таблицы маршрутизации в сегменте |
Jump ВМ | Виртуальная машина c настроенным WireGuard VPN | Для защищенного VPN подключения к сегменту управления |
Сервер управления FW | Виртуальная машина c ПО Check Point Security Management | Для централизованного управления решением Check Point NGFW |
NLB | Сетевой балансировщик на группу веб-серверов | Для балансировки трафика на веб-серверы тестового приложения в DMZ сегменте |
Приложение | ВМ с веб-сервером Nginx | Пример тестового приложения, развернутого в DMZ сегменте |
Ключевыми элементами решения являются:
- Next-Generation Firewall
- Application Load Balancer
- Terraform модуль route-switcher
- Группы безопасности
FW-A и FW-B работают в режиме Active/Active для входящего в DMZ трафика и в режиме Active/Standby для исходящего трафика из сегментов.
В случае отказа FW-A сетевая связанность с интернетом и между сегментами будет выполняться через FW-B
NGFW используется для защиты и сегментации облачной сети с выделением DMZ зоны для размещения публичных приложений. В Yandex Cloud Marketplace доступно несколько вариантов NGFW.
В данном сценарии развернуто решение Check Point CloudGuard IaaS:
- Межсетевой экран, NAT, предотвращение вторжений, антивирус и защита от ботов
- Гранулярный контроль трафик на уровне приложений, логирование сессий
- Централизованное управление с помощью решения Check Point Security Management
- Решение Check Point в данном примере настроено с базовыми политиками доступа (Access Control) и NAT
Решение Check Point CloudGuard IaaS доступно в Yandex Cloud Marketplace в вариантах Pay as you go и BYOL. В этом примере используется BYOL вариант с Trial периодом 15 дней:
- 2 ВМ NGFW Check Point CloudGuard IaaS - Firewall & Threat Prevention BYOL
- ВМ сервера управления Check Point CloudGuard IaaS - Security Management BYOL
Для использования в продуктивной среде рекомендуется рассматривать варианты:
- NGFW Check Point CloudGuard IaaS - Firewall & Threat Prevention PAYG
- Для сервера управления Check Point CloudGuard IaaS - Security Management необходимо приобрести отдельную лицензию либо использовать свою on-prem инсталляцию сервера управления
Ссылки на вебинары по использованию решений Check Point в Yandex Cloud
- Check Point в Yandex Cloud Marketplace
- Обзор и установка CloudGuard IaaS Gateway в Yandex Cloud
- Установка CloudGuard IaaS Security Management и Standalone в Yandex Cloud
Для балансировки трафика приложений и отказоустойчивости в работе приложений, опубликованных в DMZ, используется ALB, который балансирует запросы пользователей на public интерфейсы FW-A и FW-B. Таким образом обеспечивается работа FW-A и FW-B в режиме Active/Active для входящего трафика в DMZ. В примере используется группа бэкендов Stream (TCP) с привязкой пользовательской сессии к эндпойнту (FW) на основе IP адреса пользователя. По умолчанию балансировщик ALB равномерно распределяет трафик между FW-A и FW-B. Можно настроить локализацию трафика, чтобы ALB отправлял запросы к FW той зоны доступности, в которой балансировщик принял запрос. Если в этой зоне доступности нет работающего FW, балансировщик отправит запрос в другую зону.
Важная информация
На FW-A и FW-B необходимо настроить Source NAT на IP адрес FW в сегменте dmz для обеспечения прохождения ответа от приложения через тот же FW, через который поступил запрос от пользователя. Смотрите раздел Настройка NGFW пункт 11.
Application Load Balancer предоставляет расширенные возможности, среди которых:
- Поддержка протоколов: HTTP/S, HTTP/S WebSocket, TCP/TLS, HTTP/S gRPC
- Гибкое распределение трафика между бэкендами приложений
- Обработка TLS-трафика: установка соединения и терминация TLS-сессий с помощью сертификатов из Yandex Сertificate Manager
- Возможность привязки пользовательской сессии и выбор режимов балансировки
- Создание и модификация ответов на запросы
- Анализ логов
В этом примере используется решение yc-route-switcher.
В облачной сети Yandex Cloud не поддерживается работа протоколов VRRP/HSRP между FW.
Для обеспечения отказоустойчивости исходящего трафика из сегмента модуль route-switcher выполняет следующие действия:
- Переключение next hop адресов в таблицах маршрутизации при отказе FW-A на FW-B
- Возврат next hop адресов в таблицах маршрутизации на FW-A после его восстановления
В данном сценарии подсети используют таблицу маршрутизации через FW-A для исходящего из сегмента трафика.
Среднее время реакции на сбой составляет 1 мин.
Модуль route-switcher создает следующие ресурсы, необходимые для его работы:
- Облачную функцию route-switcher
- NLB
- Бакет в Object Storage
Описание элементов схемы:
Название элемента | Описание |
---|---|
Каталог: mgmt | Каталог для размещения компонент модуля route-switcher |
VPC: mgmt | В подсетях сегмента управления расположены сетевые интерфейсы FW-A и FW-B, используемые для проверки их доступности |
FW-A, FW-B | Виртуальные машины Check Point NGFW, для которых требуется обеспечить отказоустойчивость |
Функция route-switcher | Облачная функция, которая выполняет проверку состояния FW-A и FW-B и в случае недоступности FW-A переключает next hop адреса в таблицах маршрутизации на FW-B. Также функция возвращает next hop адреса в таблицах маршрутизации на FW-A после его восстановления. |
NLB | Сетевой балансировщик для мониторинга доступности FW-A и FW-B |
Object Storage | Бакет в Object Storage для хранения файла конфигурации с информацией: - таблицы маршрутизации с указанием предпочтительных next hop адресов для префиксов - IP-адреса FW-A и FW-B: для проверки доступности, адреса для каждого сетевого интерфейса FW (IP-адрес FW и соответствующий IP-адрес резервного FW) |
Посмотреть подробности
Функция route-switcher вызывается по триггеру раз в минуту, проверяет, в каком состоянии находятся FW-A и FW-B, и в случае недоступности FW-A переключает next hop адреса в таблицах маршрутизации на FW-B. При восстановлении FW-A функция route-switcher возвращает next hop адреса в таблицах маршрутизации на FW-A.
Группы безопасности используются для контроля трафика между ресурсами внутри сегмента.
В данном сценарии группы безопасности разрешают входящий трафик по портам TCP 443, 22 и ICMP пакеты от источников внутри группы, а также разрешают любой исходящий трафик. Группы безопасности в сегментах mgmt, dmz, public также имеют дополнительные разрешения, например, для работы балансировщиков, NGFW и других развернутых ресурсов.
Решение создает в облаке ресурсы для 7 сегментов
Посмотреть подробности
Сегмент | Описание | Ресурсы | Каталоги и сети | Группы безопасности |
---|---|---|---|---|
public | публичный доступ из интернет | ALB | + | + |
mgmt | управление облачной инфраструктурой | 2 x Check Point NGFW, сервер управления Check Point, Jump ВМ с WireGuard для подключения из интернет, облачная функция route-switcher, NLB для проверки доступности NGFW, бакет для хранения файлов конфигураций для функции route-switcher | + | + |
dmz | для размещения Frontend приложений, доступных из интернет | NLB для балансировки по веб-серверам, группа виртуальных машин с 2-мя веб-серверами Nginx для примера | + | + |
app | для размещения Backend приложений | + | + | |
database | для размещения баз данных | + | + | |
vpc6 | на будущее | + | + | |
vpc7 | на будущее | + | + |
-
Перед выполнением развертывания нужно зарегистрироваться в Yandex Cloud и создать платежный аккаунт
-
Проверьте наличие учетной записи в облаке с правами admin на облако
-
Проверьте квоты в облаке, чтобы была возможность развернуть ресурсы в сценарии:
Посмотреть справочную информацию по количеству ресурсов, создаваемых в сценарии
Ресурс Количество Каталоги 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
-
Склонируйте репозиторий
yandex-cloud-examples/yc-dmz-with-high-available-ngfw
из GitHub и перейдите в папку сценарияdmz-fw-ha
:git clone https://github.com/yandex-cloud-examples/yc-dmz-with-high-available-ngfw.git cd yc-dmz-with-high-available-ngfw
-
Настройте окружение для развертывания (подробности):
export YC_TOKEN=$(yc iam create-token)
-
Заполните файл
terraform.tfvars
вашими значениями переменных. Файл содержит примеры значений, но вы можете заменить их своими данными (идентификатор облака, название vpc, подсети, порт приложения в DMZ, параметры для подключения к Jump ВМ). Обязательно укажите идентификатор вашего облакаcloud_id
и список публичных IP адресов/подсетейtrusted_ip_for_access_jump-vm
, с которых разрешено подключение к Jump ВМ. Рекомендуется указать все 7 сегментов с расчетом на будущее их использование, т.к. ВМ с образом NGFW в облаке не поддерживает добавление новых сетевых интерфейсов после её создания.Посмотреть переменные в terraform.tfvars
Название
параметраНужно
изменениеОписание Тип Пример cloud_id
да Идентификатор вашего облака в Yandex Cloud string
b1g8dn6s3v2eiid9dbci
az_name_list
- Список из двух зон доступности Yandex Cloud для размещения ресурсов list(string)
["ru-central1-a", "ru-central1-b"]
security_segment_names
- Список названий сегментов. Первый сегмент для размещения ресурсов управления, второй с публичным доступом в интернет, третий для DMZ. Если требуются дополнительные сегменты, то нужно добавлять их в конец списка. При добавлении сегмента обязательно добавьте префиксы для подсетей в списки zone1_subnet_prefix_list
иzone2_subnet_prefix_list
.list(string)
["mgmt", "public", "dmz"]
zone1_subnet_prefix_list
- Список сетевых префиксов в первой зоне доступности для подсетей, соответствующих списку названия сегментов security_segment_names
. По одному префиксу для сегмента.list(string)
["192.168.1.0/24", "172.16.1.0/24", "10.160.1.0/24"]
zone2_subnet_prefix_list
- Список сетевых префиксов во второй зоне доступности для подсетей, соответствующих списку названия сегментов security_segment_names
. По одному префиксу для сегмента.list(string)
["192.168.2.0/24", "172.16.2.0/24", "10.160.2.0/24"]
public_app_port
- TCP порт для опубликованного в DMZ приложения для подключения из интернет number
80
internal_app_port
- Внутренний TCP порт опубликованного в DMZ приложения, на который NGFW будет направлять трафик. Может отличаться от public_app_port или совпадать с ним. number
8080
trusted_ip_for_access_jump-vm
да Список публичных IP адресов/подсетей, с которых разрешено подключение к Jump ВМ. Используется во входящем правиле группы безопасности для Jump ВМ. list(string)
["A.A.A.A/32", "B.B.B.0/24"]
jump_vm_admin_username
- Имя пользователя для подключения к Jump ВМ по SSH string
admin
wg_port
- UDP порт для входящих соединений в настройках WireGuard на Jump ВМ number
51820
wg_client_dns
- Список адресов DNS серверов в облачной сети управления, которые будет использовать рабочая станция администратора после поднятия туннеля WireGuard к Jump ВМ 192.168.1.2, 192.168.2.2
-
Выполните инициализацию Terraform:
terraform init
-
Проверьте конфигурацию Terraform файлов:
terraform validate
-
Проверьте список создаваемых облачных ресурсов:
terraform plan
-
Создайте ресурсы. На развертывание всех ресурсов в облаке потребуется около 7 мин:
terraform apply
-
После завершения процесса terraform apply в командной строке будет выведен список информации о развернутых ресурсах. В дальнейшем его можно будет посмотреть с помощью команды
terraform output
:Посмотреть информацию о развернутых ресурсах
Название Описание Пример значения dmz-web-server-nlb_ip_address IP адрес балансировщика трафика в сегменте dmz, за которым находится целевая группа с веб-серверами для тестирования публикации приложения из dmz. Используется для настройки Destination NAT в FW. "10.160.1.100" fw-a_ip_address IP адрес в сети управления для FW-A "192.168.1.10" fw-alb_public_ip_address Публичный IP адрес балансировщика ALB. Используется для обращения к опубликованному в DMZ приложению из интернет. "C.C.C.C" fw-b_ip_address IP адрес в сети управления для FW-B "192.168.2.10" fw_gaia_portal_mgmt-server_password Пароль по умолчанию для первоначального подключения по https к IP адресу сервера управления FW "admin" fw_mgmt-server_ip_address IP адрес в сети управления для сервера управления FW "192.168.1.100" fw_sic-password Однократный пароль (SIC) для добавления FW в сервер управления FW Не показывается в общем выводе terraform output
. Для отображения значения используйтеterraform output fw_sic-password
fw_smartconsole_mgmt-server_password Пароль для подключения к серверу управления FW с помощью графического приложения Check Point SmartConsole Не показывается в общем выводе terraform output
. Для отображения значения используйтеterraform output fw_smartconsole_mgmt-server_password
jump-vm_path_for_WireGuard_client_config Файл конфигурации для защищенного VPN подключения с помощью клиента WireGuard к Jump ВМ "./jump-vm-wg.conf" jump-vm_public_ip_address_jump-vm Публичный IP адрес Jump ВМ "D.D.D.D" path_for_private_ssh_key Файл с private ключом для подключения по протоколу SSH к ВМ (jump-vm, fw-a, fw-b, mgmt-server, веб-серверы в сегменте dmz) "./pt_key.pem" route-switcher_nlb Имя сетевого балансировщика в каталоге mgmt
для мониторинга доступности FW-A и FW-B"route-switcher-hnaf1gr0sx" route-switcher_bucket Имя бакета в Object Storage в каталоге mgmt
для хранения файла конфигурации с информацией:
- таблицы маршрутизации с указанием предпочтительных next hop адресов для префиксов
- IP-адреса FW-A и FW-B: для проверки доступности, адреса для каждого FW (IP-адрес FW и соответствующий IP-адрес резервного FW)"route-switcher-hnaf1gr0sx" route-switcher_function Имя облачной функции в каталоге mgmt
, обеспечивающей работу модуля route-switcher по отказоустойчивости исходящего трафика из сегментов"route-switcher-lb-hnaf1gr0sx"
После успешного развертывания сценария Terraform рекомендуется выполнить следующую последовательность действий:
- Ознакомиться с требованиями к развертыванию в продуктивной среде
- Подключиться к сегменту управления с помощью Jump ВМ для настройки решения Check Point NGFW и доступа по SSH к развернутым ресурсам в облаке
- Настроить NGFW под задачи вашей инфраструктуры или согласно приведенным шагам в качестве примера
- Включить работу модуля route-switcher
- Выполнить базовую проверку работоспособности решения
- Выполнить базовую проверку отказоустойчивости решения
Важная информация
Без шагов настройки NGFW и включения работы модуля route-switcher проверить работоспособность и отказоустойчивость решения не получится.
Посмотреть видео-демонстрацию, которая содержит:
- Демонстрацию основных элементов решения в консоли Yandex Cloud после развертывания Terraform
- Подключение к сегменту управления и первоначальную настройка NGFW
- Пример базовых политик доступа и NAT в NGFW
- Проверка действия политик доступа на NGFW
- Тестирование отказоустойчивости
После выполнения развертывания в mgmt сегменте сети управления появляется Jump ВМ на основе образа Ubuntu с настроенным WireGuard VPN для защищенного подключения. После установления VPN туннеля к Jump ВМ на рабочей станции администратора появятся маршруты через VPN туннель к подсетям сегментов mgmt, dmz, app, database.
Вы также можете подключиться к Jump ВМ по SSH, используя SSH ключ и логин из вывода terraform output
.
-
Установите на рабочую станцию администратора приложение WireGuard для вашей операционной системы.
-
В папке с Terraform сценарием после создания ресурсов появляется файл
jump-vm-wg.conf
с настройками клиента WireGuard для подключения к Jump ВМ. Добавьте новый туннель (Import tunnel(s) from file) в приложении WireGuard для Windows или Mac OS, используя файлjump-vm-wg.conf
. Активируйте туннель нажатием на кнопку Activate. -
Проверьте в командной строке с помощью
ping 192.168.1.100
сетевую связность с сервером управления FW через VPN туннель WireGuard.
Смотрите пример подключения к сегменту управления в видео-демонстрации.
Вы можете настроить развернутые FW-A и FW-B под ваши задачи в соответствие с корпоративной политикой безопасности. Для управления и настройки UserGate NGFW используется веб-интерфейс.
В качестве примера приводятся шаги настройки FW-A и FW-B с базовыми политиками доступа (Access Control) и NAT, необходимыми для проверки работоспособности и тестирования отказоустойчивости в сценарии, но не являющимися достаточными для развертывания инфраструктуры в продуктивной среде.
Шаги настройки NGFW в этом сценарии состоят из следующей последовательности действий, выполняемых в SmartConsole:
- Настройка сетевых интерфейсов FW-A и FW-B
- Создание сетевых объектов
- Настройка политик доступа (Access Control - Policy)
- Настройка политик NAT трансляций (Access Control - NAT)
-
Подключитесь к FW-A по https://192.168.1.10:8001. Учетная запись администратора: логин
Admin
, парольutm
. После подключения будет предложено заменить пароль. -
Перейдите в верхнем меню в раздел
Настройки
, в левом меню в секцииUserGate
выберитеНастройки
. Нажмите на значение поляЧасовой пояс
. Выберите Ваш часовой пояс и нажмитеСохранить
. -
В левом меню в секции
Сеть
выберитеИнтерфейсы
. Нажмите наport0
. На вкладкеСеть
выберитеРежим: Статический
. Проверьте, что IP интерфейса192.168.1.10
. НажмитеСохранить
. -
Нажмите на
port1
. На вкладкеОбщие
включите чекбоксВключено
. ВыберитеЗона: Untrusted
. На вкладкеСеть
выберитеРежим: DHCP
. НажмитеСохранить
. Убедитесь, что интерфейс получил по DHCP IP адрес172.16.1.10
. Нажмите еще раз наport1
. На вкладкеСеть
выберитеРежим: Статический
и нажмитеСохранить
. -
Повторите аналогичные действия для
port2
, указавЗона: DMZ
. Убедитесь, что интерфейс получил по DHCP IP адрес10.160.1.10
. -
В левом меню в секции
Сеть
выберитеВиртуальные маршрутизаторы
. Нажмите на символ — (широкое тире) в столбцеСтатические маршруты
дляВиртуальный маршрутизатор по умолчанию
. С помощью кнопкиДобавить
добавьте статические маршруты согласно таблице:Название Включено Адрес назначения Шлюз route to mgmt-zone2
☑ 192.168.2.0/24
192.168.1.1
route to dmz-zone2
☑ 10.160.2.0/24
10.160.1.1
route to nlb-healthcheck-net1
☑ 198.18.235.0/24
192.168.1.1
route to nlb-healthcheck-net2
☑ 198.18.248.0/24
192.168.1.1
-
В левом меню в секции
Сеть
выберитеШлюзы
. Выберите строку с шлюзом с IP адресом192.168.1.1
. НажмитеУдалить
для удаления шлюза и подтвердите удаление. НажмитеДобавить
. Заполните поля:Название: public-gateway
,Интерфейс: port1
,IP шлюза: 172.16.1.1
. Включите чекбоксПо умолчанию
и нажмитеСохранить
. -
В левом меню в секции
Сеть
выберитеDNS
. В разделеСистемные DNS-серверы
добавьте IP-адрес192.168.1.2
облачного DNS-сервера в сегментеmgmt
. -
Опционально можно обновить версию ПО UserGate. В левом меню в секции
UserGate
выберитеНастройки
. В пунктеРасписание скачивания обновлений
нажмитеПроверка обновлений
. В открывшемся окне нажмитеПроверить обновления
. При наличии доступных обновлений их можно скачать. После завершения скачивания обновлений в левом меню в секцииUserGate
выберитеУправление устройством
. В разделеОперации с сервером
нажмитеУстановить сейчас
. Подтвердите установку обновлений. Во время обновления FW будет перезагружен. -
В левом меню в секции
Сеть
выберитеЗоны
. Нажмите на зонуManagement
и перейдите на вкладкуКонтроль доступа
. Проверьте, что для сервисаКонсоль администрирования
включен чекбокс ☑. На этой же строке в колонкеРазрешённые адреса
нажмите наЛюбой
. Добавьте подсети, с которых разрешен доступ к консоли администрирования UserGate. НажмитеДобавить
. Укажите192.168.1.0/24
и нажмитеСохранить
. Таким же образом добавьте еще подсеть192.168.2.0/24
. После этого в окнеВыберите IP-адрес/подсеть
нажмитеСохранить
. -
Для зоны
Management
в сервисCLI по SSH
подобным образом добавьте разрешенные адреса192.168.1.0/24
и192.168.2.0/24
, с которых разрешен доступ по SSH для управления UserGate. -
Для зоны
Management
в сервисCaptive-портал и страница блокировки
подобным образом добавьте разрешенные адреса198.18.235.0/24
и198.18.248.0/24
, используемые сетевым балансировщикомroute-switcher-lb-...
модуляroute-switcher
для мониторинга доступности UserGate. -
В левом меню в секции
Библиотеки
выберитеIP-адреса
. Добавьте группы в разделеГруппы
и для каждой группы добавьте IP-адреса в разделеАдреса из выбранной группы
в соответствие с таблицей:Название Уровень угрозы Адреса из выбранной группы mgmt средний 192.168.1.0/24, 192.168.2.0/24 dmz средний 10.160.1.0/24, 10.160.2.0/24 FW-a-public-IP средний 172.16.1.10 dmz-web-server средний 10.160.1.100 -
В левом меню в секции
Библиотеки
выберитеСервисы
и нажмитеДобавить
. В полеНазвание
укажитеTCP_8080
и нажмитеДобавить
. Выберитеtcp
дляСетевой протокол
и укажите в полеПорты назначения
значение8080
. Два раза нажмитеСохранить
. -
В левом меню в секции
Политики сети
выберитеNAT и маршрутизация
. Добавьте правило NAT трансляции для предоставления доступа в интернет из сегментаdmz
. Тогда заголовки пакетов с запросами из сегментаdmz
в интернет будут транслироваться в Source IP интерфейса FW в сегментеpublic
. НажмитеДобавить
и на вкладкеОбщие
заполните значения полей:Название
:DMZ to internet
Тип
: выбрать из спискаNAT
SNAT IP
:172.16.1.10
Журналирование
: выбрать из спискаЖурналировать начало сессии
-
Переключитесь на вкладку
Источник
, выберите зону источникаDMZ
. В разделеАдрес источника
нажмитеДобавить
и выберитеДобавить список IP-адресов
. Выберите IP-списокdmz
. -
Переключитесь на вкладку
Назначение
, выберите зону назначенияUntrusted
. РазделАдрес назначения
оставить пустым, чтобы в качестве назначения использовать любой IP-адрес в публичном интернет. В окнеСвойства правила
нажмитеСохранить
, чтобы завершить добавление NAT правила. -
Добавьте правило Destination NAT трансляции для направления запросов пользователей на сетевой балансировщик трафика, за которым находится группа веб-серверов приложения. При настройке этого правила добавьте Source NAT трансляцию, обеспечивающую прохождение ответа от приложения через тот же FW, через который поступил запрос от пользователя. Заголовки пакетов, приходящих от ALB, с запросами от пользователей к опубликованному в dmz приложению будут транслироваться в Source IP dmz интерфейса FW и в Destination IP балансировщика трафика для веб-серверов. Нажмите
Добавить
и на вкладкеОбщие
заполните значения полей:Название
:Internet to dmz-web-server
Тип
: выбрать из спискаDNAT
SNAT IP
:10.160.1.10
Журналирование
: выбрать из спискаЖурналировать начало сессии
-
Переключитесь на вкладку
Источник
, выберите зону источникаUntrusted
. РазделАдрес источника
оставить пустым, чтобы в качестве источника использовать любой IP-адрес. -
Переключитесь на вкладку
Назначение
. В разделеАдрес назначения
нажмитеДобавить
и выберитеДобавить список IP-адресов
. Выберите IP-списокFW-a-public-IP
. -
Переключитесь на вкладку
Сервис
и нажмитеДобавить
. В списке выберите сервисTCP_8080
, нажмитеДобавить
иЗакрыть
. -
Переключитесь на вкладку
DNAT
. В полеАдрес назначения DNAT
укажите10.160.1.100
. Включите чекбоксВключить SNAT
. В окнеСвойства правила
нажмитеСохранить
, чтобы завершить добавление DNAT правила.
Примечание
Правила NAT применяются поочередно сверху вниз в том порядке, в котором они указаны в списке. Выполняется только первое правило, для которого совпали все указанные в нём условия. Это значит, что более специфические правила должны быть выше в списке, чем более общие правила.
-
В левом меню в секции
Политики сети
выберитеМежсетевой экран
для добавления правил межсетевого экрана. НажмитеДобавить
и на вкладкеОбщие
заполните значения полей:Название
:Web-server port forwarding on FW-a
Действие
: выбрать из спискаРазрешить
Журналирование
: выбрать из спискаЖурналировать начало сессии
-
Переключитесь на вкладку
Источник
, выберите зону источникаUntrusted
. РазделАдрес источника
оставить пустым, чтобы в качестве источника использовать любой IP-адрес. -
Переключитесь на вкладку
Назначение
, выберите зону назначенияDMZ
. В разделеАдрес назначения
нажмитеДобавить
и выберитеДобавить список IP-адресов
. Выберите IP-списокdmz-web-server
. -
Переключитесь на вкладку
Сервис
и нажмитеДобавить
. В списке выберите сервисTCP_8080
, нажмитеДобавить
иЗакрыть
. В окнеСвойства правила межсетевого экрана
нажмитеСохранить
, чтобы завершить добавление правила. -
Добавьте остальные правила из таблицы ниже, чтобы настроить пример базовых правил для проверки работы политик FW, прохождения NLB healtcheck, публикации тестового приложения из dmz сегмента и тестирования отказоустойчивости. Обратите внимание, что правило
Web-server port forwarding on FW-a
повторно создавать не надо.# Название Действие Журналирование Зона источника Адрес источника Зона назначения Адрес назначения Сервис 1 Web-server port forwarding on FW-a Разрешить Журналировать начало сессии Untrusted Любой DMZ dmz-web-server TCP_8080 2 Mgmt to DMZ Разрешить Журналировать начало сессии Management mgmt DMZ dmz Любой 3 Ping from dmz to internet Разрешить Журналировать начало сессии DMZ dmz Untrusted Любой Any ICMP 4 Block all Запретить Нет Любая Любой Любая Любой Любой Примечание
Правила применяются поочередно сверху вниз в том порядке, в котором они указаны в списке. Выполняется только первое правило, для которого совпали все указанные в нём условия. Это значит, что более специфические правила должны быть выше в списке, чем более общие правила. Правило
Block all
необходимо для запрещения любого транзитного трафика через UserGate и находится в конце списка правил. Его необходимо добавить, т.к. правило по умолчаниюDefault block
не блокирует трафик, прошедший через DNAT правило.
Подключитесь к FW-B по https://192.168.2.10:8001. Настройте его аналогично FW-A, указав значения из таблиц:
Интерфейсы
Порт | Включено | Зона | Режим | IP интерфейса/маска |
---|---|---|---|---|
port0 |
☑ | Management |
Статический |
192.168.2.10/255.255.255.0 |
port1 |
☑ | Untrusted |
Статический |
172.16.2.10/255.255.255.0 |
port2 |
☑ | DMZ |
Статический |
10.160.2.10/255.255.255.0 |
Статические маршруты
Название | Включено | Адрес назначения | Шлюз |
---|---|---|---|
route to mgmt-zone1 |
☑ | 192.168.1.0/24 |
192.168.2.1 |
route to dmz-zone1 |
☑ | 10.160.1.0/24 |
10.160.2.1 |
route to nlb-healthcheck-net1 |
☑ | 198.18.235.0/24 |
192.168.2.1 |
route to nlb-healthcheck-net2 |
☑ | 198.18.248.0/24 |
192.168.2.1 |
Шлюзы
Название | Включено | Интерфейс | IP шлюза | По умолчанию |
---|---|---|---|---|
public-gateway |
☑ | port1 |
172.16.2.1 |
☑ |
Системные DNS-серверы
Адрес сервера |
---|
192.168.2.2 |
Правила NAT и DNAT трансляций
# | Тип | Название | SNAT IP | Журналирование | Зона источника | Адрес источника | Зона назначения | Адрес назначения | Сервис | Адрес назначения DNAT | Включить SNAT |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | NAT | DMZ to internet | 172.16.1.10 | Журналировать начало сессии | DMZ | dmz | Untrusted | Любой | Любой | — | — |
2 | DNAT | Internet to dmz-web-server | 10.160.1.10 | Журналировать начало сессии | Untrusted | Любой | — | FW-a-public-IP | TCP_8080 | 10.160.1.100 | ☑ |
-
Перейдите в верхнем меню в раздел
Диагностика и мониторинг
, в левом меню в секцииМониторинг
выберитеМаршруты
. Проверьте, что в выводе маршрутной информации отображаются добавленные статические маршруты и шлюз по умолчанию. -
В левом меню в секции
Сеть
выберитеЗапрос DNS
. В полеDNS-запрос (хост)
введите доменное имя ресурса в интернете, например,ya.ru
. НажмитеСтарт
и проверьте, что доменное имя резолвится в публичные IP адреса. -
В левом меню в секции
Сеть
выберитеPing
. В полеPing host
введите доменное имя ресурса в интернете, например,ya.ru
. ВыберитеИнтерфейс
:port1
. НажмитеСтарт
и проверьте, что ping успешно выполняется. В полеPing host
введите IP-адрес другого FW в сегментеmgmt
. ВыберитеИнтерфейс
:port0
. НажмитеСтарт
и проверьте, что ping успешно выполняется.
По умолчанию к UserGate можно подключиться по SSH по порту 2200:
ssh -i pt_key.pem Admin@192.168.1.10 -p 2200
После завершения настройки NGFW убедитесь, что проверка состояния FW-A и FW-B выдает значение Healthy
. Для этого в консоли Yandex Cloud в каталоге 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
После выполнения terraform apply
в каталоге mgmt
создается триггер route-switcher-trigger-...
, запускающий облачную функцию route-switcher раз в минуту. Триггер начинает работать в течение 5 минут после создания.
После этого включается работа модуля route-switcher по обеспечению отказоустойчивости исходящего трафика в сегментах.
-
Откройте в веб-браузере страницу
http://<Публичный_ip_адрес_балансировщика_ALB>
, который можно посмотреть в выводе командыterraform output fw-alb_public_ip_address
. Должна открыться страницаWelcome to nginx!
-
На рабочей станции, где запускалось развертывание Terraform, перейдите в папку с Terraform сценарием, подключитесь к одной из ВМ в dmz сегменте по SSH (замените IP адрес ВМ):
ssh -i pt_key.pem admin@10.160.2.22
-
Запустите
ping
к ресурсу в интернет. Пинг должен успешно пройти в соответствие с разрешающим правилом8. ping from dmz to internet
политики Access Control на FW:ping ya.ru
-
Запустите
ping
к Jump ВМ в mgmt сегменте. Пинг не проходит в соответствие с запрещающим правилом9. Cleanup rule
политики Access Control на FW:ping 192.168.1.101
-
На рабочей станции, где запускался Terraform сценарий, установите утилиту
httping
для выполнения периодических http запросов к тестовому приложению. Версия для Windows. Версия для Linux устанавливается командой:sudo apt-get install httping
-
Запустите входящий трафик к опубликованному в dmz сегменте приложению с помощью
httping
к публичному IP адресу балансировщика ALB, который можно посмотреть в выводе командыterraform output fw-alb_public_ip_address
:httping http://<Публичный_ip_адрес_балансировщика_ALB>
-
Подключитесь по SSH к одной из ВМ в dmz сегменте по SSH (замените IP адрес ВМ):
ssh -i pt_key.pem admin@10.160.2.22
-
Установите пароль для пользователя
admin
:sudo passwd admin
-
В консоли Yandex Cloud измените параметры этой ВМ, добавив "Разрешить доступ к серийной консоли". Подключитесь к серийной консоли ВМ, введите логин
admin
и пароль из 4-го шага. -
Запустите исходящий трафик из dmz сегмента с помощью
ping
к ресурсу в интернете:ping ya.ru
-
В консоли Yandex Cloud в каталоге mgmt остановите ВМ
fw-a
, эмулируя отказ основного FW. -
Наблюдайте за пропаданием пакетов httping и ping. После отказа FW-A может наблюдаться пропадание трафика в среднем в течение 1 мин, после чего трафик должен восстановиться.
-
Проверьте, что в таблице маршрутизации
dmz-rt
в каталоге dmz используется адрес FW-B для next hop. -
В консоли Yandex Cloud запустите ВМ
fw-a
, эмулируя восстановление основного FW. -
Наблюдайте за пропаданием пакетов httping и ping. После восстановления FW-A может наблюдаться пропадание трафика в среднем в течение 1 мин, после чего трафик должен восстановиться.
-
Проверьте, что в таблице маршрутизации
dmz-rt
в каталоге dmz используется адрес FW-A для next hop.
- Обязательно смените пароли, которые были переданы через сервис metadata в файлах: check-init...yaml:
- Пароль SIC для связи FW и сервера управления FW
- Пароль от графической консоли Check Point SmartConsole
- Пароль пользователя admin в сервере управления FW (можно изменить через Gaia Portal)
- Сохраните private SSH ключ pt_key.pem в надежное место либо пересоздайте его отдельно от Terraform
- Удалите публичный адрес у Jump ВМ, если не планируете ей пользоваться
- Если планируете использовать Jump ВМ для подключения к сегменту управления с помощью VPN WireGuard, то измените ключи для WireGuard на Jump ВМ и рабочей станции администратора
- Настройте Access Control политики и NAT в Check Point NGFW для вашей инсталляции
- Не назначайте публичные IP адреса на ВМ в сегментах, где используются таблицы маршрутизации через Check Point NGFW (подробности). Исключением является mgmt сегмент управления, где в таблицах маршрутизации не используется default route
0.0.0.0/0
. - Выберите подходящую лицензию и образ для Check Point CloudGuard IaaS (смотрите раздел Next-Generation Firewall)
Чтобы удалить ресурсы, созданные с помощью Terraform, выполните команду terraform destroy
.
Внимание
Terraform удалит все ресурсы, созданные в этом сценарии, без возможности восстановления: сети, подсети, виртуальные машины, балансировщики, каталоги и т.д.
Так как созданные ресурсы расположены в каталогах, то в качестве более быстрого способа удаления всех ресурсов можно использовать удаление всех каталогов через консоль Yandex Cloud с дальнейшим удалением файла terraform.tfstate
из папки.