Запуск OpenVPN в Windows без предоставления пользователям прав администратора
OpenVPN нужны привилегии для адаптера и маршрутов, а не для всего. Используйте службу и делегируйте сетевые права, а затем проверьте из учётной записи пользователя.
Пользователь дважды щёлкает по OpenVPN GUI, подтверждает запрос UAC и повторяет тот же ритуал при следующем переподключении. Запрос — не ошибка упаковки: клиент создаёт виртуальный адаптер и редактирует таблицу маршрутизации, и то и другое требует привилегий. Полезный вопрос — какие именно из этих прав пользователю действительно нужны. Служба плюс узкое делегирование покрывают подключение, не раздавая членство администратора.
Какие операции действительно требуют повышения прав
Туннель завершается на виртуальном сетевом интерфейсе, а установка этого интерфейса — операция драйвера, которая один раз требует прав администратора. После появления адаптера каждое подключение по-прежнему записывает маршруты и в зависимости от профиля меняет конфигурацию DNS. Именно эти два шага вызывают повышение прав в обычной учётной записи. Ничто в проверке подлинности или шифровании не требует прав администратора, и именно поэтому привилегию можно отделить.
Отделите время установки от времени подключения, прежде чем выбирать разрешение. У них разные владельцы и разный срок жизни.
Используйте службу как привилегированный компонент
Поддерживаемая схема запускает службу Windows, которая обладает нужными правами, а GUI просит службу подключиться. Тогда привилегированный код никогда не выполняется внутри сеанса пользователя.
sc query OpenVPNService
sc qc OpenVPNServiceРаботающая служба, путь к исполняемому файлу которой указывает на установленный клиент, — это первый факт, который нужно подтвердить, прежде чем что-либо делегировать. Служба владеет адаптером и маршрутами, поэтому пользователь только запускает и останавливает подключение. Именно такую схему стоит применять на общих машинах, потому что учётная запись, нажимающая «подключиться», не имеет постоянных привилегий. Прочитайте дескриптор с помощью sc sdshow перед редактированием и сохраните заведомо исправную копию вывода.
Делегируйте изменения маршрутов встроенной группе
Для клиента, который должен работать интерактивно, делегированная встроенная группа — Network Configuration Operators. Она охватывает сетевые параметры и изменения маршрутов, но исключает установку программ и общую административную работу.
net localgroup "Network Configuration Operators" alice /add
sc sdshow OpenVPNServiceДобавление учётной записи происходит не молча: политика по умолчанию всё ещё вызывает один запрос за сеанс, поэтому разрешение уменьшает то, что может сделать повышение прав, а не убирает его. Задокументируйте членство, потому что оно тихо накапливается и почти никогда не пересматривается. На пути через службу редактирование дескриптора с помощью sc sdset может делегировать запуск и остановку группе, хотя опечатка в дескрипторе может лишить прав запуска любую учётную запись, а отменить это можно только с правами администратора. Проверяйте любое изменение дескриптора на лабораторной машине, прежде чем оно попадёт на производственный хост.
Проверьте из учётной записи пользователя
Конфигурация, выполненная в сеансе администратора, ничего не доказывает об учётной записи, которая будет ею пользоваться. Войдите как этот пользователь, подключитесь и сравните состояние машины до и после.
route print -4
Get-DnsClientServerAddressТаблица маршрутизации должна получить маршруты туннеля, а распознаватель при подключении должен указывать на серверы, которые предоставляет VPN. После отключения оба вывода должны совпадать с копиями, снятыми заранее, и именно поэтому важно снять их сначала. Обновления драйвера могут вернуть требование прав администратора, поэтому запишите версию клиента рядом с результатом. Держите файлы профиля и ключей читаемыми только для учётной записи, которая ими пользуется, вместо того чтобы ослаблять разрешения для общей установки.
Запишите, кто может запускать туннель, какая группа это разрешает и что всё ещё требует администратора. Эта заметка превращает следующее обновление клиента в плановую работу, а не в полдня догадок.