{"id":25806122,"url":"https://github.com/yandex-cloud-examples/yc-network-segmentation-with-checkpoint","last_synced_at":"2025-10-23T23:17:53.594Z","repository":{"id":277815063,"uuid":"769058392","full_name":"yandex-cloud-examples/yc-network-segmentation-with-checkpoint","owner":"yandex-cloud-examples","description":"Сегментация облачной инфраструктуры на зоны безопасности с помощью решения Check Point Next-Generation Firewall.","archived":false,"fork":false,"pushed_at":"2025-02-16T09:54:55.000Z","size":1412,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-06-21T07:04:25.446Z","etag":null,"topics":["checkpoint","network-segmentation","ngfw","terraform","vpc","yandex-cloud","yandexcloud"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yandex-cloud-examples.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"security.tf","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-08T08:59:53.000Z","updated_at":"2025-03-23T12:39:56.000Z","dependencies_parsed_at":"2025-02-16T10:29:46.392Z","dependency_job_id":"97d744aa-ed95-47f3-8ece-9f5b9c3f80cc","html_url":"https://github.com/yandex-cloud-examples/yc-network-segmentation-with-checkpoint","commit_stats":null,"previous_names":["yandex-cloud-examples/yc-network-segmentation-with-checkpoint"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yandex-cloud-examples/yc-network-segmentation-with-checkpoint","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yandex-cloud-examples%2Fyc-network-segmentation-with-checkpoint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yandex-cloud-examples%2Fyc-network-segmentation-with-checkpoint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yandex-cloud-examples%2Fyc-network-segmentation-with-checkpoint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yandex-cloud-examples%2Fyc-network-segmentation-with-checkpoint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yandex-cloud-examples","download_url":"https://codeload.github.com/yandex-cloud-examples/yc-network-segmentation-with-checkpoint/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yandex-cloud-examples%2Fyc-network-segmentation-with-checkpoint/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275232725,"owners_count":25428226,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-15T02:00:09.272Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["checkpoint","network-segmentation","ngfw","terraform","vpc","yandex-cloud","yandexcloud"],"created_at":"2025-02-27T19:59:35.977Z","updated_at":"2025-10-23T23:17:48.550Z","avatar_url":"https://github.com/yandex-cloud-examples.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Сегментация облачной инфраструктуры с помощью решения Check Point Next-Generation Firewall \r\n\r\n## Содержание\r\n- [Описание решения](#описание-решения)\r\n- [Архитектура решения и основные компоненты](#архитектура-решения-и-основные-компоненты)\r\n- [Разворачиваемые сегменты и ресурсы](#разворачиваемые-сегменты-и-ресурсы)\r\n- [Действия по развертыванию сценария ](#действия-по-развертыванию-сценария)\r\n- [Подготовьте облако к работе](#подготовьте-облако-к-работе)\r\n- [Подготовьте окружение](#подготовьте-окружение)\r\n- [Разверните ресурсы](#разверните-ресурсы)\r\n- [Настройте NGFW](#настройте-ngfw)\r\n- [Проверка работоспособности](#протестируйте-работоспособность-решения)\r\n- [Требования к развертыванию в продуктивной среде](#требования-к-развертыванию-в-продуктивной-среде)\r\n- [Удаление созданных ресурсов](#как-удалить-созданные-ресурсы)\r\n\r\n\r\n## Описание решения\r\n\r\nСценарий разворачивает в Yandex Cloud облачную инфраструктуру для решения задач:\r\n- защиты и сегментации инфраструктуры на зоны безопасности\r\n- публикации приложений в интернет из зоны [DMZ](https://ru.wikipedia.org/wiki/DMZ_(компьютерные_сети))\r\n\r\nКаждый сегмент сети (далее сегмент) содержит ресурсы одного назначения, обособленные от других ресурсов. Например, DMZ сегмент предназначен для размещения общедоступных приложений (обычно Frontend веб-сервера), а сегмент mgmt содержит ресурсы, используемые для управления облачной сетевой инфраструктурой. В облаке каждому сегменту соответствует свой каталог и своя облачная сеть VPC. Связь между сегментами происходит через виртуальную машину Check Point Next-Generation Firewall (NGFW), обеспечивающую комплексную защиту сегментов и контроль трафика между сегментами. \r\n\r\nЕсли необходимо обеспечить отказоустойчивость NGFW и высокую доступность развернутых приложений, то используйте [рекомендуемое решение](https://cloud.yandex.ru/docs/tutorials/routing/high-accessible-dmz).\r\n\r\n\r\n## Архитектура решения и основные компоненты\r\n\r\n![Архитектура решения](./images/hld.svg)\r\n\r\nОписание элементов схемы:\r\n\r\n| Название элемента | Описание | Комментарии |\r\n| ----------- | ----------- | ----------- | \r\n| VPC: public-vpc | Сегмент сети public | Для организации публичного доступа из интернет | \r\n| VPC: mgmt-vpc | Сегмент сети mgmt | Для управления облачной инфраструктурой и размещения служебных ресурсов | \r\n| VPC: dmz-vpc | Сегмент сети DMZ | Для размещения Frontend приложений, доступных из интернет | \r\n| FW | Виртуальная машина Check Point NGFW | Для защиты инфраструктуры и сегментации сети на зоны безопасности |\r\n| mgmt, public, dmz | Интерфейсы ВМ Check Point NGFW | Каждый интерфейс подключен в соответствующий VPC |\r\n| Jump ВМ | Виртуальная машина c настроенным [WireGuard VPN](https://www.wireguard.com/) | Для защищенного VPN подключения к сегменту управления |\r\n| Сервер управления FW | Виртуальная машина c ПО Check Point Security Management | Для централизованного управления решением Check Point |\r\n| Приложение | ВМ с веб-сервером Nginx | Пример тестового приложения, развернутого в DMZ сегменте |\r\n\r\n\u003c/details\u003e\r\n\r\n### Next-Generation Firewall\r\n\r\nВ [Yandex Cloud Marketplace](https://yandex.cloud/marketplace?categories=security) доступно несколько вариантов NGFW. В данном сценарии используется решение [Check Point CloudGuard IaaS](https://yandex.cloud/ru/marketplace?publishers=f2evobrhpbdrcue7s9l5\u0026tab=software), предоставляющее следующие возможности:\r\n- Межсетевой экран, NAT, предотвращение вторжений, антивирус и защита от ботов\r\n- Гранулярный контроль трафик на уровне приложений, логирование сессий\r\n- Централизованное управление с помощью решения Check Point Security Management\r\n- Решение Check Point в данном примере настроено с базовыми политиками доступа (Access Control) и NAT\r\n\r\nРешение Check Point CloudGuard IaaS доступно в Yandex Cloud Marketplace в варианте BYOL с Trial периодом 15 дней:\r\n- ВМ NGFW [Check Point CloudGuard IaaS - Firewall \u0026 Threat Prevention BYOL](https://yandex.cloud/ru/marketplace/products/checkpoint/cloudguard-iaas-firewall-tp-byol-m) \r\n- ВМ сервера управления [Check Point CloudGuard IaaS - Security Management BYOL](https://cloud.yandex.ru/marketplace/products/checkpoint/cloudguard-iaas-security-management-byol-m) для задач управления NGFW\r\n\r\nДля использования в продуктивной среде необходимо приобрести лицензии на решение Check Point CloudGuard IaaS. Если используется своя on-prem инсталляция сервера управления Check Point, то развертывать ВМ сервера управления в облаке не требуется.\r\n\r\n\r\n### Группы безопасности\r\n\r\nДля контроля трафика между ресурсами внутри сегмента используются [группы безопасности](https://cloud.yandex.ru/docs/vpc/concepts/security-groups).\r\n\r\n\r\n## Разворачиваемые сегменты и ресурсы\r\n\r\nРешение создает в облаке ресурсы для 3 сегментов \r\n\r\n| Сегмент | Описание | Ресурсы | Каталоги и сети | Группы безопасности | \r\n| ----------- | ----------- | ----------- | ----------- | ----------- |\r\n| public | Размещение ресурсов с доступом из интернет | | + | + |\r\n| mgmt | Управление облачной инфраструктурой | Check Point NGFW, сервер управления Check Point, Jump ВМ с WireGuard для подключения из интернет | + | + |\r\n| dmz | Размещение Frontend приложений, доступных из интернет | Виртуальная машина с веб-сервером Nginx для примера | + | + |\r\n\r\n\u003e **Важно**\r\n\u003e \r\n\u003e Если в будущем ожидается увеличение количества сегментов, то рекомендуется развернуть их заранее, т.к. ВМ с образом NGFW в облаке не поддерживает добавление новых сетевых интерфейсов после её создания. Дополнительные сегменты можно указать в файле `terraform.tfvars`.\r\n\r\n## Действия по развертыванию сценария \r\n\r\nЧтобы развернуть защищенную сетевую инфраструктуру на основе Check Point Next-Generation Firewall:\r\n\r\n1. [Подготовьте облако к работе](#подготовьте-облако-к-работе)\r\n1. [Подготовьте окружение](#подготовьте-окружение)\r\n1. [Разверните ресурсы](#разверните-ресурсы)\r\n1. [Настройте NGFW](#настройте-ngfw)\r\n1. [Протестируйте работоспособность решения](#протестируйте-работоспособность-решения)\r\n\r\nЕсли созданные ресурсы вам больше не нужны, [удалите их](#как-удалить-созданные-ресурсы).\r\n\r\n\u003e **Важно**\r\n\u003e \r\n\u003e Без шагов настройки NGFW проверить работоспособность решения не получится.\r\n \r\n\r\n## Подготовьте облако к работе\r\n\r\nЗарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:\r\n\r\n1. Перейдите в [консоль управления](https://console.cloud.yandex.ru/), затем войдите в Yandex Cloud или зарегистрируйтесь.\r\n1. На странице [Биллинг](https://console.cloud.yandex.ru/billing) убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе `ACTIVE` или `TRIAL_ACTIVE`. Если платежного аккаунта нет, [создайте его](https://cloud.yandex.ru/docs/billing/quickstart/).\r\nЕсли у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на [странице облака](https://console.cloud.yandex.ru/cloud).\r\n1. Проверьте наличие учетной записи в облаке с правами admin на облако.\r\n\r\n\r\n### Необходимые платные ресурсы\r\n\r\nВ стоимость поддержки инфраструктуры входит:\r\n\r\n* плата за постоянно работающие ВМ (см. [тарифы Yandex Compute Cloud](https://cloud.yandex.ru/docs/compute/pricing));\r\n* плата за использование публичных IP-адресов и исходящий трафик (см. [тарифы Yandex Virtual Private Cloud](https://cloud.yandex.ru/docs/vpc/pricing)).\r\n\r\n\r\n### Необходимые квоты\r\n\r\nУбедитесь, что в облаке достаточно [квот](https://cloud.yandex.ru/docs/overview/concepts/quotas-limits) и они не заняты ресурсами для других задач.\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eПосмотреть справочную информацию по количеству ресурсов, создаваемых в сценарии\u003c/summary\u003e\r\n\r\n| Ресурс | Количество |\r\n| ----------- | ----------- |\r\n| Каталоги | 3 |\r\n| Виртуальные машины | 4 |\r\n| vCPU виртуальных машин | 12 |\r\n| RAM виртуальных машин | 20 ГБ |\r\n| Диски | 4 |\r\n| Объем SSD дисков | 240 ГБ |\r\n| Объем HDD дисков | 20 ГБ |\r\n| Облачные сети | 3 |\r\n| Подсети | 3 |\r\n| Таблицы маршрутизации | 2 |\r\n| Группы безопасности | 5 |\r\n| Статические публичные IP-адреса | 2 |\r\n| Статические маршруты | 3 |\r\n\r\n\u003c/details\u003e\r\n\r\n## Подготовьте окружение\r\n\r\nВ руководстве используется программное обеспечение для ОС Windows и подсистема [Windows Subsystem for Linux](https://ru.wikipedia.org/wiki/Windows_Subsystem_for_Linux).\r\nИнфраструктура разворачивается с помощью [ Terraform](https://www.terraform.io/). \r\n\r\n1. Если WSL не установлена, [установите](https://learn.microsoft.com/en-us/windows/wsl/install) ее.\r\n1. Дополнительно можно установить на подсистему WSL привычный вам дистрибутив ОС Linux, например, [Ubuntu](https://ubuntu.com/tutorials/install-ubuntu-on-wsl2-on-windows-11-with-gui-support#1-overview).\r\n\r\n\r\n\u003e **Важно**\r\n\u003e \r\n\u003e Все описанные далее действия в терминале выполняются в ОС Linux.\r\n\r\n1. [Установите Git](https://github.com/git-guides/install-git)\r\n1. [Установите Terraform](https://cloud.yandex.ru/docs/tutorials/infrastructure-management/terraform-quickstart#install-terraform)\r\n1. [Установите и настройте Yandex Cloud CLI](https://cloud.yandex.ru/docs/cli/quickstart)\r\n\r\n\r\n## Разверните ресурсы\r\n\r\n1. Склонируйте репозиторий `yandex-cloud-examples/yc-network-segmentation-with-checkpoint` из GitHub и перейдите в папку сценария `yc-network-segmentation-with-checkpoint`:\r\n    \r\n    ```bash\r\n    git clone https://github.com/yandex-cloud-examples/yc-network-segmentation-with-checkpoint.git\r\n    cd yc-network-segmentation-with-checkpoint\r\n    ```\r\n\r\n1. Настройте профиль CLI для выполнения операций от имени сервисного аккаунта ([подробности](https://cloud.yandex.ru/docs/tutorials/infrastructure-management/terraform-quickstart#get-credentials)).\r\n    \r\n1. Добавьте аутентификационные данные в переменную окружения:\r\n    ```bash\r\n    export YC_TOKEN=$(yc iam create-token)\r\n    ```\r\n\r\n1. Получите публичный IP-адрес вашего ПК:\r\n      \r\n      ```bash\r\n      curl ifconfig.io\r\n      ```\r\n\r\n1. Заполните файл `terraform.tfvars` вашими значениями переменных. Файл содержит примеры значений, но вы можете заменить их своими данными (идентификатор облака, название сегментов и IP адреса подсетей, порт приложения в dmz, параметры для подключения к Jump ВМ). Обязательно укажите идентификатор вашего облака `cloud_id` и список публичных IP адресов/подсетей `trusted_ip_for_access_jump-vm`, с которых разрешено подключение к Jump ВМ. Откройте файл `terraform.tfvars` и отредактируйте:\r\n\r\n   1. Строку, содержащую идентификатор облака:\r\n      \r\n      ```text\r\n      cloud_id = \"\u003cидентификатор_облака\u003e\"\r\n      ```\r\n\r\n   1. Строку, содержащую список разрешенных публичных IP-адресов для доступа к ВМ `jump-vm`:\r\n      \r\n      ```text\r\n      trusted_ip_for_access_jump-vm = [\"\u003cвнешний_IP_ПК\u003e/32\"]\r\n      ```\r\n\r\n    \u003e **Важно**\r\n    \u003e \r\n    \u003e Рекомендуется заранее указать дополнительные сегменты, если они могут потребоваться в будущем, т.к. ВМ с образом NGFW в облаке не поддерживает добавление новых сетевых интерфейсов после её создания. \r\n\r\n    \u003cdetails\u003e\r\n    \u003csummary\u003eПосмотреть описание переменных в terraform.tfvars\u003c/summary\u003e\r\n\r\n    | Название\u003cbr\u003eпараметра | Нужно\u003cbr\u003eизменение | Описание | Тип | Пример |\r\n    | ----------- | ----------- | ----------- | ----------- | ----------- |\r\n    | `cloud_id` | да | Идентификатор вашего облака в Yandex Cloud | `string` | `b1g8dn6s3v2eiid9dbci` |\r\n    | `az_name` | - | \u003ca href=\"https://cloud.yandex.ru/docs/overview/concepts/geo-scope\"\u003eЗона доступности\u003c/a\u003e Yandex Cloud для размещения ресурсов | `string` | `ru-central1-d` |\r\n    | `security_segment_names` | - | Список названий сегментов. Первый сегмент для размещения ресурсов управления, второй с публичным доступом в интернет, третий для DMZ. Если требуются дополнительные сегменты, то нужно добавлять их в конец списка. При добавлении сегмента обязательно добавьте префикс для подсети в список `subnet_prefix_list`. | `list(string)` |  `[\"mgmt\", \"public\", \"dmz\"]` |\r\n    | `subnet_prefix_list` | - | Список сетевых префиксов для подсетей, соответствующих списку названия сегментов `security_segment_names`. По одному префиксу для сегмента. | `list(string)` | `[\"192.168.1.0/24\", \"172.16.1.0/24\", \"10.160.1.0/24\"]` |\r\n    | `public_app_port` | - | TCP порт для опубликованного в DMZ приложения для подключения из интернет | `number` | `80` |\r\n    | `internal_app_port` | - | Внутренний TCP порт опубликованного в DMZ приложения, на который NGFW будет направлять трафик. Может отличаться от public_app_port или совпадать с ним. | `number` | `8080` |\r\n    | `trusted_ip_for_access_jump-vm` | да | Список публичных IP адресов/подсетей, с которых разрешено подключение к Jump ВМ. Используется во входящем правиле группы безопасности для Jump ВМ. | `list(string)` | `[\"A.A.A.A/32\", \"B.B.B.0/24\"]` |\r\n    | `jump_vm_admin_username` | - | Имя пользователя для подключения к Jump ВМ по SSH | `string` | `admin` |\r\n    | `wg_port` | - | UDP порт для входящих соединений в настройках WireGuard на Jump ВМ | `number` | `51820` |\r\n\r\n    \u003c/details\u003e\r\n\r\n\r\n1. Разверните ресурсы в облаке с помощью Terraform:\r\n\r\n   1. Выполните инициализацию Terraform:\r\n       \r\n       ```bash\r\n       terraform init\r\n       ```\r\n\r\n   1. Проверьте конфигурацию Terraform файлов:\r\n       \r\n       ```bash\r\n       terraform validate\r\n       ```\r\n\r\n   1. Проверьте список создаваемых облачных ресурсов:\r\n       \r\n       ```bash\r\n       terraform plan\r\n       ```\r\n\r\n   1. Создайте ресурсы:\r\n       \r\n       ```bash\r\n       terraform apply\r\n       ```\r\n1. После завершения процесса `terraform apply` в командной строке будет выведен список информации о развернутых ресурсах. В дальнейшем его можно будет посмотреть с помощью команды `terraform output`:\r\n\r\n    \u003cdetails\u003e\r\n    \u003csummary\u003eПосмотреть информацию о развернутых ресурсах\u003c/summary\u003e\r\n\r\n    | Название | Описание | Пример значения |\r\n    | ----------- | ----------- | ----------- |\r\n    | `dmz-web-server_ip_address` | IP адрес веб-сервера в сегменте dmz для тестирования публикации приложения из dmz. Используется для настройки Destination NAT в FW. | `10.160.1.100` |\r\n    | `fw-mgmt-server_ip_address` | IP адрес сервера управления FW | `192.168.1.100` |\r\n    | `fw_gaia_portal_mgmt-server_password` | Пароль по умолчанию для первоначального подключения по https к IP адресу сервера управления FW | `admin` |\r\n    | `fw_mgmt_ip_address` | IP адрес FW в сети управления | `192.168.1.10` |\r\n    | `fw_public_ip_address` | Публичный IP адрес для FW | `D.D.D.D` |\r\n    | `fw_sic-password` | Однократный пароль (SIC) для добавления FW в сервер управления FW | Не показывается в общем выводе `terraform output`. Для отображения значения используйте `terraform output fw_sic-password`. |\r\n    | `fw_smartconsole_mgmt-server_password` | Пароль для подключения к серверу управления FW с помощью графического приложения Check Point SmartConsole | Не показывается в общем выводе `terraform output`. Для отображения значения используйте `terraform output fw_smartconsole_mgmt-server_password`. |\r\n    | `jump-vm_path_for_WireGuard_client_config` | Файл конфигурации для защищенного VPN подключения с помощью клиента WireGuard к Jump ВМ | `./jump-vm-wg.conf` |\r\n    | `jump-vm_public_ip_address_jump-vm` | Публичный IP адрес Jump ВМ | `E.E.E.E` |\r\n    | `path_for_private_ssh_key` | Файл с private ключом для подключения по протоколу SSH к ВМ (jump-vm, fw, mgmt-server, веб-сервер в сегменте dmz) | `./pt_key.pem` |\r\n    \r\n    \u003c/details\u003e\r\n\r\n## Настройте NGFW\r\n\r\nВы можете настроить FW под ваши задачи в соответствие с корпоративной политикой безопасности. Для управления и настройки решения Check Point используется графическое приложение SmartConsole, доступное для операционной системы Windows. \r\n\r\nВ качестве примера приводятся шаги настройки FW с базовыми политиками доступа (Access Control) и NAT, необходимыми для проверки работоспособности, но не являющимися достаточными для развертывания инфраструктуры в продуктивной среде.\r\n\r\nШаги настройки NGFW в этом сценарии состоят из следующей последовательности действий, выполняемых в SmartConsole:\r\n- Добавление FW\r\n- Настройка сетевых интерфейсов FW\r\n- Создание сетевых объектов \r\n- Настройка политик доступа (Access Control - Policy)\r\n- Настройка политик NAT трансляций (Access Control - NAT)\r\n- Применение политик безопасности\r\n\r\nПодробнее с возможностями Check Point и его настройкой можно познакомиться в бесплатном курсе [Погружение в сетевую безопасность](https://cloud.yandex.ru/training/network-security).\r\n\r\n### Подключитесь к сегменту управления через VPN\r\n\r\nПосле развертывания инфраструктуры в каталоге `mgmt` появится ВМ `jump-vm` на основе образа Ubuntu с настроенным [WireGuard VPN](https://www.wireguard.com/) для защищенного подключения. Настройте VPN туннель к ВМ `jump-vm` на вашем ПК для доступа к подсетям сегментов `mgmt`, `dmz`, `public`.  \r\n\r\nЧтобы настроить VPN туннель:\r\n\r\n1. Получите имя пользователя в подсистеме Linux:\r\n\r\n   ```bash\r\n   whoami\r\n   ```\r\n\r\n1. [Установите](https://download.wireguard.com/windows-client/wireguard-installer.exe) на ваш ПК приложение WireGuard.\r\n1. Откройте приложение WireGuard и нажмите кнопку **Add Tunnel**.\r\n1. В появившемся диалоге выберите файл `jump-vm-wg.conf` в папке `yc-network-segmentation-with-checkpoint`.\r\n   Чтобы найти папку, созданную в подсистеме Linux, например, Ubuntu, введите в адресной строке диалога путь к файлу:\r\n\r\n   ```bash\r\n   \\\\wsl$\\Ubuntu\\home\\\u003cимя_пользователя_Ubuntu\u003e\\yc-network-segmentation-with-checkpoint\r\n   ```\r\n   \r\n   Где `\u003cимя_пользователя_Ubuntu\u003e` — имя пользователя текущего дистрибутива ОС Linux.\r\n\r\n1. Активируйте туннель нажатием на кнопку **Activate**.\r\n1. Проверьте сетевую связность с сервером управления через VPN туннель WireGuard, выполнив в терминале команду:\r\n   \r\n   ```bash\r\n   ping 192.168.1.100\r\n   ```\r\n\r\n   \u003e **Важно**\r\n   \u003e \r\n   \u003e Если пакеты не достигают сервера управления, проверьте, что в [группе безопасности](https://cloud.yandex.ru/docs/vpc/concepts/security-groups) `mgmt-jump-vm-sg` в правилах входящего трафика прописан верный публичный IP-адрес ПК.\r\n\r\n\r\n\r\n### Запустите консоль управления SmartConsole\r\n\r\nДля управления и настройки решения Check Point установите и запустите графическое приложение SmartConsole: \r\n\r\n1. Подключитесь к серверу управления NGFW, перейдя в браузере по адресу https://192.168.1.100. \r\n1. Авторизуйтесь, используя логин `admin` и пароль `admin`. \r\n1. В открывшемся интерфейсе Gaia Portal скачайте графическое приложение SmartConsole. Для этого нажмите **Manage Software Blades using SmartConsole. Download Now!**.\r\n1. Установите приложение SmartConsole на ПК.\r\n1. Получите пароль доступа к SmartConsole:\r\n   \r\n    ```bash\r\n    terraform output fw_smartconsole_mgmt-server_password\r\n    ```\r\n\r\n1. Откройте SmartConsole и авторизуйтесь, указав логин `admin`, IP-адрес сервера управления `192.168.1.100` и пароль доступа к SmartConsole.\r\n\r\n### Добавьте FW\r\n\r\nДобавьте FW в сервер управления, используя Wizard:\r\n\r\n1. Слева сверху в выпадающем списке **Objects** выберите **More object types → Network Object → Gateways and Servers → New Gateway...**.\r\n1. Нажмите **Wizard Mode**.\r\n1. В открывшемся диалоге введите:\r\n   * **Gateway name:** `FW`\r\n   * **Gateway platform:** `CloudGuard IaaS`\r\n   * **IPv4:** `192.168.1.10`\r\n1. Нажмите **Next**.\r\n1. Получите пароль доступа к FW:\r\n   \r\n    ```bash\r\n    terraform output fw_sic-password\r\n    ```\r\n\r\n1. В поле **One-time password** введите пароль, полученный ранее.\r\n1. Нажмите **Next** и **Finish**.\r\n\r\n### Настройте сетевые интерфейсы шлюза FW\r\n\r\nНастройте сетевой интерфейс `eth0`:\r\n\r\n1. На вкладке **Gateways \u0026 Servers** откройте диалог настроек FW. Для этого в списке кликните дважды на добавленный FW.\r\n1. На вкладке **Network Management** в таблице **Topology** выберите интерфейс `eth0`, нажмите **Edit** и в появившемся окне нажмите **Modify...**.\r\n1. В разделе **Security Zone** активируйте **Specify Security Zone** и выберите **InternalZone**.\r\n\r\nАналогично настройте сетевые интерфейсы `eth1`, `eth2`:\r\n\r\n1. Для интерфейса `eth1` укажите в разделе **Security Zone** зону **ExternalZone**.\r\n1. Для интерфейса `eth2` в разделе **Leads To** выберите **Override** и активируйте **Interface leads to DMZ**. В разделе **Security Zone** укажите зону **DMZZone**.\r\n\r\n| Interface | IPv4 address/mask | Leads To | Security Zone | Anti Spoofing |\r\n| ----------- | ----------- | ----------- | ----------- | ----------- |\r\n| eth0 | 192.168.1.10/24 | This network (Internal) | InternalZone | Prevent and Log |\r\n| eth1 | 172.16.1.10/24 | Internet (External) | ExternalZone | Prevent and Log |\r\n| eth2 | 10.160.1.10/24 | This network, DMZ (Internal) | DMZZone | Prevent and Log |\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eНастройка интерфейсов для FW\u003c/summary\u003e\r\n\r\n\u003cimg src=\"./images/fw_interfaces.png\" alt=\"Интерфейсы FW\" width=\"400\"/\u003e\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eНастройка mgmt интерфейса FW\u003c/summary\u003e\r\n\r\n![FW_eth0](./images/fw_eth0.png)\r\n\r\n\u003c/details\u003e\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eНастройка public интерфейса FW\u003c/summary\u003e\r\n\r\n![FW_eth1](./images/fw_eth1.png)\r\n\r\n\u003c/details\u003e\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eНастройка dmz интерфейса FW\u003c/summary\u003e\r\n\r\n![FW_eth2](./images/fw_eth2.png)\r\n\r\n\u003c/details\u003e\r\n\u003c/details\u003e \r\n\r\n\r\n### Создайте сетевые объекты\r\n\r\n1. Слева сверху в выпадающем списке **Objects** выберите **New Network...** и создайте сети со следующими данными:\r\n\r\n    | Name | Network address | Net mask |\r\n    | ----------- | ----------- | ----------- |\r\n    | mgmt | 192.168.1.0 | 255.255.255.0 |\r\n    | public | 172.16.1.0 | 255.255.255.0 |\r\n    | dmz | 10.160.1.0 | 255.255.255.0 |\r\n\r\n    \u003cdetails\u003e\r\n    \u003csummary\u003eПример скриншота для public\u003c/summary\u003e\r\n\r\n    \u003cimg src=\"./images/public_network.png\" alt=\"public сеть\" width=\"400\"/\u003e\r\n\r\n    \u003c/details\u003e\r\n\r\n    Для сети dmz настройте Automatic Hide NAT, чтобы скрыть адреса ВМ, которые находятся в DMZ сегменте и выходят в интернет, за IP адресом FW в сегменте public. Для этого:\r\n      1. В диалоге редактирования сети `dmz` перейдите на вкладку **NAT**.\r\n      1. Активируйте **Add automatic address translation rules**, выберите **Hide** из выпадающего списка и опцию **Hide behind the gateway**.\r\n\r\n    \u003cdetails\u003e\r\n    \u003csummary\u003eНастройка NAT для dmz сети\u003c/summary\u003e\r\n\r\n    \u003cimg src=\"./images/dmz_nat_network.png\" alt=\"NAT для dmz сети\" width=\"400\"/\u003e\r\n\r\n    \u003c/details\u003e\r\n\r\n\r\n1. Слева сверху в выпадающем списке **Objects** выберите **New Host...** и создайте хосты со следующими данными:\r\n\r\n    | Name | IPv4 address |\r\n    | ----------- | ----------- |\r\n    | dmz-web-server | 10.160.1.100 |\r\n    | FW-public-IP | 172.16.1.10 |\r\n\r\n    \u003cdetails\u003e\r\n    \u003csummary\u003eПример скриншота для dmz-web-server\u003c/summary\u003e\r\n\r\n    \u003cimg src=\"./images/dmz-web-server_host.png\" alt=\"dmz-web-server\" width=\"400\"/\u003e\r\n\r\n    \u003c/details\u003e\r\n\r\n1. Выберите **More object types → Network Object → Service → New TCP...** и создайте TCP-сервис для развернутого приложения в DMZ-сегменте, указав имя `TCP_8080` и порт `8080`.\r\n\r\n    \u003cdetails\u003e\r\n    \u003csummary\u003eСкриншот TCP Service\u003c/summary\u003e\r\n\r\n    \u003cimg src=\"./images/tcp_8080_service.png\" alt=\"TCP Service\" width=\"400\"/\u003e\r\n\r\n    \u003c/details\u003e\r\n\r\n### Определите правила политики безопасности\r\n\r\nЧтобы добавить правило безопасности:\r\n\r\n1. На вкладке **Security policies** в разделе **Access Control** выберите подраздел **Policy**.\r\n1. В таблице правил нажмите правую кнопку мыши и напротив опции **New Rule** контекстного меню выберите **Above** или **Below**.\r\n1. В новой строке:\r\n   * в колонке **Name** впишите `Web-server port forwarding on FW`;\r\n   * в колонке **Destination** выберите объект `FW-public-IP`;\r\n   * в колонке **Services \u0026 Applications** выберите объект `http`;\r\n   * в колонке **Action** выберите опцию `Accept`;\r\n   * в колонке **Track** выберите опцию `Log`.\r\n\r\n\r\nАналогично внесите остальные правила из ниже приведенной таблицы базовых правил для проверки работы политик FW, публикации тестового приложения из DMZ сегмента и тестирования отказоустойчивости.\r\n\r\n| No | Name | Source | Destination | VPN | Services \u0026 Applications | Action | Track | Install On |\r\n| ----------- | ----------- | ----------- | ----------- | ----------- | ----------- | ----------- | ----------- | ----------- |\r\n| 1 | Web-server port forwarding on FW | Any | FW-public-IP | Any | http | Accept | Log | Policy Targets (All gateways) |\r\n| 2 | FW management | mgmt | FW, mgmt-server | Any | https, ssh | Accept | Log | Policy Targets (All gateways)  |\r\n| 3 | Stealth | Any | FW, mgmt-server | Any | Any | Drop | Log | Policy Targets (All gateways) |\r\n| 4 | mgmt to DMZ | mgmt | dmz | Any | Any | Accept | Log | Policy Targets (All gateways) |\r\n| 5 | mgmt to public | mgmt | public | Any | Any | Accept | Log | Policy Targets (All gateways) |\r\n| 6 | ping from dmz to internet | dmz | ExternalZone | Any | icmp-reguests (Group) | Accept | Log | Policy Targets (All gateways) |\r\n| 7 | Cleanup rule | Any | Any | Any | Any | Drop | Log | Policy Targets (All gateways) |\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eОписание правил политики доступа Access Control - Policy\u003c/summary\u003e\r\n\r\n| Номер | Имя | Описание |\r\n| ----------- | ----------- | ----------- |\r\n| 1 | Web-server port forwarding on FW | Разрешение доступа из интернет к IP адресу FW в public сегменте по порту TCP 80 | \r\n| 2 | FW management | Разрешение доступа к FW, серверу управления FW из mgmt сегмента для задач управления |\r\n| 3 | Stealth | Запрет доступа к FW, серверу управления FW из других сегментов |\r\n| 4 | mgmt to DMZ | Разрешение доступа из mgmt сегмента к dmz сегменту для задач управления |\r\n| 5 | mgmt to public | Разрешение доступа из mgmt сегмента к public сегменту для задач управления |\r\n| 6 | ping from dmz to internet | Разрешение ICMP пакетов из dmz сегмента в интернет для проверки работоспособности |\r\n| 7 | Cleanup rule | Запрет доступа для остального трафика |\r\n\r\n\u003c/details\u003e\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eСкриншот Access Control - Policy\u003c/summary\u003e\r\n\r\n![Access Control - Policy](./images/fw_access_control_policy.png)\r\n\r\n\u003c/details\u003e\r\n\r\n### Настройте статическую таблицу трансляции NAT\r\n\r\nDestination NAT трансляции направляют запросы пользователей на веб-сервер приложения в dmz сегменте.\r\n\r\nВ заголовках пакетов с запросами от пользователей к опубликованному в DMZ приложению будет происходить трансляция Destination IP в IP адрес веб-сервера и Destination port в TCP порт 8080.\r\n\r\nЧтобы настроить таблицы трансляции NAT шлюза FW:\r\n\r\n1. Перейдите в подраздел **NAT** раздела **Access Control**;\r\n1. В таблице правил в меню выберите **Add rule on top**.\r\n1. В новой строке:\r\n   * в колонке **Original Destination** выберите объект `FW-public-IP`;\r\n   * в колонке **Original Services** выберите объект `http`;\r\n   * в колонке **Translated Destination** выберите объект `dmz-web-server`;\r\n   * в колонке **Translated Services** выберите объект `TCP_8080`.\r\n\r\n   В таблице NAT появится правило:\r\n\r\n   | No | Original Source | Original Destination | Original Services | Translated Source | Translated Destination | Translated Services | Install On |\r\n   | ----------- | ----------- | ----------- | ----------- | ----------- | ----------- | ----------- | ----------- | \r\n   | 1 | Any | FW-public-IP | http | Original | dmz-web-server | TCP_8080 | Policy Targets (All gateways) |\r\n\r\n   \u003cdetails\u003e\r\n   \u003csummary\u003eСкриншот Access Control - NAT\u003c/summary\u003e\r\n\r\n   \u003cimg src=\"./images/nat.png\" alt=\"NAT\" width=\"800\"/\u003e\r\n\r\n   \u003c/details\u003e\r\n\r\n###  Примените политики безопасности\r\n\r\n1. Вверху слева нажмите **Install Policy**.\r\n1. В открывшемся диалоге нажмите **Publish \u0026 Install**.\r\n1. В следующем диалоге нажмите **Install** и дождитесь завершения процесса.\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eСкриншот Install Policy\u003c/summary\u003e\r\n\r\n![Install Policy](./images/install_policy.png)\r\n\r\n\u003c/details\u003e \r\n\r\n\r\n## Протестируйте работоспособность решения\r\n\r\n1. Чтобы узнать публичный IP-адрес FW, выполните в терминале команду:\r\n\r\n    ```bash\r\n    terraform output fw_public_ip_address\r\n    ```\r\n\r\n1. Проверьте, что сетевая инфраструктура доступна извне, перейдя в браузере по адресу:\r\n    \r\n    ```bash\r\n    http://\u003cПубличный_ip_адрес_FW\u003e\r\n    ```\r\n    Если система доступна извне, должна открыться страница `Welcome to nginx!`.\r\n\r\n1. Проверьте, что активны разрешающие правила политики безопасности FW. Для этого на вашем ПК перейдите в папку `yc-network-segmentation-with-checkpoint` и подключитесь к ВМ в DMZ-сегменте по SSH:\r\n   \r\n    ```bash\r\n    cd ~/yc-network-segmentation-with-checkpoint\r\n    ssh -i pt_key.pem admin@\u003cВнутренний_ip_адрес_ВМ_в_DMZ_сегменте\u003e\r\n    ```\r\n\r\n1. Чтобы проверить наличие доступа из ВМ в DMZ сегменте к публичному ресурсу в сети интернет, выполните команду:    \r\n   \r\n    ```bash\r\n    ping ya.ru\r\n    ```\r\n    \r\n    Команда должна выполниться в соответствие с разрешающим правилом `ping from dmz to internet`.\r\n\r\n1. Проверьте, что выполняются запрещающие правила политики безопасности.\r\n   Чтобы проверить отсутствие доступа к ВМ `Jump ВМ` в сегменте `mgmt` из сегмента `dmz`, выполните команду: \r\n\r\n   ```bash\r\n   ping 192.168.1.101\r\n   ```\r\n   Команда должна выполниться с ошибкой в соответствие с запрещающим правилом `Cleanup rule`.\r\n\r\n1. В SmartConsole в разделе `LOGS \u0026 MONITOR` на вкладке `Logs` найдите записи в моменты проведение тестов и проверьте, какие правила политики безопасности и действия были применены к трафику.\r\n\r\n    \u003cdetails\u003e\r\n    \u003csummary\u003eСкриншот лога для правила Web-server port forwarding on FW\u003c/summary\u003e\r\n\r\n    \u003cimg src=\"./images/log_web.png\" alt=\"Web-server port forwarding on FW\" width=\"700\"/\u003e\r\n\r\n    \u003c/details\u003e \r\n    \r\n    \u003cdetails\u003e\r\n    \u003csummary\u003eСкриншот лога для правила ping from dmz to internet\u003c/summary\u003e\r\n\r\n    \u003cimg src=\"./images/log_dmz_internet.png\" alt=\"ping from dmz to internet\" width=\"700\"/\u003e\r\n\r\n    \u003c/details\u003e \r\n\r\n    \u003cdetails\u003e\r\n    \u003csummary\u003eСкриншот лога для правила Cleanup rule\u003c/summary\u003e\r\n\r\n    \u003cimg src=\"./images/log_cleanup.png\" alt=\"Cleanup rule\" width=\"700\"/\u003e\r\n\r\n    \u003c/details\u003e\r\n\r\n\r\n## Требования к развертыванию в продуктивной среде\r\n\r\n- Если необходимо обеспечить отказоустойчивость NGFW и высокую доступность развернутых приложений, то используйте [рекомендуемое решение](https://cloud.yandex.ru/docs/tutorials/routing/high-accessible-dmz).\r\n- Обязательно смените пароли, которые были переданы через сервис metadata в файлах `check-init...yaml`:\r\n    - Пароль SIC для связи FW и сервера управления FW.\r\n    - Пароль от графической консоли Check Point SmartConsole.\r\n    - Пароль пользователя admin в сервере управления FW (можно изменить через Gaia Portal).\r\n- Сохраните private SSH ключ `pt_key.pem` в надежное место либо пересоздайте его отдельно от Terraform.\r\n- Удалите публичный IP адрес у Jump ВМ, если не планируете ей пользоваться.\r\n- Если планируете использовать Jump ВМ для подключения к сегменту управления с помощью VPN WireGuard, то измените ключи для WireGuard на Jump ВМ и рабочей станции администратора.\r\n- Настройте Access Control политики и NAT в Check Point NGFW для вашей инсталляции.\r\n- Настройте правила в группах безопасности в сегментах, необходимые для работы развернутых приложений.\r\n- Не назначайте публичные IP адреса на ВМ в сегментах, где используются таблицы маршрутизации через Check Point NGFW. Исключением является mgmt сегмент управления, где в таблицах маршрутизации не используется default route `0.0.0.0/0`. \r\n- Для использования в продуктивной среде необходимо приобрести лицензии на решение Check Point CloudGuard IaaS\r\n\r\n\r\n## Как удалить созданные ресурсы\r\n\r\nЧтобы перестать платить за созданные ресурсы выполните команду:\r\n\r\n  ```bash\r\n  terraform destroy\r\n  ```\r\n  Terraform удалит все ресурсы **без возможности восстановления**: сети, подсети, виртуальные машины, каталоги и т.д.\r\n\r\nТак как созданные ресурсы расположены в каталогах, то в качестве более быстрого способа удаления всех ресурсов можно использовать удаление всех каталогов через консоль Yandex Cloud с дальнейшим удалением файла `terraform.tfstate` из папки `yc-network-segmentation-with-checkpoint` на вашем ПК.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyandex-cloud-examples%2Fyc-network-segmentation-with-checkpoint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyandex-cloud-examples%2Fyc-network-segmentation-with-checkpoint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyandex-cloud-examples%2Fyc-network-segmentation-with-checkpoint/lists"}