Здравствуйте, уважаемые форумчане! Решил обратиться за помощью и советом.
Задача: настроить почтовый сервер (freebsd+postfix+dovecot+AD) c прозрачной авторизацией KERBEROS в Active Directory, чтобы пользователям, которые авторизовались в AD, не приходилось забивать пароль в почтового клиента (Microsoft Outlook), т.к. пароль в домене периодически подлежит замене.
Контроллер домена: kd.dom.lan (Windows server 2008). Почтовый сервер: mail.dom.lan (freebsd 9.2-RELEASE). DNS работает на контроллере домена. Запись для почтового сервера есть и в прямой и в обратной зоне.
На данном этапе не могу добиться получения почтовым сервером билета kerberos с контроллера домена с помощью файла-keytab. Файл keytab создаю для службы imap, которая работает на почтовом сервере (dovecot).
В ответ на команду:
kinit -k IMAP/mail.dom.lan
получаю ошибку:
kinit: krb5_get_init_creds: Client (IMAP/mail.dom.lan@DOM.LAN) unknown
Если попытаться получить билет для реального пользователя AD командой:
kinit domainuser
то после ввода правильного пароля пользователя domainuser билет получен. Это видно в выводе команды klist.
Обращаюсь за помощью, т.к. больше нет идей для преодоления этой ошибки. Не могу понять, почему «Клиент неизвестен». Все делалось после прочтения и изучения многочисленных статей и обсуждений. Многие смогли увидеть эту долгожданную надпись: «Authenticated to Kerberos v5», у меня пока не выходит.
Файл keytab генерировал двумя способами:
1. С помощью утилиты ktpass, генерировал файл как для фиктивного пользователя AD, так и для учетной записи компьютера - почтового сервера.
----------------------------------------------------------
- в домене (OU=Users) был создан пользователь imap c неустаревающим и неменяющимся паролем 1234.
- сгенерирован keytab командой:
ktpass -princ IMAP/mail.dom.lan@DOM.LAN -mapuser imap@DOM.LAN -crypto RC4-HMAC-NT -pass 1234 -ptype KRB5_NT_PRINCIPAL -out c:\imap.keytab
- файл imap.keytab скопирован на почтовый сервер в папку /tmp
- на почтовом сервере imap.keytab добавлен в /etc/krb5.keytab командой:
ktutil copy /tmp/imap.keytab /etc/krb5.keytab
- проверка добавления командой:
ktutil list
- проверка создания SPN на контроллере домена:
setspn -Q IMAP/mail.dom.lan
CN=imap,CN=Users,DC=dom,DC=lan
IMAP/mail.dom.lan
-----------------------------------------------------
Keytab для учетной записи компьютера.
- проверка отсутствия записей SPN для службы imap на контроллере домена командой setspn.exe
- для учетной записи компьютера почтового сервера сгенерировал файл keytab командой:
ktpass -princ IMAP/mail.dom.lan@DOM.LAN -mapuser mail$@DOM.LAN -crypto RC4-HMAC-NT -pass 1234 -ptype KRB5_NT_PRINCIPAL -out c:\imap.keytab
- дальше все как для генерации keytab для фиктивного пользователя AD.
-----------------------------------------------------------
Результат этих действий одинаковый:
kinit: krb5_get_init_creds: Client (IMAP/mail.dom.lan@DOM.LAN) unknown
---------------------------------------------------------
2. с помощью samba 3.6.18 (установлена на почтовом сервере, который введен в домен dom.lan). Т.к. у меня на почтовом сервере настроена samba (кстати, предоставляет прозрачный доступ к своим ресурсам авторизованным в AD пользователям), вычитал более простой способ генерации файла keytab с одновременным занесением записей в /etc/krb5.keytab
- сначала на конроллере домена с помощью setspn.exe удалил все SPN записи, созданные в п.1
- затем на почтовом сервере выполняю команду:
net ads keytab add IMAP -U Administrator - результат генерации виден командой:
net ads keytab list
- на контроллере домена добавленная SPN запись видна командой:
setspn -Q IMAP/mail.dom.lan
---------------------------------------------------------
В итоге опять эта же ошибка при выполнении kinit -k IMAP/mail.dom.lan : kinit: krb5_get_init_creds: Client (IMAP/mail.dom.lan@DOM.LAN) unknown
Такое впечатление, что все мои манипуляции по генерации keytab не влияют на итоговый результат и ошибка у меня в чем то другом.
/etc/krb5.conf имеет следующий вид:
[libdefaults]
default_realm = DOM.LAN
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
DOM.LAN = {
kdc = kd.dom.lan
admin_server = kd.dom.lan
default_domain = dom.lan
[domain_realm]
dom.lan = DOM.LAN
.dom.lan = DOM.LAN
Хотя в системе установлен пакет krb5-1.12.2, однако kinit --version говорит: kinit (Heimdal 1.1.0)
Хотел написать покороче, но не получилось. Если что-то нужно будет дополнительно - уточню. Буду рад, если знатоки укажут направление для решения задачи. Спасибо!