Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
    • Настройка сетевого взаимодействия ресурсов из разных каталогов
    • Создание бастионного хоста
    • Создание туннеля между двумя подсетями при помощи OpenVPN Access Server
    • Защищенный доступ пользователей к облачным ресурсам на основе WireGuard VPN
    • Создание и настройка шлюза UserGate в режиме межсетевого экрана
    • Реализация отказоустойчивых сценариев для сетевых ВМ
    • Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе Check Point NGFW
    • Сегментация облачной инфраструктуры с помощью решения Check Point Next-Generation Firewall
    • Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе UserGate NGFW
    • Организация доступа через Cloud Interconnect к облачным сетям, размещенным за NGFW
    • Настройка защищенного туннеля GRE поверх IPsec
    • Настройка сети для Yandex Data Processing
    • Переключение сетевого соединения при пересоздании кластера Yandex Data Processing
    • Подключение к Object Storage из VPC
    • Подключение к Container Registry из VPC
    • Создание прямого транкового подключения и приватного соединения в нем
    • Создание прямого транкового подключения и публичного соединения в нем
    • Создание нового партнерского транкового подключения и приватного соединения в нем
    • Создание нового партнерского транкового подключения и публичного соединения в нем
    • Добавление приватного соединения в прямое или партнерское транковое подключение
    • Добавление публичного соединения в прямое или партнерское транковое подключение
    • Изменить емкость транкового подключения
    • Изменить набор IP-префиксов в приватном соединении
    • Удалить приватное соединение
    • Удалить публичное соединение
    • Удалить транковое подключение
    • Настройка VRRP для кластера серверов BareMetal
    • Настройка сетевой связности в подсети BareMetal
    • Настройка сетевой связности между подсетями BareMetal и Virtual Private Cloud
    • Доставка USB-устройств на сервер BareMetal или виртуальную машину

В этой статье:

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Подготовьте среду для развертывания ресурсов
  • Подготовьте домен
  • Разверните Firezone и Keycloak
  • Настройте Keycloak для интеграции с Firezone
  • Настройте Firezone
  • Протестируйте работу
  • Как удалить созданные ресурсы
  1. Архитектура, сетевое взаимодействие
  2. Защищенный доступ пользователей к облачным ресурсам на основе WireGuard VPN

Защищенный доступ пользователей к облачным ресурсам на основе WireGuard VPN

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 4 апреля 2025 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Подготовьте среду для развертывания ресурсов
  • Подготовьте домен
  • Разверните Firezone и Keycloak
  • Настройте Keycloak для интеграции с Firezone
  • Настройте Firezone
  • Протестируйте работу
  • Как удалить созданные ресурсы

Для организации защищенного удаленного доступа пользователей через VPN к вашим облачным ресурсам по протоколу WireGuard VPN воспользуйтесь решением Firezone на основе открытого кода. Для реализации сценариев единого входа пользователей, решение поддерживает несколько сервисов аутентификации (Identity Providers). В примере ниже используется решение по аутентификации Keycloak.

В данном сценарии вы развернете в Yandex Cloud облачную инфраструктуру для организации Remote access VPN на основе WireGuard VPN по следующей схеме:

Описание основных элементов схемы:

Название Описание
Firezone ВМ Виртуальная машина с установленным ПО Firezone на основе WireGuard VPN для организации VPN доступа
Кластер баз данных Сервис Managed Service for PostgreSQL для работы Firezone ВМ и Keycloak ВМ
Keycloak ВМ Open-source ПО Keycloak для Single Sign-On аутентификации пользователей в корпоративной федерации пользователей, например Active Directory

Более подробное описание приведено в репозитории проекта.

Чтобы настроить Firezone и проверить его работу:

  1. Подготовьте облако к работе.
  2. Подготовьте среду для развертывания ресурсов.
  3. Подготовьте домен.
  4. Разверните Firezone и Keycloak.
  5. Настройте Keycloak для интеграции с Firezone.
  6. Настройте Firezone.
  7. Протестируйте работу.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работеПодготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки инфраструктуры входят:

  • плата за постоянно работающие ВМ (см. тарифы Yandex Compute Cloud);
  • плата за использование публичных IP-адресов и исходящий трафик (см. тарифы Yandex Virtual Private Cloud);
  • плата за использование сервиса Managed Service for PostgreSQL (см. тарифы Yandex Managed Service for PostgreSQL);
  • плата за публичные DNS-запросы и зоны DNS (см. тарифы Cloud DNS).

Подготовьте среду для развертывания ресурсовПодготовьте среду для развертывания ресурсов

  1. Установите Terraform.

  2. Если у вас еще нет интерфейса командной строки Yandex Cloud, установите его и авторизуйтесь от имени пользователя.

  3. Создайте сервисный аккаунт:

    Консоль управления
    CLI
    1. В консоли управления выберите каталог, в котором хотите создать сервисный аккаунт.
    2. В списке сервисов выберите Identity and Access Management.
    3. Нажмите кнопку Создать сервисный аккаунт.
    4. Введите имя сервисного аккаунта, например, sa-firezone.
    5. Нажмите кнопку Создать.

    По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

    Выполните команду для создания сервисного аккаунта, указав имя sa-firezone:

    yc iam service-account create --name sa-firezone
    

    Где --name — имя сервисного аккаунта.

    Результат:

    id: ajehr0to1g8b********
    folder_id: b1gv87ssvu49********
    created_at: "2023-07-06T09:00:00.665153755Z"
    name: sa-firezone
    
  4. Назначьте сервисному аккаунту роль администратора на каталог:

    Консоль управления
    CLI
    1. На стартовой странице консоли управления выберите каталог.
    2. Перейдите на вкладку Права доступа.
    3. Найдите аккаунт sa-firezone в списке и нажмите значок .
    4. Нажмите кнопку Изменить роли.
    5. В открывшемся диалоге нажмите кнопку Добавить роль и выберите роль admin.

    Выполните команду:

    yc resource-manager folder add-access-binding <идентификатор_каталога> \
      --role admin \
      --subject serviceAccount:<идентификатор_сервисного_аккаунта>
    
  5. Настройте профиль CLI для выполнения операций от имени сервисного аккаунта:

    CLI
    1. Создайте авторизованный ключ для сервисного аккаунта и запишите его в файл:

      yc iam key create \
        --service-account-id <идентификатор_сервисного_аккаунта> \
        --folder-id <идентификатор_каталога_с_сервисным_аккаунтом> \
        --output key.json
      

      Где:

      • --service-account-id — идентификатор сервисного аккаунта.
      • --folder-id — идентификатор каталога, в котором создан сервисный аккаунт.
      • --output — имя файла с авторизованным ключом.

      Результат:

      id: aje8nn871qo4********
      service_account_id: ajehr0to1g8b********
      created_at: "2023-07-06T09:03:00.479156798Z"
      key_algorithm: RSA_2048
      
    2. Создайте профиль CLI для выполнения операций от имени сервисного аккаунта:

      yc config profile create sa-firezone
      

      Результат:

      Profile 'sa-firezone' created and activated
      
    3. Задайте конфигурацию профиля:

      yc config set service-account-key key.json
      

      Где service-account-key — файл с авторизованным ключом сервисного аккаунта.

    4. Сохраните ключ доступа в переменную окружения:

      export YC_TOKEN=$(yc iam create-token)
      

Подготовьте доменПодготовьте домен

Вам понадобится домен, который будет использоваться для виртуальных машин Firezone и Keycloak. Этот домен должен быть предварительно делегирован в Yandex Cloud со стороны регистратора домена. Для этого укажите адреса серверов ns1.yandexcloud.net и ns2.yandexcloud.net в личном кабинете вашего регистратора.

Разверните Firezone и KeycloakРазверните Firezone и Keycloak

  1. На вашей рабочей станции склонируйте репозиторий yandex-cloud-examples/yc-remote-acess-vpn-with-wireguard-firezone из Yandex Cloud Security Solution Library и перейдите в папку сценария yc-remote-acess-vpn-with-wireguard-firezone:

    git clone https://github.com/yandex-cloud-examples/yc-remote-acess-vpn-with-wireguard-firezone.git
    
    cd yc-remote-acess-vpn-with-wireguard-firezone
    
  2. Отредактируйте файл outputs.tf в папке settings, указав параметры разворачиваемых ресурсов:

    • В секции domain укажите ваше доменное имя (второго и первого уровня, разделенное точкой) для виртуальных машин Firezone и Keycloak. В этом примере используется домен example.com.
    • В секции folder_id укажите ID каталога для размещения ресурсов, например b1grj7grr1kn********.
    • В секции vpc_id укажите ID облачной сети для размещения ресурсов, например enp48c1ndilt********.
    • В секции trusted_ip_for_mgmt укажите список публичных IP адресов/подсетей, с которых разрешено подключение по SSH к Firezone и Keycloak ВМ, например ["A.A.A.A/32", "B.B.B.0/24"].
    • В секции admin_email почтовый адрес администратора (логин) для доступа к веб-интерфейсу администратора Firezone, например admin@example.com.
    • В секции email почтовый адрес тестового пользователя, который будет добавлен в Firezone после успешной аутентификации в Keycloak, например user@example.com.
    • Остальные параметры можете оставить по умолчанию или изменить на свои значения кроме параметров image_folder_id и image_name.

    Важно

    Заданные в файле значения предусматривают разворачивание ресурсоемкой инфраструктуры.
    Проверьте квоты в облаке, чтобы была возможность развернуть ресурсы.

    Посмотреть справочную информацию по количеству ресурсов
    Ресурс Количество
    Виртуальные машины 2
    vCPU виртуальных машин 4
    RAM виртуальных машин 12 ГБ
    Диски 2
    Объем SSD дисков 110 ГБ
    Подсети 2
    Статические публичные IP-адреса 2
    Группы безопасности 2
    Сертификат Certificate Manager 1
    Зона DNS 1
    Кластер Managed Service for PostgreSQL 1
    Объем SSD-хранилища для кластера PostgreSQL 10 ГБ
    Количество vCPU для кластера PostgreSQL 2
    Объем памяти для кластера PostgreSQL 8
    Terraform
    1. Перейдите в папку main

      cd main
      
    2. Выполните инициализацию Terraform:

      terraform init
      
    3. Проверьте список создаваемых облачных ресурсов:

      terraform plan
      
    4. Создайте ресурсы:

      terraform apply
      

      Дождитесь завершения процесса. Обработка запроса на выдачу сертификата в сервисе Let's Encrypt может выполняться до 30 минут.

    5. По завершении в командной строке будут выведены URL-адреса для подключения к веб-интерфейсам Firezone и Keycloak, а также учетные записи администраторов Firezone и Keycloak. В дальнейшем эту информацию можно будет посмотреть с помощью команды terraform output.

      Outputs:
      
      firezone_admin_credentials = <sensitive>
      firezone_url = "https://vpn.example.com"
      keycloak_admin_credentials = <sensitive>
      keycloak_url = "https://kc.example.com:8443/admin"
      

      Для получения sensitive значения укажите имя параметра в команде terraform output, например:

      terraform output firezone_admin_credentials
      

      Результат:

      {
         "admin_email" = "admin@example.com"
         "admin_password" = "7fVN********"
      }      
      

Настройте Keycloak для интеграции с FirezoneНастройте Keycloak для интеграции с Firezone

Terraform
  1. По завершении развертывания виртуальных машин для Firezone и Keycloak перейдите в папку keycloak-config, чтобы выполнить настройку Keycloak для сценария интеграции Keycloak с Firezone и Single Sign-On.

    cd ../keycloak-config
    
  2. Выполните инициализацию Terraform:

    terraform init
    
  3. Проверьте список создаваемых облачных ресурсов:

    terraform plan
    
  4. Создайте ресурсы:

    terraform apply
    
  5. После завершения процесса terraform apply в командной строке будет выведена информация для настройки интеграции Firezone и Keycloak, а также учетная запись тестового пользователя для проверки SSO в Keycloak и подключения к VPN. В дальнейшем эту информацию можно будет посмотреть с помощью команды terraform output.

    Outputs:
    
    keycloak_config_for_firezone = <sensitive>
    test_user_credentials = <sensitive>
    

    Для вывода sensitive значения укажите его в команде terraform output.

Настройте FirezoneНастройте Firezone

  1. Перейдите в браузере по адресу https://firezone_url, где firezone_url — вывод команды terraform output firezone_url в папке main, в данном примере https://vpn.example.com
  2. Войдите в интерфейс администратора Firezone с учетной записью администратора из вывода команды terraform output firezone_admin_credentials в папке main.
  3. Перейдите в раздел SETTINGS / Defaults для изменения настроек по умолчанию.
  4. В поле Allowed IPs укажите, для каких облачных IP подсетей (укажите через запятую адреса подсетей/маски) VPN клиенты будут направлять трафик в VPN туннель. Пример: 192.168.1.0/24, 192.168.2.0/24.
  5. В поле DNS Servers укажите адреса DNS серверов, которые будут использоваться VPN клиентами.
    Пример: 192.168.1.2, 192.168.2.2.
    Если переназначение на стороне клиента этих DNS адресов не планируется, удалите информацию в этом поле.
  6. Также можно изменить параметры по умолчанию для интервала keepalive, размера MTU для VPN клиентов. По умолчанию указан MTU 1280 байт, его можно увеличить до 1440 байт.
  7. Нажмите Save для применения настроек.
  8. Перейдите в раздел SETTINGS / Security для изменения настроек безопасности.
  9. Выключите настройку Allow unprivileged device configuration, чтобы пользователь не мог изменить через пользовательский веб-интерфейс Firezone сетевые настройки для VPN клиента.
  10. Включите настройку Auto disable VPN. Это позволит при удалении пользователя в Identity Provider (Keycloak в данном примере) отключить его VPN подключения.
  11. Нажмите Add OpenID Connect Provider для добавления Keycloak.
  12. В разделе OIDC Configuration заполните поля:
    • Config ID: keycloak;
    • Label: Keycloak;
    • OIDC scopes: openid email profile offline_access;
    • Client ID: firezone;
    • Client secret: client_secret из вывода terraform output keycloak_config_for_firezone в папке keycloak-config (значение укажите без кавычек);
    • Discovery Document URI: discovery_document_uri из вывода terraform output keycloak_config_for_firezone в папке keycloak-config (значение укажите без кавычек);
    • Redirect URI: оставьте пустым;
    • Включить Auto-create users для автоматического добавления пользователей в Firezone после их успешной аутентификации в Keycloak.
  13. Нажмите Save в разделе OIDC Configuration для применения настроек.

Протестируйте работуПротестируйте работу

  1. Установите на ваше устройство клиент WireGuard с сайта WireGuard.

    Дальнейшие шаги по настройке клиента WireGuard приведены на примере ОС Windows. Для других ОС название элементов интерфейса клиента может отличаться.

  2. Перейдите в браузере по адресу https://firezone_url, где firezone_url — вывод команды terraform output firezone_url в папке main. Если у вас активна сессия администратора в веб-интерфейсе Firezone, то предварительно выполните Log Out. Нажмите Sign in with Keycloak. Произойдет редирект на веб-страницу Keycloak для Single Sign-On.

  3. Войдите с учетной записью тестового пользователя из вывода команды terraform output test_user_credentials в папке keycloak-config.

  4. После успешной аутентификации в веб-интерфейсе Firezone с тестовым пользователем добавьте устройство, с которого будет устанавливаться VPN подключение. Для этого нажмите Add Device.

  5. В открывшемся окне можете изменить название устройства и добавить его описание. Нажмите Generate Configuration.

  6. Появится окно с VPN конфигурацией для устройства. Нажмите Download WireGuard Configuration для скачивания файла конфигурации. В приложении WireGuard для Android или iOS можно также отсканировать QR-код с этой страницы для добавления VPN туннеля.

    Важно

    Не закрывайте это окно, пока не скачаете конфигурационный файл или не отсканируете QR-код. После закрытия окна VPN конфигурацию для устройства больше не получится посмотреть в веб-интерфейсе Firezone.

  7. Добавьте новый VPN туннель (Import tunnel(s) from file) в приложении WireGuard, используя скачанный конфигурационный файл.

  8. Активируйте туннель нажатием на Activate.

  9. Проверьте на своем устройстве в командной строке с помощью ping 192.168.1.1 доступность шлюза из облачной подсети firezone. Вы подключились с помощью VPN туннеля к облачной инфраструктуре.

    Pinging 192.168.1.1 with 32 bytes of data:
    Reply from 192.168.1.1: bytes=32 time=67ms TTL=53
    

Как удалить созданные ресурсыКак удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы:

Terraform
  1. Перейдите на вашей рабочей станции в папку keycloak-config и выполните команду terraform destroy.
  2. После этого перейдите в папку main и выполните команду terraform destroy.

Была ли статья полезна?

Предыдущая
Создание туннеля между двумя подсетями при помощи OpenVPN Access Server
Следующая
Создание и настройка шлюза UserGate в режиме межсетевого экрана
Проект Яндекса
© 2025 ООО «Яндекс.Облако»