Настройка единого входа NTLM/Kerberos SSO для UBUNTU/RHEL/CentOS
Обзор
Расширение Kerberos SSO упрощает получение билета Kerberos для предоставления доступа (TGT) из Active Directory вашей организации или другого домена поставщика идентификации, позволяя пользователям аутентифицироваться при доступе к таким ресурсам, как веб-сайты, приложения и файловые серверы.
Этапы интеграции Kerberos SSO LDAP для единого входа (SSO)
Шаг 1: Установите клиентские библиотеки Kerberos на веб-сервер.
Для UBUNTU:
- Для установки клиентских библиотек Kerberos используйте следующую команду в терминале.
sudo apt-get install krb5-user
Для RHEL/CentOS:
- Для установки клиентских библиотек Kerberos используйте следующую команду в терминале.
yum install krb5-workstation krb5-libs krb5-auth-dialog
Шаг 2: Настройте домен Active Directory в файле конфигурации Kerberos.
Для настройки доменов Active Directory в конфигурационном файле Kerberos используются следующие шаги:
- Откройте и отредактируйте файл /etc/krb5.conf.
- Добавьте следующий фрагмент конфигурации в файл krb5.conf.
- Сохраните файл.
EXAMPLE.ORG= { kdc = <AD DOMAIN CONTROLLER IP/DNS> :88 }
ПРИМЕЧАНИЕ: Заменить КОНТРОЛЛЕР ДОМЕНА AD IP/DNS с вашим IP-адресом/DNS-адресом. Убедитесь EXAMPLE.ORG Должно быть написано заглавными буквами.
Заменить EXAMPLE.ORG с именем домена Active Directory.
И убедитесь, что порт 88 на контроллере домена Active Directory доступен с этого сервера.
Шаг 3: Установите модуль auth_kerb для Apache.
Для UBUNTU:
- Для установки модуля auth_kerb для Apache используйте следующую команду.
- После установки модуля auth_kerb его необходимо включить с помощью следующей команды.
- После включения перезапустите Apache, чтобы изменения вступили в силу.
sudo apt-get install libapache2-mod-auth-kerb
a2enmod auth_kerb
Для RHEL/CentOS:
- Для установки модуля auth_kerb для Apache используйте следующую команду.
- Для вступления изменений в силу перезапустите Apache.
yum install mod_auth_kerb
Шаг 4: Создайте файл Keytab на контроллере домена Active Directory.
- На контроллере домена Active Directory выполните следующую команду для создания файла Keytab.
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.ORG -pass PASSWORD
-mapuser <svc@EXAMPLE.ORG> -Ptype KRB5_NT_PRINCIPAL -out "<PATH>\spn.keytab"
ПРИМЕЧАНИЕ: Убедитесь, что EXAMPLE.ORG написано заглавными буквами.
| Имя хоста сервера: | Это имя хоста сайта, размещенного на сервере. |
| Имя хоста сервера: | Это имя хоста сайта, размещенного на сервере. |
| EXAMPLE.ORG: | Это доменное имя Active Directory. |
| ПАРОЛЬ: | Это пароль от учетной записи службы, указанной выше. |
| svc@EXAMPLE.ORG: | Это служебная учетная запись в Active Directory. |
| Путь: | Путь к локальному расположению, где будет храниться файл keytab. |
- Для создания учетной записи службы необходимо выполнить несколько предварительных условий:
- Для пароля учетной записи необходимо установить следующий пароль: Срок действия не истёк.
- Для делегирования полномочий этому аккаунту следует доверять.
- Скопируйте Книга файл с контроллера домена Active Directory на веб-сервер, размещенный на Apache.
ПРИМЕЧАНИЕ: Приведённая выше команда создаёт файл keytab. Его необходимо разместить на сервере. Пользователь, запускающий Apache, должен иметь полный доступ к этому файлу. Пользователь должен иметь права доступа к файлу keytab.
Шаг 5: Настройка единого входа Kerberos для каталога сайта.
Для UBUNTU:
- Отредактируйте файл /etc/apache2/sites-enabled/000-default.conf.
- Добавьте следующий раздел в каталог сайта.
<Directory "/placeholder"> AuthType Kerberos KrbAuthRealms EXAMPLE.ORG KrbServiceName HTTP Krb5Keytab <PATH TO KEYTAB> KrbMethodNegotiate on KrbMethodK5Passwd on require valid-user </Directory>
Для RHEL/CentOS:
- Отредактируйте конфигурационный файл auth_kerb.conf в папке /etc/httpd/conf.d/.
- Добавьте следующий раздел в каталог сайта.
LoadModule auth_kerb_module /usr/lib/apache2/modules/mod_auth_kerb.so <Directory "/placeholder"> AuthType Kerberos KrbAuthRealms EXAMPLE.ORG KrbServiceName HTTP Krb5Keytab <PATH TO KEYTAB> KrbMethodNegotiate on KrbMethodK5Passwd on require valid-user </Directory>
ПРИМЕЧАНИЕ: Убедитесь, что EXAMPLE.ORG написано заглавными буквами.
Ниже перечислены компоненты указанной выше конфигурации:
| EXAMPLE.ORG: | Это домен Active Directory, настроенный в файле krb5.conf. |
| ПУТЬ К KEYTAB: | Доступный путь к файлу keytab на этом сервере. |
- После выполнения этих настроек для вступления изменений в силу необходимо перезапустить Apache.
Диагностика неисправностей
Вот наиболее распространенные сообщения об ошибках:
- Неверные права доступа к файлу /etc/krb5.keytab в файловой системе, то есть он недоступен для чтения пользователем Linux веб-сервера.
- Для изменения прав доступа к файловой системе используйте $ chmod 400 filename.
- Отсутствует субъект службы (возможно, HTTP/webserver.yourdomain.com@YOURDOMAIN.COM) в файле /etc/krb5.keytab.
- Веб-сайт не находится в зоне «Локальная интранет» в Internet Explorer, или же Internet Explorer настроен неправильно. См. раздел «Используется NTLM для аутентификации вместо Kerberos».
- Неверный kvno или пароль машины в файле /etc/krb5.keytab → пересоздайте keytab, используя правильную информацию.
- Если у вас возникла проблема с локальным кэшем билетов Kerberos на вашем рабочем компьютере, используйте Kerbtray.exe для очистки кэша билетов и снова откройте веб-сайт в Internet Explorer.
gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Permission denied).
gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Key table entry not found).
Warning: received token seems to be NTLM, which isn't supported by the Kerberos module. Check your IE configuration.
gss_accept_sec_context() failed: An unsupported mechanism was requested (, Unknown error)
gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, ).
