Program for OpenVPN username/password authentication.
Программа для реализации авторизации OpenVPN по логину/паролю.
Файл конфигурации OpenVPN на стороне сервера:
script-security 3
auth-user-pass-verify "config\\OVPN_Auth.exe" via-env
Файл конфигурации OpenVPN на стороне клиента:
auth-user-pass
или
auth-user-pass "config\\authpass"
Программа ищет файл паролей в папке, где находится OVPN_Auth.exe с именем модуля программы и расширением «.pwd».
Например, модуль программы: «c:\Program Files\OpenVPN\config\OVPN_Auth_x64.exe»
Соответствующий ему файл паролей будет иметь имя: «c:\Program Files\OpenVPN\config\OVPN_Auth_x64.pwd»
Состоит из строк вида:
<логин>:<common name>:<хеш пароля>:<метка активности учетки>:<список ip/подсетей>
<логин> - имя пользователя, которое пользователь вводит по запросу OpenVPN GUI (или которое прописывается в файле, указанном в директиве auth-user-pass
)
<common name> - "common name" из сертификата, используемого для подключения к OpenVPN.
<хеш пароля> - SHA-256 хеш пароля, который пользователь вводит по запросу OpenVPN GUI (или которое прописывается в файле, указанном в директиве auth-user-pass
)
(хеш можно сгенерировать, например, с использованием сайтов подобным http://www.md5calc.com/ и т.п.).
<метка активности учетки> - может иметь значения:
- «1», «enabled», «enable» - учетная запись активна.
- «0», «disabled», «disable» или пустое значение - учетная запись отключена.
<список ip/подсетей> - Список ip/подсетей, с которых разрешается соединяться клиенту.
Задается указанием ip/подсетей через запятую (пробелы не допускаются).
Формат указания подсетей:
- 192.168.1.1 – единичный ip
- 192.168.0.0/16 – подсеть
- 192.168.1. – подсеть 192.168.1.0/24
- 192.168.1 – подсеть 192.168.1.0/24
- 192.168. – подсеть 192.168.0.0/16
- 192.168 – подсеть 192.168.0.0/16
Неиспользуемые элементы настроек можно опускать начиная с конца.
В файле паролей могут существовать строки, с одинаковыми учетными данными пользователей (логин, common name, хеш), но использоваться будет первая найденная.
Примеры:
user1:client01:a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3:0
user2:client01:b3a8e0e1f9ab1bfe3a36f231f676f78bb30a519d2b21e6c530c0eee8ebb4a5d0:1:192.168.1.1
user3:client01:15e2b0d3c33891ebb0f1ef609ec419420c20e320ce94c65fbc8c3312448eb225:1:10.10.
user4:client02:a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3:1:192.168.1.1,192.168.1.2,192.168.1.3
user5:client05:a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3:1:10.8,192.168.55.,10.10.10.0/24
user6:client55:a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
Программа возвращает следующие коды ошибок (можно отследить в логе OpenVPN):
- 2 - в блоке переменных окружения процесса не найдены необходимые переменные окружения или они имеют пустое значение ("username", "common_name", "password", "untrusted_ip").
- 3 - IP-адрес, переданный в переменной окружения "untrusted_ip", имеет неверный формат.
- 10 - неверное common name (см. настройку <common name> в файле паролей) - для введенного пользователем логина в сертификате используется другой "common name".
- 11 - неверный пароль (см. настройку <хеш пароля> в файле паролей).
- 12 - учетная запись отключена (см. настройку <метка активности учетки> в файле паролей).
- 13 - доступ запрещен для IP, с которого подключается пользователь (см. настройку <список ip/подсетей> в файле паролей).
- 14 - учетная запись не найдена (неверное имя пользователя) - запись с введенным пользовтелем логином не найдена в файле паролей.
- 100 - неизвестная ошибка.
- 200 - неизвестная ошибка.
- 201 - ошибка в формате файла паролей (неверный синтаксис опций).
- 250 - программа запущена в режиме проверки файла паролей на корректность.
Запуск: OVPN_Auth.exe <testdb|/testdb|-testdb|--testdb>
Проверяет файл паролей на корректность формата.