Speaker Rabbit

abbra


CIFS: curious information funneled sometimes


Previous Entry Share Next Entry
"отчет"
Speaker Rabbit
abbra
Следуя ishc, несколько беспорядочных описаний статусов. Некоторые используют твиттер, а мне неинтересно писать средствами этого телеграфа.
Три месяца сражались за cross-realm trusts. При реальном тестировании вместе с бойцами из Microsoft повылазили разнообразные мелочи и огрехи, которые удалось исправить в samba 4.0.0RC1. Одна из замечательных ошибок была следствием закручивания гаек на нашей стороне. В FreeIPA v3.0 при настройке cross-realm trusts на сервере IPA подымается PDC средствами smbd, который использует специальный модуль passdb под названием ipasam для работы с LDAP базой FreeIPA. Отличие его от обычного ldapsam в том, что он умеет обрабатывать информацию о доверяемых доменах, умеет просить сервер перегенерировать NT хэш пароля пользователя при наличии в его связке керберосовских ключей RC4-HMAC (который, по сути и есть NT hash). Помимо этого, сам модуль авторизуется в LDAP средствами Керберос и его возможности доступа ограничены настройками ACI на стороне LDAP. Традиционный ldapsam обычно все настраивают с правами администратора LDAP, оцените разницу.

Так вот, авторизация средствами Керберос у ipasam предполагает использование ccache по умолчанию для smbd и winbindd, в Федоре мы поместили его в /var/run/samba/krb5cc_samba. В winbindd код взаимодействия с PDC доверяемых доменов в какой-то момент времени переписывал ссылку на ccache по умолчанию на свой, внутренний, и не восстанавливал. При этом он для запроса к PDC доверяемого домена вначале обращался к модулю passdb (в нашем случае ipasam), чтобы вытащить пароль от учетной записи, которой удаленный PDC доверяет. ipasam обнаруживал, что билета для доступа в LDAP у него нет, получал его, возвращал пароль, а код в winbindd использовал этот ccache по умолчанию для дальнейшего обращения к PDC. Вот только ccache был инициализирован от имени cifs/fqdn@IPA.REALM вместо IPA.REALM$@TRUSTED.DOMAIN, поэтому прав для выполнения соответствующей операции у него не было. Что интересно, PDC доверяемого домена спокойно принимал авторизацию от имени cifs/fqdn@IPA.REALM, поскольку наш домен был у него в доверии, просто прав у этого принципала не было на операции в LSA.

Переписывание имени ccache по умолчанию было нужно по той причине, что в старых версиях libkrb5 не была реализована функция gss_import_krb5_creds() (она появилась в MIT krb5 1.9), поэтому приходилось передавать данные авторизации средствами ccache по умолчанию. До ipasam никто больше не использовал этот ccache в winbindd и все работало, хоть и могло сломаться в любую минуту.

Как результат, FreeIPA v3.0 cross-realm trusts теперь работают с Windows Server 2012, 2008R2 и 2008. На следующей неделе будет AD Interop в Редмонде, где мои коллеги добьют небольшие проблемы с распознаванием в MIT krb5 KDC структуры PAC от Windows Server 2012 (наш PAC WS2012 принимает без проблем, а вот структуру своего они немного модифицировали) и можно считать работу сделанной. Остается самое сложное -- полировать мелочи для облегчения установки, диагностирования ошибок и улучшения совместимости.

По поводу совместимости изрядно подгадил Firefox 15. https://bugzilla.mozilla.org/show_bug.cgi?id=546848, эпический двухлетний срач по поводу выноса из Мозиллы поддержки enablePrivilege(), завершился тем, что этот код все-таки вынесли. Теперь странички не могут изменить настройки браузера без помощи специальных расширений. Все это хорошо с точки зрения безопасности, но делает неработающим код в FreeIPA по полуавтоматической настройке браузера на авторизацию средствами Керберос. Теперь придется писать свое расширение, которое будет делать то же самое, но при этом еще должно как-то быть установлено на клиентской машине ради того, чтобы прописать две строчки в preferences. Жизнь не бывает простой, а волосы -- шелковистыми.

Получил свои визитки. У вендора, который их печатает для компании, в шрифтах нет греческих букв, вместо альфы и омеги на визитке получились точки в середине строки. Ну и ладно.

?

Log in

No account? Create an account