По умолчанию в OpenVPN используется аутентификация пользователей по сертификатам. Это означает, что любой пользователь, у которого есть *.ovpn файл с настройками подключения и сертификатами может подключиться к вашем OpenVPN серверу без пароля. В OpenVPN вы можете включить и настроить аутентификацию пользователей через LDAP сервер (Active Directory или FreeIPA).
Рассмотрим два сценария подключения к LDAP для проверки учетных данных пользователей:
- Плагин openvpn-auth-ldap
- Внешние скрипты
Настройка LDAP аутентификации OpenVPN с помощью openvpn-auth-ldap
Установите на OpenVPN сервере пакет openvpn-auth-ldap. Например, на Ubuntu/Debian для установки нужно выполнить команду:
# apt-get install openvpn-auth-ldap –y
Внесите изменения в файл server.conf:
# nano /etc/openvpn/server.conf
username-as-common-name plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf
Создайте в домене Active Directory нового пользователя openvpnsvc с паролем 01ru1bpRas. Эта учетная запись будет использоваться сервером OpenVPN для доступа к LDAP каталогу.
Затем создайте доменную группу безопасности VPN_users. Добавьте в нее аккаунты пользователей, которым разрешено выполнять аутентификацию через OpenVPN.
Теперь создайте каталог /etc/openvpn/auth и файл ldap.conf:
# mkdir /etc/openvpn/auth && nano /etc/openvpn/auth/ldap.conf
URL ldap://mskdc01.vmblog.ru BindDN CN=openvpnsvc,CN=Users,DC=vmblog,DC=ru Password 01ru1bpRas Timeout 15 TLSEnable no BaseDN "DC=vmblog,DC=ru" SearchFilter "(&(sAMAccountName=%u)(memberOf=CN=VPN_ users,CN=Users,DC=vmblog,DC=ru))"
Перезапустите openvpn:
# service openvpn restart
Осталось на клиентах OpenVPN добавьте в конфигурационный файл .ovpn строку:
auth-user-pass
Теперь при подключении к серверу у пользователя будет появляться запрос на ввод учетных данных.
Active Directory аутентификации OpenVPN с помощью скриптов
Если вы используете OpenVPN сервер на Windows, вы не сможете установить в нем плагин openvpn-auth-ldap. В этом случае для аутентификации пользователей OpenVPN через Active Directory можно использовать набор скриптов.
Предполагаем, что вы создали в AD группу VPN_users и добавили в нее пользователей, которым разрешено подключаться к OpenVPN.
На сервере OpenVPN добавьте следующие параметры в файл server.conf:
script-security 3 auth-user-pass-verify OpenVPNAuthWrapper.cmd via-env
Теперь создайте в каталоге с конфиг файлом server.conf следующие файлы:
- AuthOpenVPN.ini
- Auth4OpenVPN.vbs
- AuthOpenVPNWrapper.cmd
AuthOpenVPN.ini
Server = "192.168.15.20" Domain = "VMBLOG" DN = "OU=Users,DC=vmblog,DC=ru" Group = "VPN_users" Logging = "On"
Код файла Auth4OpenVPN.vbs доступен здесь https://sites.google.com/site/amigo4life2/openvpn
AuthOpenVPNWrapper.cmd
set LOCALAPPDATA=C:\Users\%USERNAME%\AppData\Local set CommonProgramFiles=C:\Program Files\Common Files set CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files set CommonProgramW6432=C:\Program Files\Common Files C:\Windows\System32\cscript.exe "C:\Program Files\OpenVPN\config\Auth4OpenVPN.vbs" exit %errorlevel%
Перезапустите службу OpenVPNService с помощью PowerShell:
Get-Service OpenVPNService| Restart-Service
Добавьте в конфигурационный файл клиента *.ovpn строки:
auth-user-pass auth-retry interact
Теперь при подключении клиента ваш OpenVPN сервер на Windows будет проверять учетные данные пользователя в Active Directory.