Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

OVPN_Auth

Program for OpenVPN username/password authentication.

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

# OVPN_Auth

Program for OpenVPN username/password authentication.

Программа для реализации авторизации OpenVPN по логину/паролю.

Использование.

Файл конфигурации OpenVPN на стороне сервера:

pascal
script-security 3
auth-user-pass-verify "config\\OVPN_Auth.exe" via-env

Файл конфигурации OpenVPN на стороне клиента:

pascal
auth-user-pass

или

pascal
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»

Формат файла паролей.

Состоит из строк вида:

pascal
<??????????>:<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/подсетей через запятую (пробелы не допускаются).

Формат указания подсетей:

    1. .1 – единичный ip
    1. .0/16 – подсеть
    1. . – подсеть 192.168.1.0/24
    1. – подсеть 192.168.1.0/24
    1. – подсеть 192.168.0.0/16
    1. 68 – подсеть 192.168.0.0/16

Неиспользуемые элементы настроек можно опускать начиная с конца.

В файле паролей могут существовать строки, с одинаковыми учетными данными пользователей (логин, common name, хеш), но использоваться будет первая найденная.

Примеры:

pascal
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>

Проверяет файл паролей на корректность формата.