Статья посвящена настройке интеграции системы, развернутой на сервере под управлением ОС Linux, с глобальным каталогом LDAP (Active Directory) с использованием механизма Kerberos
Для интеграции Linux с корпоративным LDAP (в данном примере, на основе Active Directory) требуется установить необходимые пакеты и настроить сам Kerberos, для этого Для корректной работы веб-сервера необходимо:
- Установить необходимые пакеты
- Задать имя серверу
- Настроить синхронизацию времени
Создание учетной записи в AD и файла keytab
Создание keytab-файла
Настройка kerberos на Linux сервере
Настройка Веб-приложения Vitro для авторизации в каталоге LDAP/AD при помощи сервис принципала
...
...
1.
...
Установка пакетов
Необходимые Установить необходимые пакеты ставим из репозиториев.
а) на Ubuntu/Debian:
...
| Code Block | ||
|---|---|---|
| ||
yum install krb5-workstation |
2. Имя сервера
В процессе настройки аутентификации через LDAP необходимо задать в качестве принципала имя нашего сервера:
...
* Для примера настройки в качестве FQDN имени сервера будет использовано vitroweb.domain.local (домен domain.local).
3. Настройка времени
Для работы с LDAP необходимо, чтобы время на контроллере совпадало с временем на нашем веб-сервере. Для этого необходимо настроить синхронизацию.
Для 1. Для начала настраиваем временную зону:
...
| Code Block | ||
|---|---|---|
| ||
timedatectl list-timezones |
2. Устанавливаем утилиту для синхронизации времени, настраиваем ее, разрешаем запуск демона и стартуем его. Набор команд будет зависеть от дистрибутива Linux.
...
| Code Block | ||||
|---|---|---|---|---|
| ||||
... server dc1.domain.local iburst # server ... # server ... # server ... ... |
4. Создание учетной записи в AD и файла keytab
Для подключения к контроллеру домена нам необходимо подтверждать подлинность. Это выполняется с помощью учетной записи в LDAP и ее отпечатка в файле keytab.
...
| Warning |
|---|
| Учетная запись должна быть размещена по пути, в котором присутствуют названия только на латинице. Подразделения и контейнеры не должны быть на русском. В противном случае, при выполнении команды ниже мы получим ошибку «Password set failed! 0x00000020». |
5. Создание keytab-файла
В двух словах, данный Данный файл позволяет пройти идентификацию в Kerberos без запроса пароля. Он содержит пары имен субъектов Kerberos и зашифрованные ключи, полученные из пароля Kerberos.
Мы создадим Надо создать данный файл на контроллере домена и скопируем скопировать на сервер Веб-приложения Vitro. Для этого на контроллере домена и от имени администратора запускаем надо запустить Powershell или обычную командную строку. ВводимВвести:
| Code Block | ||
|---|---|---|
| ||
ktpass /princ HTTP/vitroweb.public.com@DOMAIN.LOCAL /mapuser vitro_krb5@DOMAIN.LOCAL /crypto ALL /ptype KRB5_NT_PRINCIPAL /out C:\temp\krb5.keytab /pass <пароль пользователя> |
...
В нашем примере, после выполнения команды на контроллере домена в директории C:\temp появится файл krb5.keytab. Его копируем следует скопировать на Linux-сервер, например, при помощи помощи WinSCP.
6. Настройка kerberos на Linux сервере
Открываем 1. Открыть на редактирование файл:
| Code Block | ||
|---|---|---|
| ||
nano /etc/krb5.conf |
Приводим его 2. Привести файл к виду:
| Code Block | ||||
|---|---|---|---|---|
| ||||
[libdefaults]
default_realm = DOMAIN.LOCAL
# The following krb5.conf variables are only for MIT Kerberos.
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
# The following libdefaults parameters are only for Heimdal Kerberos.
fcc-mit-ticketflags = true
[realms]
VITRO.INTRA = {
kdc = 10.0.0.1
kdc = 10.0.0.5
admin_server = domain.local
default_domain = domain.local
}
[domain_realm]
.domain.local = DOMAIN.LOCAL
domain.local = DOMAIN.LOCAL |
| Info |
|---|
DOMAIN.LOCAL — домен предприятия (realm kerberos); kdc — перечень контроллеров домена; admin_server — первичный контроллер (в данном примере будет использоваться случайный). |
Переходим 3. Перейти в каталог с файлом keytab и выполняем выполнить команду:
| Code Block | ||
|---|---|---|
| ||
kinit -S HTTP/vitroweb.domain.local@DOMAIN.LOCAL vitro_krb5 |
При выполнении команды будет запрошен пароль пользователя vitro_krb5. В результате выполнения команды будет создан токен авторизации и сохранен в системную БД.
Теперь выполним4. Выполнить:
| Code Block | ||
|---|---|---|
| ||
klist |
Мы должны увидеть что-то на подобиеРезультат выполнения:
| Code Block | ||||
|---|---|---|---|---|
| ||||
Credentials cache: FILE:/tmp/krb5cc_0 Principal: vitro_krb5@DOMAIN.LOCAL Issued Expires Principal Jul 30 21:09:34 2024 Jul 31 07:09:34 2024 HTTP/vitroweb.domain.local@DOMAIN.LOCAL |
7. Настройка Веб-приложения Vitro для авторизации в каталоге LDAP/AD при помощи сервис принципала
Отредактировать (а при отсутствии предварительно создать) файл /usr/local/Vitro.Server.Core.Web/Vitro/Server/Conf/auth.json*
...
* путь "/usr/local/Vitro.Server.Core.Web/Vitro/Server/Conf" - это путь к директории с конфигурационными файлами Vitro. В случае размещения рабочей директории "Vitro.Server.Core.Web" по иному префикс-пути, отличного от "/usr/local" измените следует изменить значение пути на соответствующее собственное.
...