Связывание Linux MIT Kerberos с Windows 2003 Active Directory
Привет, мне было интересно, как можно связать Linux MIT Kerberos с Windows 2003 Active Directory для достижения следующего:
Пользователь USER@WINDOWDIRECTORY.INTERNAL пытается войти на веб-сайт Apache, который работает на том же сервере, что и Linux MIT Kerberos.
Модуль Apache сначала запрашивает локальный MIT Kerberos в Linux, знает ли он пользователя с таким именем или областью.
MIT Kerberos обнаруживает, что он не отвечает за эту область, и перенаправляет запрос в Windows 2003 Active Directory.
Active Directory Windows 2003 отвечает положительно и передает эту информацию Linux MIT Kerberos, который, в свою очередь, сообщает об этом модулю Apache, который предоставляет пользователю доступ к его файлам.
Вот изображение ситуации:
Документация, которую я прочитал относительно этой проблемы, часто отличается от этой проблемы:
Некоторые обсуждают соединение 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 для:
kinit
для пользователя "Тестер" Active Directory (tester@WINDOWS.LAN), который успешно (игнорировать KRB5KDC_ERR_PREAUTH_REQUIRED, здесь нет предаварийности)Одна поездка на веб-сервер 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.