Вопрос или проблема
У меня есть сервер OpenLDAP, который я использую для аутентификации и авторизации различных сервисов. Все пользователи имеют объектный тип inetOrgPerson
, а мои группы – groupOfNames
.
Теперь я хочу настроить Samba для аутентификации через LDAP (с авторизацией на основе групп). Я не могу/не хочу использовать Samba в качестве контроллера домена, а только как файловый сервер. Я также не хочу управлять учетными записями пользователей отдельно в Samba, потому что у меня есть вся информация, которая мне нужна, в LDAP (имя пользователя, пароль, членство в группах). Я также хочу избежать изменения своей DIT. Насколько я могу судить по своим текущим исследованиям, я не могу сделать это напрямую, потому что
a) Samba использует собственное хранилище учетных данных для аутентификации, что означает, что мне придется использовать smbpasswd
для каждого существующего пользователя LDAP
b) У моих пользователей LDAP должны быть атрибуты Samba
После дополнительных исследований я подозреваю, что решением моей проблемы могло бы стать использование Kerberos между Samba и LDAP.
У меня нет опыта в администрировании Kerberos, поэтому перед тем, как углубляться в это, я хочу уточнить следующие темы:
- Мои предположения верны?
- Могу ли я запустить сервер аутентификации Kerberos и центр распределения ключей на одной машине и настроить его так, чтобы он обслуживал только запросы на выдачу билетов на localhost? (OpenLDAP и Samba работают на одной машине)
- Позволит ли использование Kerberos сохранить мою DIT без изменений и выполнять аутентификацию/авторизацию исключительно с информацией, которая есть в LDAP?
- Существуют ли более простые решения?
Я использую Ubuntu Server 14.04.
Большое спасибо за любые подсказки заранее
Хотя это вопрос десятилетней давности, он по-прежнему кажется актуальным для других, так как я недавно видел похожие вопросы в IRC Samba, и тем не менее, я отвечаю на него из общего интереса.
Позволит ли использование Kerberos сохранить мою DIT без изменений и выполнять аутентификацию/авторизацию исключительно с информацией, которая есть в LDAP?
С технической точки зрения это позволит сохранить DIT без изменений, однако, Kerberos также будет иметь свою собственную базу паролей, подобно Samba.
Тем не менее, улучшение в том, что у Kerberos есть более универсальная база паролей (вы можете использовать Kerberos для LDAP, SSH, HTTP и многих других сервисов), а также более безопасная (он по-прежнему имеет NT4-хэши для обратной совместимости, но в первую очередь полагается на хэши PBKDF2). Вы также можете настроить OpenLDAP на делегирование своей проверки паролей центру распределения ключей Kerberos через вспомогательный демон ‘saslauthd’, чтобы Kerberos стал вашим единственным хранилищем паролей.
Что касается LDAP DIT: это зависит от того, какую реализацию KDC Kerberos вы используете. Например, я использую KDC MIT Kerberos для личных сервисов, и хотя по умолчанию он использует файловую базу данных, я настроил его на использование LDAP в качестве бэкенда базы данных – по двум причинам: 1) он использует многоуровневую репликацию OpenLDAP, 2) он поддерживает псевдонимы принципалов (например, host/foo = host/foo.bar.tld
), которые в данный момент все еще не реализованы для файлового бэкенда – и у него есть опция расширять записи учетных записей пользователей атрибутами Kerberos, но по умолчанию используется полностью отдельное поддерево “cn=Kerberos” в DIT.
Могу ли я запустить сервер аутентификации Kerberos и центр распределения ключей на одной машине
Служба аутентификации является частью центра распределения ключей.
Логически KDC выполняет две функции: служба аутентификации и служба выдачи билетов; но на практике все реализации объединяют их в единую службу, которая отвечает как на AS-REQ, так и на TGS-REQ.
и настроить его так, чтобы он обслуживал только запросы на выдачу билетов на localhost? (OpenLDAP и Samba работают на одной машине)
Это не имеет смысла, так как билеты Kerberos не выдаются OpenLDAP или Samba – билеты Kerberos выдаются клиентам.
Ответ или решение
Аутентификация Samba и LDAP: Решение для Ubuntu Server 14.04
Вопрос интеграции Samba с OpenLDAP для аутентификации и авторизации пользователей является актуальной задачей для многих системных администраторов, особенно в средах, где необходимо управлять пользователями без дублирования информации в нескольких системах. Давайте рассмотерим ключевые аспекты, связанные с этой интеграцией.
1. Правильные ли ваши предположения?
Вы абсолютно правы в своих наблюдениях о том, что Samba по умолчанию использует собственное хранилище учетных записей. Это означает, что без дополнительных настроек потребуется использование smbpasswd
для каждой существующей записи в LDAP, что является неэффективным подходом.
2. Использование Kerberos
Использование Kerberos в вашем случае является хорошим решением, поскольку он может служить промежуточным уровнем между Samba и LDAP:
- Хранение паролей: Kerberos имеет свою собственную базу данных паролей, что может вызвать автоматическое дублирование информации. Однако Kerberos также позволяет связать его с LDAP для облегчения аутентификации, если вы настроите OpenLDAP для использования
saslauthd
для проверки паролей. - Поддержка различных служб: Использование Kerberos поддерживает аутентификацию для нескольких различных сервисов (LDAP, SSH, HTTP и т. д.), что делает его более универсальным и безопасным.
3. Изменения в DIT
Использование Kerberos не требует изменения вашей текущей структуры DIT (Directory Information Tree). Однако стоит учитывать, что Kerberos требует наличия своих учетных записей. Использование Kerberos с OpenLDAP может быть оптимизировано путем настройки баз данных Kerberos для использования LDAP в качестве источника данных или изменения способа хранения учетных записей.
4. Настройка KDC на локальном хосте
Вы можете установить и настроить сервер Kerberos (KDC) на одной машине, где уже работают OpenLDAP и Samba. Однако важно понимать, что Kerberos предоставляет аутентификацию для клиентов, и не имеет смысла настраивать его так, чтобы он реагировал только на запросы от localhost. Сервер Kerberos будет отвечать на запросы от клиентов, а не от служб, работающих на той же машине.
Альтернативные решения
Если использование Kerberos кажется сложным, можно рассмотреть следующие варианты:
- Samba с LDAP: Возможно, гораздо проще будет интегрировать Samba с LDAP напрямую, используя подходы, такие как
ldapsam
в конфигурации Samba. Вам может потребоваться добавить необходимые атрибуты Samba (например, sambaNTPassword и sambaLMPassword), но это может быть осуществимо без значительных изменений вашей схемы LDAP. - Использование
smbldap-tools
: Это набор утилит, который помогает управлять пользователями Samba в LDAP, что может уменьшить ваши усилия при манипулировании учетными записями.
Заключение
На основании вышеизложенного, использование Kerberos с OpenLDAP — это жизнеспособное решение для реализации аутентификации Samba. Однако возможно также, что вам удастся реализовать интеграцию на основе LDAP без необходимости в Kerberos. Рекомендуется внимательно изучить оба подхода и протестировать их в вашей среде, чтобы выбрать наиболее подходящий способ внедрения.