Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе Next-Generation Firewall
- Подготовьте облако к работе
- Подготовьте окружение
- Разверните ресурсы
- Настройте шлюзы межсетевых экранов
- Подключитесь к сегменту управления через VPN
- Запустите консоль управления SmartConsole
- Добавьте шлюзы межсетевых экранов
- Настройте сетевые интерфейсы шлюза FW-A
- Настройте сетевые интерфейсы шлюза FW-B
- Создайте сетевые объекты
- Определите правила политики безопасности
- Настройте статическую таблицу трансляции NAT
- Примените правила политик безопасности
- Включите работу модуля route-switcher
- Протестируйте работоспособность и отказоустойчивость решения
- Как удалить созданные ресурсы
С помощью руководства вы развернете высокодоступную отказоустойчивую сетевую инфраструктуру с выделенным DMZ
Схема решения представлена ниже.
Решение включает следующие основные сегменты (каталоги):
- Каталог public содержит Application Load Balancer для организации публичного доступа из сети интернет к опубликованным в DMZ приложениям.
- Каталог mgmt предназначен для размещения межсетевых экранов NGFW и ресурсов управления облачной инфраструктурой. Включает в себя две ВМ с межсетевыми экранами (fw-a, fw-b), ВМ сервера централизованного управления межсетевыми экранами (mgmt-server) и ВМ доступа к сегменту управления по VPN (jump-vm).
- Каталог dmz предоставляет возможность публикации приложений с открытым доступом из внешней сети интернет.
- Каталоги app и database могут быть использованы для размещения бизнес-логики приложений (в руководстве ВМ в них не устанавливаются).
Более подробное описание приведено в репозитории проекта
Чтобы развернуть защищенную высокодоступную сетевую инфраструктуру с выделением DMZ на основе Next-Generation Firewall:
- Подготовьте облако к работе.
- Подготовьте окружение.
- Разверните ресурсы.
- Настройте шлюзы межсетевых экранов.
- Включите работу модуля route-switcher.
- Протестируйте работоспособность и отказоустойчивость решения.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в 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.
Создайте сервисный аккаунт с правами администратора на облако
-
В консоли управления
выберите каталог, в котором хотите создать сервисный аккаунт. -
На вкладке Сервисные аккаунты нажмите кнопку Создать сервисный аккаунт.
-
Введите имя сервисного аккаунта, например,
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 -H "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 -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${IAM_TOKEN}" \ -d '@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 -LO 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: aje8nn871qo4a8bbopvb service_account_id: ajehr0to1g8bh0la8c8r 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.240.24.87
-
Откройте файл
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.
Добавьте шлюзы межсетевых экранов
Добавьте шлюз межсетевого экрана FW-A в сервер управления, используя Wizard:
-
Слева сверху в выпадающем списке 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.
Настройте Automatic Hide NAT, чтобы скрыть адреса ВМ, которые находятся в DMZ-сегменте и выходят в интернет. Для этого:- В диалоге редактирования интерфейса
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-reguests (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
и подключитесь к одной из ВМ в DMZ-сегменте по SSH: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:
ssh -i pt_key.pem admin@<Внутренний_ip_адрес_ВМ_в_DMZ_сегменте>
-
Установите пароль для пользователя
admin
:sudo passwd admin
-
В консоли управления
Yandex Cloud измените параметры этой ВМ:- В списке сервисов выберите Compute Cloud.
- В списке ВМ выберите нужную, нажмите
и выберите Редактировать. - В графе Дополнительно выберите опцию Разрешить доступ к серийной консоли.
-
Подключитесь к серийной консоли ВМ, введите логин
admin
и пароль созданный ранее. -
Запустите исходящий трафик из ВМ в DMZ-сегменте с помощью
ping
к ресурсу в сети интернет:ping ya.ru
-
В консоли Yandex Cloud в каталоге
mgmt
остановите ВМfw-a
, эмулируя отказ основного межсетевого экрана. -
Наблюдайте за пропаданием пакетов, отправляемых
httping
иping
. После отказа FW-A может наблюдаться пропадание трафика в среднем в течение 1 мин, после чего трафик должен восстановиться. -
Проверьте, что в таблице маршрутизации
dmz-rt
в каталогеdmz
используется адрес FW-B для next hop. -
В консоли управления
Yandex Cloud запустите ВМfw-a
, эмулируя восстановление основного межсетевого экрана. -
Наблюдайте за пропаданием пакетов, отправляемых
httping
иping
. После восстановления FW-A может наблюдаться пропадание трафика в среднем в течение 1 мин, после чего трафик должен восстановиться. -
Проверьте, что в таблице маршрутизации
dmz-rt
в каталогеdmz
используется адрес FW-A для next hop.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы выполните команду:
terraform destroy
Terraform удалит все ресурсы без возможности восстановления: сети, подсети, виртуальные машины, балансировщики, каталоги и т.д.
Так как созданные ресурсы расположены в каталогах, то в качестве более быстрого способа удаления всех ресурсов можно использовать удаление всех каталогов через консоль Yandex Cloud с дальнейшим удалением файла terraform.tfstate
из папки yc-dmz-with-high-available-ngfw
на вашем ПК.