Настройка Kerberos Single Sign-On (SSO) с GSSAPI на Debian 11 Bullseye.

Рассмотрим как настроить Kerberos Single Sign-On (SSO) с GSSAPI в Apache веб-сервере на Debian 11 Bullseye.

Исходные данные:

  • Windows домен — jakonda.local
  • Доменная служебная учетная запись — svc.web
  • Linux машина — Debian 11

 

Сперва необходимо создать сервисную учетную запись (в моем случае это будет svc.web) и сгенерировать для нее KEYTAB-файл на домен контроллере Windows.

Делается все это командой ниже, не забываем подставить свои данные вместо моих.

ktpass -princ HTTP/web.jakonda.ru@JAKONDA.LOCAL -mapuser svc.web@JAKONDA.LOCAL -pass 3T2XgYCz2IFcBUo0altu -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -out C:\Keytabs\svc.web.keytab
ИНФОМАЦИЯ. где web.jakonda.ru — это имя веб-сервера на котором должна работать Kerberos SSO аутентификация, а JAKONDA.LOCAL это имя домена. Важно соблюдать регистр написания имени домена.

Передаем сгенерированный KEYTAB-файл на Debian любым удобным способом и размещаем его в каталоге /etc, либо в любом другом безопасном месте месте.

 

Назначим права и уровень доступа к файлу:

chown root:www-data /etc/svc.web.keytab
chmod 640 /etc/svc.web.keytab

 

Устанавливаем пакеты веб-сервера apache, модуль аутентификации gssapi для него и kerberos.

apt-get install apache2 apache2-utils libapache2-mod-auth-gssapi krb5-user

 

Выполняем настройку kerberos. Файл конфигурации /etc/krb5.conf приводим к виду ниже, с учетом подстановки своих значений.

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = JAKONDA.LOCAL
 default_keytab_name = /etc/svc.web.keytab
 dns_lookup_kdc = false
 dns_lookup_realm = false
 forwardable = true
 ticket_lifetime = 24h

[realms]
 NORDRIM.LOCAL = {
 kdc = dc01.jakonda.local
 default_domain = JAKONDA.LOCAL
 admin_server = dc01.jakonda.local
 }

[domain_realm]
 .jakonda.local = JAKONDA.LOCAL
 jakonda.local = JAKONDA.LOCAL
ИНФОРМАЦИЯ. Важно соблюдать регистр написания имени домена как в приведенном примере выше. 

 

Для проверки что все настроено правильно и KEYTAB-файл валидный, можно выполнив команду:

kinit -V -k -t /etc/svc.web.keytab HTTP/web.jakonda.ru@JAKONDA.LOCAL

Using default cache: /tmp/krb5cc_0
Using principal: HTTP/web.jakonda.ru@JAKONDA.LOCAL
Using keytab: /etc/svc.web.keytab
Authenticated to Kerberos v5

Если после выполнения команды, вывод такой же как и у меня, то значит все в порядке, можно приступать к конфигурации веб сервера.

 

Для теста работы Kerberos SSO аутентификации создадим файл /var/www/html/index.php со следующим содержанием:

<?php
echo "<h2>Kerberos Auth</h2>";
echo "Auth type: " . $_SERVER['AUTH_TYPE'] . "<br />";
echo "Remote user: " . $_SERVER['REMOTE_USER'] . "<br />";
?>

 

Создаем конфигурацию виртуального хоста /etc/apache2/sites-available/001-web.conf со следующим содержанием:

<VirtualHost *:80>
        ServerName web.jakonda.ru

        DocumentRoot /var/www/html
        DirectoryIndex index.php

        <Location />
                AuthType GSSAPI
                AuthName "Kerberos Login"

                GssapiCredStore keytab:/etc/svc.web.keytab
                GssapiAcceptorName HTTP
                GssapiBasicAuth On
                GssapiLocalName On
                GssapiUseSessions On
                GssapiNegotiateOnce On

                Require valid-user
        </Location>
</VirtualHost>

 

Включаем виртуальный хост и перезапускаем службу apache:

a2ensite 001-web.conf && /etc/init.d/apache2 restart

 

При входе на станицу web.jakonda.ru (в моем случае я авторизовался на Windows машине входящую в домен jakonda.local под доменным пользователем Jakonda) мой вывод будет следующим:

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

Оставьте комментарий

три × два =