Используемые термины: OpenVPN , FreeIPA , Ubuntu .
Рассмотрим отдельной инструкцией настройку аутентификации на OpenVPN через LDAP на базе FreeIPA. Конфигурирование будет выполнено на Ubuntu (проверено для версий 20 и 22).
Предполагается, что у нас уже установлены серверы OpenVPN и FreeIPA . Ссылки на некоторые полезные инструкции будут в конце данной инструкции.
Настройка FreeIPA
Настройка OpenVPN
Редактирование на клиенте и проверка
Использование групп безопасности
Шифрование запросов
Дополнительные материалы
На сервере аутентификации необходимо создать учетную запись, с помощью которой мы будем подключаться по ldap и выполнять поиск учетных записей.
Данный аккаунт можно создать с помощью веб интерфейса FreeIPA или командной строки. Мы рассмотрим второй вариант.
Заходим по SSH на сервер FreeIPA и авторизуемся под администратором:
kinit admin
Создадим сервисную учетную запись командой:
ipa service-add openvpn/srv-vpn-01.remontka.local —skip-host-check —force
* в данном примере мы создаем сервисную учетную запись для хоста srv-vpn-01.remontka.local . Опции —skip-host-check и —force нужны на тот случай, если данного хоста нет в службе каталогов.
Чтобы создать пароль для сервисного аккаунта, создаем файл ldif:
vi openvpn-passwd.ldif
dn: krbprincipalname=openvpn/ srv-vpn-01.remontka.local @ remontka.local ,cn=services,cn=accounts, dc=remontka,dc=local
changetype: modify
add: objectClass
objectClass: simpleSecurityObject
—
add: userPassword
userPassword: openvpn123
* в данном примере мы создаем атрибут userPassword и задаем ему значение openvpn123 (наш пароль) для аккаунта openvpn/srv-vpn-01.remontka.local .
Применяем изменения для нашего каталога:
ldapmodify -f ./openvpn-passwd.ldif -D ‘cn=Directory Manager’ -W -H ldap://localhost -Z
Зададим позднее время для истечение срока действия пароля:
ipa service-mod openvpn/srv-vpn-01.remontka.local —setattr=krbPasswordExpiration=`echo $(($(date +%Y)+10))$(date +%m%d%H%M%SZ)`
* в данном примере 10 лет.
Удаляем тикет для авторизации на ldap под администратором:
kdestroy
Нам нужно установить модуль для аутентификации на OpenVPN через LDAP. Вводим команды:
apt update
apt install openvpn-auth-ldap
Редактируем конфигурационный файл openvpn (добавляем строку):
vi /etc/openvpn/server.conf
plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/ldap.conf
Создаем конфигурационный файл ldap.conf:
vi /etc/openvpn/ldap.conf
<LDAP>
URL «ldap:// ipa-server1.remontka.local ldap:// ipa-server2.remontka.local »
BindDN krbprincipalname=openvpn/ srv-vpn-01.remontka.local @ remontka.local ,cn=services,cn=accounts,dc= remontka ,dc= local
Password openvpn123
Timeout 15
FollowReferrals yes
TLSEnable no
</LDAP>
<Authorization>
BaseDN «cn=users,cn=accounts,dc= remontka ,dc= local »
SearchFilter «(&(uid=%u)(objectClass=person)(!(nsaccountlock=TRUE)))»
RequireGroup false
</Authorization>
* обратите внимание, что мы настроили подключение без шифрования — настройку TLS выполним ниже . Также мы закомментировали настройки аутентификации на основе групп — также, рассмотрим данную конфигурацию ниже .
** где:
Перезапускаем сервис:
systemctl restart openvpn@server
На этом настройка сервера завершена. Переходим к проверке.
На клиенте нам нужно в конфигурационный файл ovpn добавить всего одну строку:
…
auth-user-pass
Теперь, при попытке подключиться к VPN, программа будет требовать ввода логина и пароля — вводим данные для авторизации через ldap.
Выше мы закомментировали настройки авторизации на основе групп. Давайте рассмотрим, как их использовать. Для этого нужно выполнить настройки на стороне VPN и LDAP.
Открываем файл:
vi /etc/openvpn/ldap.conf
Добавляем секцию Group в Authorization :
<Authorization>
<Group>
BaseDN «cn=groups,cn=accounts,dc=remontka,dc=local»
SearchFilter «(|(cn=admins)(cn=openvpn))»
</Group>
</Authorization>
* где:
Перезапускаем сервис:
systemctl restart openvpn@server
На стороне сервера LDAP нужно создать группу безопасности для разрешения подключения (в нашем примере, это openvpn) и добавить в нее нужных пользователей.
Заходим по SSH на сервер FreeIPA и авторизуемся под администратором:
kinit admin
Создадим группу командой:
ipa group-add —desc=’Allow VPN-connections’ openvpn
Добавим в данную группу пользователей, которым хотим разрешить подключение, например:
ipa group-add-member openvpn —users=admin,remontka
* в данном примере мы добавляем пользователей admin и remontka .
Готово. Пробуем подключиться.
Для работы по зашифрованному каналу между VPN и LDAP необходимо, чтобы наш сервер OpenVPN был членом домена. После нужно запросить сертификат для служебной учетной записи и прописать его в конфигурационном файле ldap.
Подробнее о процессе присоединения компьютера к FreeIPA рассказано в инструкции Установка и использование FreeIPA на CentOS . В данном разделе пройдемся по данному вопросу поверхностно.
Устанавливаем клиентскую часть:
apt install freeipa-client
Вводим
ipa-client-install —mkhomedir
Система задаст несколько вопросов, после начнется процесс присоединения к домену. В итоге, мы должны увидеть:
…
Client configuration complete.
The ipa-client-install command was successful
Компьютер присоединен к домену на базе FreeIPA.
Мы создадим запрос на сертификат к службе сертификации FreeIPA. Данные действия нужно выполнить на сервере VPN.
Заходим по SSH на сервере OpenVPN и cоздаем запрос на получение сертификата:
ipa-getcert request -k /etc/ssl/freeipa.key -f /etc/ssl/freeipa.crt -I openvpn
Запрос должен обработаться быстро. Посмотреть статус можно командой:
ipa-getcert list
В каталоге:
ls /etc/ssl
… мы должны увидеть 2 новых файла — freeipa.key и freeipa.crt.
Откроем на редактирование конфигурационный файл ldap.conf:
vi /etc/openvpn/ldap.conf
Внесем следующие изменения:
<LDAP>
…
TLSEnable yes
TLSCACertFile /etc/ipa/ca.crt
TLSCertFile /etc/ssl/freeipa.crt
TLSKeyFile /etc/ssl/freeipa.key
</LDAP>
* где:
Перезапускаем сервис сервера vpn:
systemctl restart openvpn@server
Настройка выполнена. Пробуем подключиться клиентом.
Другие инструкции, которые могут быть полезными:
1. Настройка OpenVPN клиента .
2. Настройка OpenVPN + FreeIPA (LDAP) на CentOS 7 .
3. Установка и использование FreeIPA на Rocky Linux или CentOS .
4. Как настроить OpenVPN сервер и включить аутентификацию через LDAP (Active Directory) .
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…