Akeme

Аптечка эникея

  • WireGuard может использоваться только пользователями, входящими в встроенную группу Администраторы

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

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

    Причина проблемы

    Как таковых «затыков» тут три, и все они сделаны намеренно, в угоду безопасности устройства и сети:

    1. Безопасность приватной сети

    В окне WireGuard отображаются свойства приватной сети, к которой компьютер подключен. Показывать эти свойства (адрес сервера, ключи) рядовому пользователю явно не нужно, и, соответственно, и открывать окно WireGuard также не имеет смысла.

    2. Безопасность сети на устройстве

    В процессе подключения к туннелям, WireGuard изменяет настройки сети на ПК, а также переписывает маршруты, по которым будет идти трафик.

    Пользователь не должен иметь свободный доступ к настройке сети на устройстве: мало ли чего он может наделать с компьютером. А ещё больше он может наделать с сетью домена, если дать ему такие права.

    3. Куда пользователь ещё подключится?

    Если дать пользователю права свободно распоряжаться туннелями, есть два варианта:

    1. Пользователь удалит необходимые для работы туннели
    2. Пользователь добавит туннели, которые для работы в лучшем случае не нужны, а в худшем – навредят инфраструктуре предприятия

    Решение проблемы

    Путей решения проблемы несколько. Перечислим их в порядке «от худшего к лучшему».

    Также стоит уточнить: для всех вариантов, в момент настройки нужны права администратора компьютера.

    Путь 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"