Используемые термины: OpenVPN , FreeIPA , CentOS .
Рассмотрим отдельной инструкцией настройку аутентификации на OpenVPN через LDAP на базе FreeIPA. Конфигурирование будет выполнено на CentOS 7.
Предполагается, что у нас уже установлены серверы OpenVPN и FreeIPA .
Настройка FreeIPA
Настройка OpenVPN
Редактирование на клиенте и проверка
Использование групп безопасности
Шифрование запросов
На сервере аутентификации мы должны создать учетную запись, с помощью которой мы будем подключаться по ldap и выполнять поиск учетных записей. Мы создадим сервисный аккаунт.
Заходим по SSH на сервер FreeIPA и авторизуемся под администратором:
kinit admin
Создадим сервисную учетную запись командой:
ipa service-add openvpn/oserver.remontka.local
Чтобы создать пароль для сервисного аккаунта, создаем файл ldif:
vi openvpn-passwd.ldif
dn: krbprincipalname=openvpn/oserver.remontka.local@remontka.local,cn=services,cn=accounts,dc=remontka,dc=local
changetype: modify
add: objectClass
objectClass: simpleSecurityObject
—
add: userPassword
userPassword: openvpn
* в данном примере мы создаем атрибут userPassword и задаем ему значение openvpn (наш пароль) для пользователя openvpn/oserver.remontka.local .
Применяем изменения для нашего каталога:
ldapmodify -f ./openvpn-passwd.ldif -D ‘cn=Directory Manager’ -W -H ldap://localhost -Z
Зададим позднее время для истечение срока действия пароля:
ipa service-mod openvpn/oserver.remontka.local —setattr=krbPasswordExpiration=20300317010000Z
* в данном примере до 2030 года.
Удаляем тикет для авторизации на ldap под администратором:
kdestroy
Нам нужно установить модуль для аутентификации на OpenVPN через LDAP. Вводим команды:
yum install epel-release
yum install openvpn-auth-ldap
Редактируем конфигурационный файл openvpn (добавляем строку):
vi /etc/openvpn/server.conf
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf
Открываем конфигурационный файл ldap.conf:
vi /etc/openvpn/auth/ldap.conf
Приводим его к, примерно, следующему виду:
<LDAP>
…
URL «ldap://ipa-server.remontka.local ldap://ipa-server2.remontka.local»
…
BindDN krbprincipalname=openvpn/oserver.remontka.local@remontka.local,cn=services,cn=accounts,dc=remontka,dc=local
…
Password openvpn
…
TLSEnable no
…
</LDAP>
<Authorization>
…
BaseDN «cn=users,cn=accounts,dc=remontka,dc=local»
…
SearchFilter «(&(uid=%u)(objectClass=person))»
…
# <Group>
# BaseDN «cn=groups,cn=accounts,dc=remontka,dc=local»
# SearchFilter «(|(cn=admins)(cn=openvpn))»
# …
# </Group>
</Authorization>
* обратите внимание, что мы настроили подключение без шифрования — настройку TLS выполним ниже . Также мы закомментировали настройки аутентификации на основе групп — также, рассмотрим данную конфигурацию ниже .
** где:
Перезапускаем сервис:
systemctl restart openvpn@server
На этом настройка сервера завершена. Переходим к проверке.
На клиенте нам нужно в конфигурационный файл ovpn добавить всего одну строку:
…
auth-user-pass
Теперь, при попытке подключиться к VPN, программа будет требовать ввода логина и пароля — вводим данные для авторизации через ldap.
Выше мы закомментировали настройки авторизации на основе групп. Давайте рассмотрим, как их использовать. Для этого нужно выполнить настройки на стороне VPN и LDAP.
Открываем файл:
vi /etc/openvpn/auth/ldap.conf
Снимаем комментарии с настроек Group и приводим их к виду:
…
<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 . В данном разделе пройдемся по данному вопросу поверхностно.
Устанавливаем клиентскую часть:
yum install freeipa-client
Вводим
ipa-client-install —mkhomedir
Система задаст несколько вопросов, после начнется процесс присоединения к домену. В итоге, мы должны увидеть:
…
Client configuration complete.
The ipa-client-install command was successful
Компьютер присоединен к домену на базе FreeIPA.
Ранее мы создали служебную учетную запись openvpn/oserver.remontka.local — создадим для нее сертификат. Данные действия нужно выполнить на сервере VPN.
Итак, заходим по SSH на сервере OpenVPN и авторизовываемся под админом на сервере FreeIPA:
kinit admin
Создаем запрос на получение сертификата:
ipa-getcert request -K openvpn/`hostname` -k /etc/pki/tls/certs/freeipa.key -f /etc/pki/tls/certs/freeipa.crt -I openvpn
Запрос должен обработаться быстро. Посмотреть статус можно командой:
ipa-getcert list
В каталоге:
ls /etc/pki/tls/certs
… мы должны увидеть 2 новых файла — freeipa.key и freeipa.crt.
Закрываем сессию
kdestroy
Откроем на редактирование конфигурационный файл ldap.conf:
vi /etc/openvpn/auth/ldap.conf
Внесем следующие изменения:
<LDAP>
…
TLSEnable yes
…
TLSCACertFile /etc/ipa/ca.crt
…
TLSCertFile /etc/pki/tls/certs/freeipa.crt
TLSKeyFile /etc/pki/tls/certs/freeipa.key
…
</LDAP>
* где:
Перезапускаем сервис сервера vpn:
systemctl restart openvpn@server
Настройка выполнена. Пробуем подключиться клиентом.
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…