Настройка авторизации OpenVPN сервера в домене Active Directory на примере Debian 7 Wheezy
Осуществляется при помощи плагина openvpn-auth-ldap. Подразумевается, что сам OpenVPN уже работает и необходимо только прикрутить авторизацию. Настроить плагин получилось далеко не сразу, вся суть в правильной строке SearchFilter конфига подключения к AD. Если бы удалось найти рабочее решение на других ресурсах, то эта заметка не была бы написана.
Поставить:
aptitude install openvpn-auth-ldap
В конфиг сервера /etc/openvpn/server.conf
добавить строки:
plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/ldap username-as-common-name
Создать файл /etc/openvpn/ldap
со следующим содержимым:
<LDAP> URL ldap://192.168.0.1 BindDN [email protected] Password Password Timeout 15 TLSEnable no </LDAP> <Authorization> BaseDN "ou=Users,dc=domain,dc=com" SearchFilter "(&(objectCategory=person)(objectClass=user)(sAMAccountName=%u)(memberOf=CN=VPN,ou=Users,dc=domain,dc=com))" </Authorization>
URL
- адрес DC
BindDN
- имя пользователя с правом чтения AD (обычный не привелегированный доменный пользователь).
Password
- пароль этого пользователя.
BaseDN
- контейнер в котором искать пользователей.
SearchFilter
- фильтр, только при условии соблюдения которого, пользователю будет позволено соединиться. В данном случае, пользователь должен входить в доменную группу VPN.
Рестарт демона:
/etc/init.d/openvpn restart
В конфиге клиента добавить строку для запроса авторизации:
auth-user-pass
Если файл назван ldap.conf
, то при каждом запуске в /var/log/syslog
будет сыпаться ошибка:
ovpn-ldap: Options error: Unrecognized option or missing parameter(s) in /etc/openvpn/ldap.conf:1: LDAP (2.2.1)
Это происходит из-за того, что любой файл *.conf
в директории /etc/openvpn/
демон считает своим конфигом и пытается запустить новый инстанс, парся его настройки. Естественно, синтаксис не верен и выходит данная ошибка. Во избежание ошибки следует сменить местонахождение файла и его путь в конфиге, например так /etc/openvpn/ldap/ldap.conf
. Или просто переименовать, убрав расширение файла /etc/openvpn/ldap
Спасибо уважаемому yann за подсказку.
А как сделать запрос ввода пароля у клиента при автозапуске openvpn демона? Чтобы не из файла брать.ю а именно клиент вводил, несколько дней бьюсь, не хочется в файле хранить логин/пароль от AD.
Тут логика простая. Если это сервис, который запускается при старте системы, то пароль должен быть сохранен в файле. Если должен вводить пользователь, то пусть он и запускает впн клиента. Мне кажется это очевидным.
Да хотелось минимизировать работу пользователя с интерфейсом. Что бы вкличил — вввел пароль — работаешь.
Опишите пожалуйста юзкейс полностью
Имеем: Сервер openvpn на pfsense с настроенной авторизацией через AD
клиент на Raspberi Pi3 с системой Raspbian
Цель сделать тонкий клиент который соедениться по openvpn и следом откроет на весь экран rdp сессию
Таким образом это сервис. Сохраняйте креды в файл и чмод 400 на него и владельцем рут, чтобы только он мог читать. Все.