- Описание решения
- Архитектура решения и основные компоненты
- Разворачиваемые сегменты и ресурсы
- Действия по развертыванию сценария
- Подготовьте облако к работе
- Подготовьте окружение
- Разверните ресурсы
- Настройте NGFW
- Проверка работоспособности
- Требования к развертыванию в продуктивной среде
- Удаление созданных ресурсов
Сценарий разворачивает в Yandex Cloud облачную инфраструктуру для решения задач:
- защиты и сегментации инфраструктуры на зоны безопасности
- публикации приложений в интернет из зоны DMZ
Каждый сегмент сети (далее сегмент) содержит ресурсы одного назначения, обособленные от других ресурсов. Например, DMZ сегмент предназначен для размещения общедоступных приложений (обычно Frontend веб-сервера), а сегмент mgmt содержит ресурсы, используемые для управления облачной сетевой инфраструктурой. В облаке каждому сегменту соответствует свой каталог и своя облачная сеть VPC. Связь между сегментами происходит через виртуальную машину Check Point Next-Generation Firewall (NGFW), обеспечивающую комплексную защиту сегментов и контроль трафика между сегментами.
Если необходимо обеспечить отказоустойчивость NGFW и высокую доступность развернутых приложений, то используйте рекомендуемое решение.
Описание элементов схемы:
Название элемента | Описание | Комментарии |
---|---|---|
VPC: public-vpc | Сегмент сети public | Для организации публичного доступа из интернет |
VPC: mgmt-vpc | Сегмент сети mgmt | Для управления облачной инфраструктурой и размещения служебных ресурсов |
VPC: dmz-vpc | Сегмент сети DMZ | Для размещения Frontend приложений, доступных из интернет |
FW | Виртуальная машина Check Point NGFW | Для защиты инфраструктуры и сегментации сети на зоны безопасности |
mgmt, public, dmz | Интерфейсы ВМ Check Point NGFW | Каждый интерфейс подключен в соответствующий VPC |
Jump ВМ | Виртуальная машина c настроенным WireGuard VPN | Для защищенного VPN подключения к сегменту управления |
Сервер управления FW | Виртуальная машина c ПО Check Point Security Management | Для централизованного управления решением Check Point |
Приложение | ВМ с веб-сервером Nginx | Пример тестового приложения, развернутого в 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 в варианте BYOL с Trial периодом 15 дней:
- ВМ NGFW Check Point CloudGuard IaaS - Firewall & Threat Prevention BYOL
- ВМ сервера управления Check Point CloudGuard IaaS - Security Management BYOL для задач управления NGFW
Для использования в продуктивной среде необходимо приобрести лицензии на решение Check Point CloudGuard IaaS. Если используется своя on-prem инсталляция сервера управления Check Point, то развертывать ВМ сервера управления в облаке не требуется.
Для контроля трафика между ресурсами внутри сегмента используются группы безопасности.
Решение создает в облаке ресурсы для 3 сегментов
Сегмент | Описание | Ресурсы | Каталоги и сети | Группы безопасности |
---|---|---|---|---|
public | Размещение ресурсов с доступом из интернет | + | + | |
mgmt | Управление облачной инфраструктурой | Check Point NGFW, сервер управления Check Point, Jump ВМ с WireGuard для подключения из интернет | + | + |
dmz | Размещение Frontend приложений, доступных из интернет | Виртуальная машина с веб-сервером Nginx для примера | + | + |
Важно
Если в будущем ожидается увеличение количества сегментов, то рекомендуется развернуть их заранее, т.к. ВМ с образом NGFW в облаке не поддерживает добавление новых сетевых интерфейсов после её создания. Дополнительные сегменты можно указать в файле
terraform.tfvars
.
Чтобы развернуть защищенную сетевую инфраструктуру на основе Check Point Next-Generation Firewall:
- Подготовьте облако к работе
- Подготовьте окружение
- Разверните ресурсы
- Настройте NGFW
- Протестируйте работоспособность решения
Если созданные ресурсы вам больше не нужны, удалите их.
Важно
Без шагов настройки NGFW проверить работоспособность решения не получится.
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
- На странице Биллинг убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе
ACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его. Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака. - Проверьте наличие учетной записи в облаке с правами admin на облако.
В стоимость поддержки инфраструктуры входит:
- плата за постоянно работающие ВМ (см. тарифы Yandex Compute Cloud);
- плата за использование публичных IP-адресов и исходящий трафик (см. тарифы Yandex Virtual Private Cloud).
Убедитесь, что в облаке достаточно квот и они не заняты ресурсами для других задач.
Посмотреть справочную информацию по количеству ресурсов, создаваемых в сценарии
Ресурс | Количество |
---|---|
Каталоги | 3 |
Виртуальные машины | 4 |
vCPU виртуальных машин | 12 |
RAM виртуальных машин | 20 ГБ |
Диски | 4 |
Объем SSD дисков | 240 ГБ |
Объем HDD дисков | 20 ГБ |
Облачные сети | 3 |
Подсети | 3 |
Таблицы маршрутизации | 2 |
Группы безопасности | 5 |
Статические публичные IP-адреса | 2 |
Статические маршруты | 3 |
В руководстве используется программное обеспечение для ОС Windows и подсистема Windows Subsystem for Linux. Инфраструктура разворачивается с помощью Terraform.
- Если WSL не установлена, установите ее.
- Дополнительно можно установить на подсистему WSL привычный вам дистрибутив ОС Linux, например, Ubuntu.
Важно
Все описанные далее действия в терминале выполняются в ОС Linux.
-
Склонируйте репозиторий
yandex-cloud-examples/yc-network-segmentation-with-checkpoint
из GitHub и перейдите в папку сценарияyc-network-segmentation-with-checkpoint
:git clone https://github.com/yandex-cloud-examples/yc-network-segmentation-with-checkpoint.git cd yc-network-segmentation-with-checkpoint
-
Настройте профиль CLI для выполнения операций от имени сервисного аккаунта (подробности).
-
Добавьте аутентификационные данные в переменную окружения:
export YC_TOKEN=$(yc iam create-token)
-
Получите публичный IP-адрес вашего ПК:
curl ifconfig.io
-
Заполните файл
terraform.tfvars
вашими значениями переменных. Файл содержит примеры значений, но вы можете заменить их своими данными (идентификатор облака, название сегментов и IP адреса подсетей, порт приложения в dmz, параметры для подключения к Jump ВМ). Обязательно укажите идентификатор вашего облакаcloud_id
и список публичных IP адресов/подсетейtrusted_ip_for_access_jump-vm
, с которых разрешено подключение к Jump ВМ. Откройте файлterraform.tfvars
и отредактируйте:-
Строку, содержащую идентификатор облака:
cloud_id = "<идентификатор_облака>"
-
Строку, содержащую список разрешенных публичных IP-адресов для доступа к ВМ
jump-vm
:trusted_ip_for_access_jump-vm = ["<внешний_IP_ПК>/32"]
Важно
Рекомендуется заранее указать дополнительные сегменты, если они могут потребоваться в будущем, т.к. ВМ с образом NGFW в облаке не поддерживает добавление новых сетевых интерфейсов после её создания.
Посмотреть описание переменных в terraform.tfvars
Название
параметраНужно
изменениеОписание Тип Пример cloud_id
да Идентификатор вашего облака в Yandex Cloud string
b1g8dn6s3v2eiid9dbci
az_name
- Зона доступности Yandex Cloud для размещения ресурсов string
ru-central1-d
security_segment_names
- Список названий сегментов. Первый сегмент для размещения ресурсов управления, второй с публичным доступом в интернет, третий для DMZ. Если требуются дополнительные сегменты, то нужно добавлять их в конец списка. При добавлении сегмента обязательно добавьте префикс для подсети в список subnet_prefix_list
.list(string)
["mgmt", "public", "dmz"]
subnet_prefix_list
- Список сетевых префиксов для подсетей, соответствующих списку названия сегментов security_segment_names
. По одному префиксу для сегмента.list(string)
["192.168.1.0/24", "172.16.1.0/24", "10.160.1.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
-
-
Разверните ресурсы в облаке с помощью Terraform:
-
Выполните инициализацию Terraform:
terraform init
-
Проверьте конфигурацию Terraform файлов:
terraform validate
-
Проверьте список создаваемых облачных ресурсов:
terraform plan
-
Создайте ресурсы:
terraform apply
-
-
После завершения процесса
terraform apply
в командной строке будет выведен список информации о развернутых ресурсах. В дальнейшем его можно будет посмотреть с помощью командыterraform output
:Посмотреть информацию о развернутых ресурсах
Название Описание Пример значения dmz-web-server_ip_address
IP адрес веб-сервера в сегменте dmz для тестирования публикации приложения из dmz. Используется для настройки Destination NAT в FW. 10.160.1.100
fw-mgmt-server_ip_address
IP адрес сервера управления FW 192.168.1.100
fw_gaia_portal_mgmt-server_password
Пароль по умолчанию для первоначального подключения по https к IP адресу сервера управления FW admin
fw_mgmt_ip_address
IP адрес FW в сети управления 192.168.1.10
fw_public_ip_address
Публичный IP адрес для FW D.D.D.D
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 ВМ E.E.E.E
path_for_private_ssh_key
Файл с private ключом для подключения по протоколу SSH к ВМ (jump-vm, fw, mgmt-server, веб-сервер в сегменте dmz) ./pt_key.pem
Вы можете настроить FW под ваши задачи в соответствие с корпоративной политикой безопасности. Для управления и настройки решения Check Point используется графическое приложение SmartConsole, доступное для операционной системы Windows.
В качестве примера приводятся шаги настройки FW с базовыми политиками доступа (Access Control) и NAT, необходимыми для проверки работоспособности, но не являющимися достаточными для развертывания инфраструктуры в продуктивной среде.
Шаги настройки NGFW в этом сценарии состоят из следующей последовательности действий, выполняемых в SmartConsole:
- Добавление FW
- Настройка сетевых интерфейсов FW
- Создание сетевых объектов
- Настройка политик доступа (Access Control - Policy)
- Настройка политик NAT трансляций (Access Control - NAT)
- Применение политик безопасности
Подробнее с возможностями Check Point и его настройкой можно познакомиться в бесплатном курсе Погружение в сетевую безопасность.
После развертывания инфраструктуры в каталоге mgmt
появится ВМ jump-vm
на основе образа Ubuntu с настроенным WireGuard VPN для защищенного подключения. Настройте VPN туннель к ВМ jump-vm
на вашем ПК для доступа к подсетям сегментов mgmt
, dmz
, public
.
Чтобы настроить VPN туннель:
-
Получите имя пользователя в подсистеме Linux:
whoami
-
Установите на ваш ПК приложение WireGuard.
-
Откройте приложение WireGuard и нажмите кнопку Add Tunnel.
-
В появившемся диалоге выберите файл
jump-vm-wg.conf
в папкеyc-network-segmentation-with-checkpoint
. Чтобы найти папку, созданную в подсистеме Linux, например, Ubuntu, введите в адресной строке диалога путь к файлу:\\wsl$\Ubuntu\home\<имя_пользователя_Ubuntu>\yc-network-segmentation-with-checkpoint
Где
<имя_пользователя_Ubuntu>
— имя пользователя текущего дистрибутива ОС Linux. -
Активируйте туннель нажатием на кнопку Activate.
-
Проверьте сетевую связность с сервером управления через VPN туннель WireGuard, выполнив в терминале команду:
ping 192.168.1.100
Важно
Если пакеты не достигают сервера управления, проверьте, что в группе безопасности
mgmt-jump-vm-sg
в правилах входящего трафика прописан верный публичный IP-адрес ПК.
Для управления и настройки решения Check Point установите и запустите графическое приложение SmartConsole:
-
Подключитесь к серверу управления 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 в сервер управления, используя Wizard:
-
Слева сверху в выпадающем списке Objects выберите More object types → Network Object → Gateways and Servers → New Gateway....
-
Нажмите Wizard Mode.
-
В открывшемся диалоге введите:
- Gateway name:
FW
- Gateway platform:
CloudGuard IaaS
- IPv4:
192.168.1.10
- Gateway name:
-
Нажмите Next.
-
Получите пароль доступа к FW:
terraform output fw_sic-password
-
В поле One-time password введите пароль, полученный ранее.
-
Нажмите Next и Finish.
Настройте сетевой интерфейс eth0
:
- На вкладке Gateways & Servers откройте диалог настроек FW. Для этого в списке кликните дважды на добавленный FW.
- На вкладке Network Management в таблице Topology выберите интерфейс
eth0
, нажмите Edit и в появившемся окне нажмите Modify.... - В разделе Security Zone активируйте Specify Security Zone и выберите InternalZone.
Аналогично настройте сетевые интерфейсы eth1
, eth2
:
- Для интерфейса
eth1
укажите в разделе Security Zone зону ExternalZone. - Для интерфейса
eth2
в разделе Leads To выберите Override и активируйте Interface leads to DMZ. В разделе Security Zone укажите зону DMZZone.
Interface | IPv4 address/mask | Leads To | Security Zone | Anti Spoofing |
---|---|---|---|---|
eth0 | 192.168.1.10/24 | This network (Internal) | InternalZone | Prevent and Log |
eth1 | 172.16.1.10/24 | Internet (External) | ExternalZone | Prevent and Log |
eth2 | 10.160.1.10/24 | This network, DMZ (Internal) | DMZZone | Prevent and Log |
-
Слева сверху в выпадающем списке Objects выберите New Network... и создайте сети со следующими данными:
Name Network address Net mask mgmt 192.168.1.0 255.255.255.0 public 172.16.1.0 255.255.255.0 dmz 10.160.1.0 255.255.255.0 Для сети dmz настройте Automatic Hide NAT, чтобы скрыть адреса ВМ, которые находятся в DMZ сегменте и выходят в интернет, за IP адресом FW в сегменте public. Для этого:
- В диалоге редактирования сети
dmz
перейдите на вкладку NAT. - Активируйте Add automatic address translation rules, выберите Hide из выпадающего списка и опцию Hide behind the gateway.
- В диалоге редактирования сети
-
Слева сверху в выпадающем списке Objects выберите New Host... и создайте хосты со следующими данными:
Name IPv4 address dmz-web-server 10.160.1.100 FW-public-IP 172.16.1.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
; - в колонке Destination выберите объект
FW-public-IP
; - в колонке Services & Applications выберите объект
http
; - в колонке Action выберите опцию
Accept
; - в колонке Track выберите опцию
Log
.
- в колонке Name впишите
Аналогично внесите остальные правила из ниже приведенной таблицы базовых правил для проверки работы политик FW, публикации тестового приложения из DMZ сегмента и тестирования отказоустойчивости.
No | Name | Source | Destination | VPN | Services & Applications | Action | Track | Install On |
---|---|---|---|---|---|---|---|---|
1 | Web-server port forwarding on FW | Any | FW-public-IP | Any | http | Accept | Log | Policy Targets (All gateways) |
2 | FW management | mgmt | FW, mgmt-server | Any | https, ssh | Accept | Log | Policy Targets (All gateways) |
3 | Stealth | Any | FW, mgmt-server | Any | Any | Drop | Log | Policy Targets (All gateways) |
4 | mgmt to DMZ | mgmt | dmz | Any | Any | Accept | Log | Policy Targets (All gateways) |
5 | mgmt to public | mgmt | public | Any | Any | Accept | Log | Policy Targets (All gateways) |
6 | ping from dmz to internet | dmz | ExternalZone | Any | icmp-reguests (Group) | Accept | Log | Policy Targets (All gateways) |
7 | Cleanup rule | Any | Any | Any | Any | Drop | Log | Policy Targets (All gateways) |
Описание правил политики доступа Access Control - Policy
Номер | Имя | Описание |
---|---|---|
1 | Web-server port forwarding on FW | Разрешение доступа из интернет к IP адресу FW в public сегменте по порту TCP 80 |
2 | FW management | Разрешение доступа к FW, серверу управления FW из mgmt сегмента для задач управления |
3 | Stealth | Запрет доступа к FW, серверу управления FW из других сегментов |
4 | mgmt to DMZ | Разрешение доступа из mgmt сегмента к dmz сегменту для задач управления |
5 | mgmt to public | Разрешение доступа из mgmt сегмента к public сегменту для задач управления |
6 | ping from dmz to internet | Разрешение ICMP пакетов из dmz сегмента в интернет для проверки работоспособности |
7 | Cleanup rule | Запрет доступа для остального трафика |
Destination NAT трансляции направляют запросы пользователей на веб-сервер приложения в dmz сегменте.
В заголовках пакетов с запросами от пользователей к опубликованному в DMZ приложению будет происходить трансляция Destination IP в IP адрес веб-сервера и Destination port в TCP порт 8080.
Чтобы настроить таблицы трансляции NAT шлюза FW:
-
Перейдите в подраздел NAT раздела Access Control;
-
В таблице правил в меню выберите Add rule on top.
-
В новой строке:
- в колонке Original Destination выберите объект
FW-public-IP
; - в колонке Original Services выберите объект
http
; - в колонке Translated Destination выберите объект
dmz-web-server
; - в колонке Translated Services выберите объект
TCP_8080
.
В таблице NAT появится правило:
No Original Source Original Destination Original Services Translated Source Translated Destination Translated Services Install On 1 Any FW-public-IP http Original dmz-web-server TCP_8080 Policy Targets (All gateways) - в колонке Original Destination выберите объект
- Вверху слева нажмите Install Policy.
- В открывшемся диалоге нажмите Publish & Install.
- В следующем диалоге нажмите Install и дождитесь завершения процесса.
-
Чтобы узнать публичный IP-адрес FW, выполните в терминале команду:
terraform output fw_public_ip_address
-
Проверьте, что сетевая инфраструктура доступна извне, перейдя в браузере по адресу:
http://<Публичный_ip_адрес_FW>
Если система доступна извне, должна открыться страница
Welcome to nginx!
. -
Проверьте, что активны разрешающие правила политики безопасности FW. Для этого на вашем ПК перейдите в папку
yc-network-segmentation-with-checkpoint
и подключитесь к ВМ в DMZ-сегменте по SSH:cd ~/yc-network-segmentation-with-checkpoint 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
. -
В SmartConsole в разделе
LOGS & MONITOR
на вкладкеLogs
найдите записи в моменты проведение тестов и проверьте, какие правила политики безопасности и действия были применены к трафику.
- Если необходимо обеспечить отказоустойчивость NGFW и высокую доступность развернутых приложений, то используйте рекомендуемое решение.
- Обязательно смените пароли, которые были переданы через сервис metadata в файлах
check-init...yaml
:- Пароль SIC для связи FW и сервера управления FW.
- Пароль от графической консоли Check Point SmartConsole.
- Пароль пользователя admin в сервере управления FW (можно изменить через Gaia Portal).
- Сохраните private SSH ключ
pt_key.pem
в надежное место либо пересоздайте его отдельно от Terraform. - Удалите публичный IP адрес у 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
Чтобы перестать платить за созданные ресурсы выполните команду:
terraform destroy
Terraform удалит все ресурсы без возможности восстановления: сети, подсети, виртуальные машины, каталоги и т.д.
Так как созданные ресурсы расположены в каталогах, то в качестве более быстрого способа удаления всех ресурсов можно использовать удаление всех каталогов через консоль Yandex Cloud с дальнейшим удалением файла terraform.tfstate
из папки yc-network-segmentation-with-checkpoint
на вашем ПК.