Связывание Linux MIT Kerberos с Windows 2003 Active Directory

Привет, мне было интересно, как можно связать Linux MIT Kerberos с Windows 2003 Active Directory для достижения следующего:

  1. Пользователь USER@WINDOWDIRECTORY.INTERNAL пытается войти на веб-сайт Apache, который работает на том же сервере, что и Linux MIT Kerberos.

  2. Модуль Apache сначала запрашивает локальный MIT Kerberos в Linux, знает ли он пользователя с таким именем или областью.

  3. MIT Kerberos обнаруживает, что он не отвечает за эту область, и перенаправляет запрос в Windows 2003 Active Directory.

  4. Active Directory Windows 2003 отвечает положительно и передает эту информацию Linux MIT Kerberos, который, в свою очередь, сообщает об этом модулю Apache, который предоставляет пользователю доступ к его файлам.

    Вот изображение ситуации: dfdfdf

Документация, которую я прочитал относительно этой проблемы, часто отличается от этой проблемы:

  • Некоторые обсуждают соединение MIT Kerberos с Active Directory для получения доступа к ресурсам на сервере Active Directory;

  • В то время как другой использует ссылку для аутентификации пользователей Windows на MIT Kerberos через Windows 2003 Active Directory. (Моя проблема наоборот.)

Так что мой вопрос сводится к следующему:

Возможно ли, чтобы сервер Linux MIT Kerberos проходил через запросы к области Active Directory, а затем получал ответ и передавал его запрашивающей службе? (Хотя это не проблема, если запрашивающая служба и Windows 2003 Active Directory обмениваются данными напрямую.)

Предложения и конструктивная критика очень ценятся.:)


ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ

У меня есть некоторые проблемы с этим. Я успешно настроил mod_auth_kerb для согласования с MIT Kerberos (в моем случае EINDWERK.LAN), и если я получу билет для локального MIT Kerberos с kinit в Ubuntu я могу подключаться к веб-серверу Apache без запроса входа в систему.

Однако, если я получаю билет с сервера Active Directory (в моем случае WINDOWS.LAN) и захожу на веб-сервер Apache, меня приветствует приглашение для входа в систему. Глядя на пакеты через Wireshark, кажется, что веб-сервер Apache неправильно пытается использовать TGT из EINDWERK.LAN для WINDOWS.LAN.

Я загрузил вывод Wireshark для:

  1. kinit для пользователя "Тестер" Active Directory (tester@WINDOWS.LAN), который успешно (игнорировать KRB5KDC_ERR_PREAUTH_REQUIRED, здесь нет предаварийности)

  2. Одна поездка на веб-сервер Apache, где вы можете увидеть, что все идет не так. [ССЫЛКА НА САЙТ]

РЕДАКТИРОВАТЬ: Да, он всегда пытается аутентифицироваться с TGT для EINDWERK.LAN. Я собираюсь попытаться создать доверие между AD и MIT Kerberos и посмотреть, исправит ли это.

РЕДАКТИРОВАТЬ 2: Хорошо, создавая доверие ( Вот учебник), все, кажется, проверяется правильно, но мне пришлось принудительно включить шифрование rc4-hmac для билетов из Active Directory, а служба Apache HTTP зашифрована в des3-cbc-sha1. Кто-нибудь знает, как удалить принципала и зашифровать его ключи определенным шифрованием?

2 ответа

Решение

Хорошо, пересоздав мою базу данных Kerberos и добавив принципалы с каждым имеющимся там энктипом (aes256-cts: обычный arcfour-hmac: нормальный des3-hmac-sha1: обычный des-cbc-crc: нормальный des: нормальный des:v4 des:norealm des:onlyrealm des:afs3), а затем экспортируя HTTP/link.to.website@REALM в таблицу ключей для apache, пользователи Active Directory теперь также могут войти в систему.

Вот пример добавления принципала с каждой отдельной кодировкой и его экспорта в таблицу ключей:

addprinc -e "aes256-cts: обычный arcfour-hmac: нормальный des3-hmac-sha1: нормальный des-cbc-crc: нормальный des: нормальный des:v4 des:norealm des:onlyrealm des:afs3" HTTP/www.eindwerk. ЛВС

ktadd -e "aes256-cts: нормальный arcfour-hmac: нормальный des3-hmac-sha1: нормальный des-cbc-crc: нормальный des: нормальный des:v4 des:norealm des:onlyrealm des:afs3" -kt /etc/apache2/apache.keytab HTTP/www.eindwerk.lan

РЕДАКТИРОВАТЬ: Хорошо, кажется, все это работает правильно, за исключением того, что Internet Explorer всегда пытается получить билет для HTTP/[TRUSTED_DOMAIN_NAME_IN_WIN_2003] с первой попытки. В моем случае это переводится как "HTTP/EINDWERK.LAN", а "HTTP/NS.EINDWERK.LAN".

Я также заметил, что попытка полностью изменить доменное имя доверия [IMAGE] и абсолютно нарушает любую межобластную аутентификацию: TGT обмениваются правильно, но когда ваш локальный Linux KDC пытается фактически использовать тикет, он обнаруживает, что может не расшифровываю его, выдавая ошибку "PROCESS_TGS: authtime 0, для HTTP/ns.eindwerk.lan@EINDWERK.LAN, нет соответствующего ключа в записи" в журнале KDC. Причиной этого вполне может быть то, что многие механизмы шифрования принимают область и имя пользователя в виде соли, так что доменное имя действительно должно быть задано правильно.

Вы можете настроить несколько областей в вас /etc/krb5.conf файл в линуксе. См. Раздел областей документов MIT Kerberos. Вы можете настроить свою область Windows там, и пользователи, которые войдут в систему с участником, который является частью этой области, будут аутентифицированы в вашей Active Directory Windows 2003.

Тогда вам просто нужно установить Apache с mod_auth_kerb и убедиться, что KrbAuthRealms переменная конфигурации, включающая в себя все области, которые вы хотите иметь возможность аутентификации через Apache.

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

Другие вопросы по тегам