wg-portal настройка: корпоративный VPN для 80+ сотрудников
80+
сотрудников
2
минуты подключение
0
забытых отключенных VPN
Проблема: ручное управление WireGuard не масштабируется
Для удалённого доступа к корпоративной сети клиент использовал WireGuard — он встроен в ядро Linux, работает быстро, конфигурация минимальна. Но администрирование VPN велось полностью вручную: конфиги создавались через wg genkey и wg-quick, передавались сотрудникам по почте, а при увольнении отзывались — если не забывали.
Инфраструктура типичная для среднего российского бизнеса: домен Active Directory, сервер 1С, файловый сервер, внутренний портал. Но между AD и VPN-конфигурацией не было никакой связи — отдельные учётные записи, ручная синхронизация, рассинхрон.
За полгода произошли 3 инцидента с «мёртвыми» пирами: уволенные сотрудники сохраняли активный VPN-доступ к корпоративной сети. Администратор не видел, кто подключён, без запуска wg show в терминале. Каждый запрос нового устройства — тикет в IT-отдел и ~30 минут работы администратора.
Подключение одного нового сотрудника к VPN занимало ~30 минут работы системного администратора: генерация пары ключей командами wg genkey и wg pubkey, выбор свободного IP-адреса из электронной таблицы, создание конфигурационного файла, добавление peer в wg0.conf, перезагрузка WireGuard-интерфейса, отправка конфига по электронной почте. Передача конфигурации по почте — сама по себе проблема безопасности: файл содержит приватный ключ в открытом виде.
Задача: внедрить централизованное управление WireGuard с привязкой к существующему Active Directory — чтобы при увольнении сотрудника VPN-доступ отзывался автоматически, а новые сотрудники подключались самостоятельно через веб-портал с QR-кодами, без участия администратора.

30 минут на пир
Нет связи с AD
Забытые отзывы
Нет мониторинга
Управляете VPN вручную?
До и после: wg-portal настройка вместо ручного управления
| Параметр | До (ручной режим) | После (wg-portal + AD) |
|---|---|---|
| Подключение нового сотрудника | ~30 минут (админ) | ~2 минуты (самообслуживание) |
| Отзыв VPN при увольнении | Вручную, часто забывали | Автоматически через LDAP-синхронизацию |
| «Мёртвые» пиры | 3 инцидента за полгода | Деактивируются автоматически |
| Видимость подключений | Только wg show в терминале | Веб-дашборд + Prometheus-метрики |
| Привязка к Active Directory | Нет | Полная: логин, группы, авто-деактивация |
| Самообслуживание пользователей | Нет, каждый запрос — тикет | Да, через веб-портал с QR-кодами |
Решение: wg-portal настройка с интеграцией Active Directory
На момент выбора мы рассматривали четыре решения с открытым исходным кодом: wg-portal v2, wg-easy, WGDashboard и wireguard-ui. Ключевой критерий — интеграция с Active Directory через LDAP и автоматическая синхронизация пользователей. wg-portal v2 оказался единственным вариантом, закрывающим все потребности из коробки: LDAP-синхронизация с disable_missing, OAuth/OIDC, WebAuthn, REST API, лицензия MIT.
Архитектура решения включает три компонента. WireGuard — модуль ядра Linux на выделенном сервере с Ubuntu 24.04 LTS, отвечает за VPN-туннели. wg-portal v2 — Docker-контейнер на том же сервере, управляет пирами и синхронизирует пользователей из AD через LDAP каждые 15 минут. Active Directory — существующий контроллер домена, единый каталог пользователей.
Сетевая конфигурация: VPN-подсеть 10.11.12.0/24, офисная сеть 192.168.1.0/24. WireGuard слушает на порту 51820/udp, веб-интерфейс wg-portal — на 8888/tcp за обратным прокси с TLS. Параметр network_mode: host обязателен — wg-portal управляет WireGuard-интерфейсами напрямую через wgctrl. Подготовку и администрирование сервера мы выполнили на базе Ubuntu 24.04 LTS.
Интеграция с LDAP — ключевая часть внедрения. В Active Directory создали сервисную учётку svc-wgportal (только чтение), группу «VPN Users» для сотрудников с VPN-доступом и группу «VPN Admins» для администраторов портала. Фильтр login_filter использует битовую маску AD для исключения деактивированных учётных записей. Параметр disable_missing: true автоматически отключает пользователя и все его пиры при удалении из группы или деактивации в AD. Параметр auto_re_enable: true восстанавливает доступ при возврате в группу.
Для мониторинга wg-portal предоставляет метрики Prometheus на порту :8787. Это позволяет интегрировать мониторинг VPN с существующей системой — мы помогаем с внедрением мониторинга на базе Grafana и Zabbix.
Для справки: мы рассматривали также wg-easy (простая установка, встроенный TOTP, но без LDAP и с лицензией AGPL-3.0 с версии 14), WGDashboard (нет LDAP, нет OAuth) и wireguard-ui (проект в архиве). Только wg-portal настройка обеспечивает полную интеграцию с корпоративным каталогом, автоматическую синхронизацию, REST API и лицензию MIT. Подробнее о возможностях — в официальной документации wg-portal.
services:
wg-portal:
image: wgportal/wg-portal:v2.2.1
container_name: wg-portal
restart: unless-stopped
cap_add:
- NET_ADMIN
network_mode: host
volumes:
- /etc/wireguard:/etc/wireguard
- ./data:/app/data
- ./config:/app/config
logging:
options:
max-size: 10m
max-file: 3

Этапы внедрения wg-portal
На сервере с Ubuntu 24.04 LTS WireGuard уже включён в ядро — достаточно установить wireguard-tools и Docker. Проверили загрузку модуля через lsmod | grep wireguard. Подготовили каталоги для данных и конфигурации wg-portal, настроили Docker Compose с фиксированной версией образа v2.2.1 — плавающий тег v2 может сломать рабочую инфраструктуру при автообновлении. DockerUbuntu 24.04
Сначала запустили wg-portal с локальной аутентификацией — без подключения к AD, чтобы проверить работу веб-интерфейса и WireGuard. Создали config.yaml с параметрами: admin_user, пароль от 16 символов, import_existing: true для импорта существующих WireGuard-конфигов, self_provisioning_allowed: true для самообслуживания. Проверили: веб-интерфейс доступен на порту 8888, создание и подключение тестового пира работает корректно. WireGuard
Подготовили в AD сервисную учётку svc-wgportal с правами только на чтение и две группы: «VPN Users» и «VPN Admins». Добавили блок auth.ldap в конфигурацию: sync_interval: 15m, disable_missing: true, auto_re_enable: true. Фильтр синхронизации ограничен членами группы «VPN Users» с исключением заблокированных учёток через битовую маску userAccountControl:1.2.840.113556.1.4.803:=2. После перезапуска контейнера проверили логи — пользователи из AD начали появляться в портале. LDAPActive Directory
Провели полный цикл тестирования на тестовых учётных записях Active Directory. Сценарий подключения нового сотрудника: добавление в группу «VPN Users» → синхронизация каждые 15 минут → вход в портал по корпоративному email → создание пира с автоматическим выделением IP → сканирование QR-кода на телефоне → подключение. Сценарий увольнения: удаление сотрудника из группы или деактивация учётной записи AD → синхронизация → автоматическая деактивация пользователя и всех его пиров в wg-portal. Сценарий потери устройства: деактивация конкретного пира через веб-интерфейс портала без затрагивания остальных устройств сотрудника — ноутбук продолжает работать. Отдельно проверили обработку ошибок LDAP-подключения: неверный формат bind_user, некорректный base_dn, пустой список пользователей после синхронизации — все ситуации диагностируются через log_level: trace в логах контейнера. Тестирование
Настроили Nginx как обратный прокси с TLS-терминацией для веб-интерфейса — по умолчанию wg-portal настройка предполагает HTTP, что недопустимо для рабочей среды. Ограничили доступ к порту 8888 через межсетевой экран, оставив открытым только 51820/udp для WireGuard. Настроили резервное копирование: база SQLite, config.yaml с LDAP-секретами, каталог /etc/wireguard с приватными ключами — ежедневно в cron с ротацией 30 дней и проверкой целостности. Импортировали существующие WireGuard-конфиги через параметр import_existing: true. Провели миграцию 80 сотрудников: отправили инструкцию с адресом портала, каждый самостоятельно вошёл через корпоративный email и пересоздал свои пиры через QR-коды. Миграция заняла два дня, при этом ни одного тикета в техподдержку. NginxTLS
Ограничения wg-portal и на что обратить внимание
wg-portal — это портал управления, а не замена сетевой конфигурации. Важно понимать границы решения.
Межсетевой экран и NAT. wg-portal не настраивает iptables и nftables. Правила PostUp / PostDown, NAT-маскарадинг, изоляция подсетей — по-прежнему ответственность администратора.
Маршрутизация. Если нужно раздельное туннелирование (только корпоративный трафик через VPN), настройка AllowedIPs на клиентах остаётся ручной задачей. wg-portal позволяет задавать эти параметры при создании пира, но не рассчитывает маршруты автоматически.
Двухфакторная аутентификация. Веб-портал поддерживает WebAuthn/Passkeys (YubiKey, Windows Hello), но не классический TOTP (Google Authenticator). Сам протокол WireGuard не предусматривает второго фактора в принципе — аутентификация основана исключительно на криптографических ключах. Для MFA на уровне VPN-подключения существует отдельный проект wag, добавляющий TOTP-проверку через правила межсетевого экрана.
Масштабирование. Один экземпляр wg-portal управляет WireGuard на одном хосте. Для мультисайтовой архитектуры потребуется дополнительная оркестрация. Экспериментальная поддержка бэкендов MikroTik и pfSense есть, но для продуктивного использования мы пока не рекомендуем.
Безопасность конфигурации. Сервисная учётка LDAP должна иметь минимальные привилегии (только чтение). Пароль — длинный, сложный, не истекающий. В версии v2.1.2 была закрыта уязвимость Open Redirect в OAuth-аутентификации (GO-2026-4398) — обновляйтесь осознанно, фиксируя конкретные версии образов.
Результаты: wg-portal настройка для 80 пользователей
пользователей подключено
подключение нового пользователя
синхронизация с AD
0
забытых отозванных VPN
После внедрения wg-portal настройка подключения нового сотрудника сократилась с 30 минут до 2 минут — причём большую часть работы выполняет сам сотрудник через веб-портал с QR-кодами. Администратору достаточно добавить человека в группу «VPN Users» в Active Directory.
Отзыв VPN-доступа при увольнении полностью автоматизирован: деактивация учётной записи в AD → синхронизация каждые 15 минут → автоматическое отключение всех пиров. За три месяца работы — ноль инцидентов с «мёртвыми» пирами. Администратор видит статус каждого пира в реальном времени через веб-дашборд: последнее рукопожатие, объём переданных данных, IP-адрес подключения. О том, как мы выстраиваем комплексный процесс отключения учётных записей, подробнее в кейсе по автоматизации увольнения.
Кому подойдёт wg-portal настройка с Active Directory
- Штат от 30 сотрудников с удалённым доступом через WireGuard
- Существующий домен Active Directory как единый каталог пользователей
- Требование автоматического отзыва VPN при увольнении или переводе
- Необходимость самообслуживания: сотрудники подключают устройства без тикетов в IT
- Компании, проходящие аудит информационной безопасности (ИСО 27001, PCI DSS)
Часто задаваемые вопросы (FAQ)
wg-easy — отличный выбор для малых команд без Active Directory: простая установка, встроенный TOTP, удобный интерфейс. Но начиная с v14 лицензия изменена на AGPL-3.0, что может быть проблемой для коммерческого использования. WGDashboard поддерживает несколько WireGuard-интерфейсов, но не имеет LDAP. wg-portal v2 — единственное решение с LDAP-синхронизацией, OAuth/OIDC, REST API и автоматическим отключением при удалении из AD. Лицензия MIT, поддержка SQLite, PostgreSQL, MySQL и MSSQL.
Базовая wg-portal настройка без LDAP — 1-2 часа, включая установку Docker и создание конфигурации. С интеграцией Active Directory, тестированием сценариев подключения и увольнения, настройкой обратного прокси с TLS — 1-2 рабочих дня. Миграция существующих пользователей и WireGuard-конфигов занимает ещё 1-2 дня в зависимости от размера команды. Итого: 3-5 рабочих дней до полной готовности.
Администратор AD деактивирует учётную запись сотрудника или удаляет его из группы «VPN Users». При следующей LDAP-синхронизации (каждые 15 минут) wg-portal автоматически деактивирует пользователя и все его пиры — доступ к корпоративной сети прекращается. Для мгновенного отключения можно деактивировать пир вручную через веб-интерфейс или REST API, не дожидаясь цикла синхронизации. Параметр auto_re_enable позволяет восстановить доступ при возврате в группу.
Веб-портал поддерживает WebAuthn и Passkeys — аппаратные ключи YubiKey, биометрию Windows Hello, Touch ID. Классический TOTP (Google Authenticator) не поддерживается. Для MFA через внешний провайдер можно подключить Keycloak или Authentik через OIDC — wg-portal v2 это поддерживает.
Да, wg-portal работает с локальной аутентификацией без LDAP. Пользователи создаются вручную через веб-интерфейс или REST API. Поддерживается также OAuth/OIDC для аутентификации через Google, GitHub, Keycloak. Но главное преимущество — автоматическая синхронизация с AD и автоотключение — в этом случае теряется. Для небольших команд без корпоративного каталога проще рассмотреть wg-easy с его встроенным TOTP.




