Возникла тут необходимость подцепить несколько клиентов к VPN-серверу WireGuard в организации. На паре компьютеров всё завелось корректно (у пользователей админские права), а вот на компьютере с порезанными у пользователя правами (входит только в группу Пользователи) – добавить туннель никак: при попытке запуска WireGuard – ошибка: WireGuard может использоваться только пользователями, входящими в встроенную группу Администраторы.

При этом у пользователя с правами администратора, интерфейс WireGuard выглядит как положено: кнопки импорта/добавления/удаления туннелей доступны.

Причина проблемы
Как таковых «затыков» тут три, и все они сделаны намеренно, в угоду безопасности устройства и сети:
1. Безопасность приватной сети
В окне WireGuard отображаются свойства приватной сети, к которой компьютер подключен. Показывать эти свойства (адрес сервера, ключи) рядовому пользователю явно не нужно, и, соответственно, и открывать окно WireGuard также не имеет смысла.
2. Безопасность сети на устройстве
В процессе подключения к туннелям, WireGuard изменяет настройки сети на ПК, а также переписывает маршруты, по которым будет идти трафик.
Пользователь не должен иметь свободный доступ к настройке сети на устройстве: мало ли чего он может наделать с компьютером. А ещё больше он может наделать с сетью домена, если дать ему такие права.
3. Куда пользователь ещё подключится?
Если дать пользователю права свободно распоряжаться туннелями, есть два варианта:
- Пользователь удалит необходимые для работы туннели
- Пользователь добавит туннели, которые для работы в лучшем случае не нужны, а в худшем – навредят инфраструктуре предприятия
Решение проблемы
Путей решения проблемы несколько. Перечислим их в порядке «от худшего к лучшему».
Также стоит уточнить: для всех вариантов, в момент настройки нужны права администратора компьютера.
Путь 1. Дать пользователю права администратора
Самый первый вариант, напрашивающийся на ум – дать пользователю полный доступ к компьютеру.
Легко? Да. Безопасно? Однозначно нет. Но если вы пошли именно этим путём – делаем следующее:
- ПКМ по Пуску – Управление компьютером
- Служебные программы – Локальные пользователи и группы – Пользователи
- В открывшемся списке ищем нужного пользователя, открываем его свойства и переходим на вкладку Членство в группах
- Удаляем пользователя из группы Пользователи
- Добавляем пользователя в группу Администраторы
Либо через CMD:
net localgroup Пользователи имя_пользователя /remove
net localgroup Администраторы имя_пользователя /add
Теперь пользователю необходимо выйти из учётной записи и вновь войти в неё (не через Смену пользователя, а именно через Выход) чтобы применить новые права доступа.
Путь 2. Дать пользователю права на запуск WireGuard и подключение к заранее созданным туннелям
Вариант чуть более безопасный, но не самый предпочтительный. Из плюсов: пользователь может самостоятельно подключать/отключать туннель. Из минусов: пользователь может самостоятельно подключать/отключать туннель.
Для этого варианта нам нужно:
- Дать пользователю права на запуск WireGuard GUI
- Дать пользователю права на изменение параметров сети
- Задать изначальный список .conf файлов с конфигурациями WireGuard.
Приступим.
1. Права на запуск WireGuard GUI
Первым делом идём в редактор реестра (regedit) и переходим по пути: HKLM\Software\WireGuard. Если раздела нет – создаём. В этом разделе создаём параметр DWORD32 с именем LimitedOperatorUI и значением 1.

Либо через CMD:
reg add HKLM\Software\WireGuard /v LimitedOperatorUI /t REG_DWORD /d 1 /f
Для применения настроек нужно перезагрузить ПК.
2. Даём доступ на управление сетью на устройстве
Для этого, как и в первом пути, переходим в Управление компьютером – Служебные программы – Локальные пользователи и группы – Пользователи, открываем свойства пользователя и на вкладке Членство в группах добавляем пользователя в группу Операторы настройки сети.

После этих двух шагов мы можем от имени пользователя запускать WireGuard GUI. Данный вариант интерфейса будет «порезан», и не будет обладать возможностью редактировать/добавлять/удалять туннели, однако пользователь сможет подключаться/отключаться от уже созданных туннелей самостоятельно.

3. Добавление туннелей
Делается весьма просто: закидываем .conf файлы в каталог %ProgramFiles%\WireGuard\Data\Configurations (каталог недоступен без прав администратора).
После этого пользователи, состоящие в группе Операторы настройки сети смогут подключаться/отключаться от туннелей, которые указаны в .conf-файлах в каталоге выше.

Путь 3. WireGuard как служба (сервис)
Данный путь наиболее безопасен с точки зрения администрирования, так как не требует давать пользователю права, которые могут нанести ущерб компьютеру, сети или предприятию.
Как плюс, так и минус: пользователь не может самостоятельно отключиться или подключиться к приватной сети.
1. Размещаем файлы конфигурации
Как и во втором пути, нужно поместить .conf-файлы в каталог, куда у обычного пользователя не будет доступа. Можно использовать тот же: %ProgramFiles%\WireGuard\Data\Configurations.
2. Создаём службу
Для создания службы прописываем в CMD:
wireguard /installtunnelservice "путь_к_файлу_конфигурации"
Например:
wireguard /installtunnelservice "C:\Program Files\WireGuard\Data\Configurations\test.conf"
Данная команда создаст службу с именем WireGuardTunnel$имя_conf (отображаемое имя: WireGuard Tunnel: имя_conf), с помощью которой будет происходить подключение к туннелю при старте системы.
После этого можно либо перезагрузить ПК, либо вручную запустить службу:
net start WireGuardTunnel$имя_conf
С этого момента компьютер получит доступ к приватной сети, и что администратор, что пользователь – смогут работать с узлами в приватной сети.
Подключение будет происходить при запуске службы при старте компьютера – даже до входа пользователя в систему, поэтому любой пользователь компьютера будет иметь доступ к приватной сети буквально со старта своей работы, без каких-либо дополнительных действий.
Кроме того, этот путь в принципе не даёт пользователю дополнительных прав на ПК, как и не даёт возможности просмотра конфигурационных файлов туннеля, что является безопасным подходом с точки зрения администрирования.
Удаление сервиса, созданного таким образом:
wireguard /uninstaltunnelservice "имя_conf"
Например:
wireguard /uninstaltunnelservice "test"
Либо встроенными средствами Windows:
sc delete "WireGuardTunnel$имя_conf"

