Настройка авторизации kerberos в AD для службы imap

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
citman
проходил мимо
Сообщения: 5
Зарегистрирован: 2014-10-21 13:22:28

Настройка авторизации kerberos в AD для службы imap

Непрочитанное сообщение citman » 2014-10-21 13:37:57

Здравствуйте, уважаемые форумчане!
Обращаюсь за помощью и советом.

Задача: настроить почтовый сервер (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 работает на контроллере домена.
Запись для почтового сервера есть и в прямой и в обратной зоне.
На почтовом сервере установлена samba, является членом домена dom.lan

На данном этапе не могу добиться получения почтовым сервером билета 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)
Покороче сформулировать не получилось, и так многое осталось "за кадром".
Буду рад, если знающие люди укажут направление для решения задачи. Спасибо!
Последний раз редактировалось f_andrey 2014-10-21 13:43:29, всего редактировалось 1 раз.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума, оформляйте сообщение по человечески.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Настройка авторизации kerberos в AD для службы imap

Непрочитанное сообщение Alex Keda » 2014-10-21 17:06:15

А чем не устраивает системная, через самба?
Убей их всех! Бог потом рассортирует...

citman
проходил мимо
Сообщения: 5
Зарегистрирован: 2014-10-21 13:22:28

Re: Настройка авторизации kerberos в AD для службы imap

Непрочитанное сообщение citman » 2014-10-21 18:33:31

Не думал об этом. Как это настроить в dovecot?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Настройка авторизации kerberos в AD для службы imap

Непрочитанное сообщение Alex Keda » 2014-10-22 19:19:53

Убей их всех! Бог потом рассортирует...

citman
проходил мимо
Сообщения: 5
Зарегистрирован: 2014-10-21 13:22:28

Re: Настройка авторизации kerberos в AD для службы imap

Непрочитанное сообщение citman » 2014-10-29 12:29:42

Добрый день!

Действительно, т.к. у меня на почтовом сервере настроена samba, то было бы логично использовать ее для прозрачной авторизации клиентов сервера IMAP. Команды wbinfo -t, wbinfo -p, wbinfo -u, wbinfo -g, id real_domain_user, getent group, getent passwd отрабатывают правильно, выводя информацию о пользователях и группах домена.

После того, как пользователь авторизуется в домене, то он получает доступ к ресурсам, которые ему разрешены в samba, без повторного ввода пароля. То же самое мне нужно реализовать для почтового клиента (Microsoft Outlook).

Однако, и этот вариант настроить пока не получается. Делал так:

Создал файл /etc/pam.d/dovecot следующего содержания:

Код: Выделить всё

#auth
auth    required    /usr/local/lib/pam_winbind.so   try_first_pass
В файле 10-auth.conf пишу:

Код: Выделить всё

disable_plaintext_auth = no
auth_username_format = %u
auth_mechanism = plain
!include auth-static.conf.ext
Файл auth-static.conf.ext

Код: Выделить всё

passdb {
   driver = pam
   args = dovecot
}

userdb {
  driver = static
  args = uid=vmail gid=vmail home=/usr/home/vmail/%d/%u allow_all_users=yes
}
Файл 10-ssl.conf

Код: Выделить всё

ssl = no
В настройках Microsoft Outlook в поле ПОЛЬЗОВАТЕЛЬ пишу (user - имя пользователя в домене, user@dom.lan - это значение поля UserPrincipalName в AD):

Код: Выделить всё

user@dom.lan
Поле пароль не заполняю (это и есть цель!).
В итоге, после попытки получить почту, в maillog вижу следующее:

Код: Выделить всё

Oct 29 11:19:18 mail dovecot: auth-worker(4558): pam(user@dom.lan,<ip клиента>): pam_authenticate() failed: authentication error (password mismatch?) (given password: )
Я так понимаю, что аутентификация не случилась, пароль предоставлен не был.
Что с этим делать пока не осознал, прошу помощи.
Спасибо!

citman
проходил мимо
Сообщения: 5
Зарегистрирован: 2014-10-21 13:22:28

Re: Настройка авторизации kerberos в AD для службы imap

Непрочитанное сообщение citman » 2014-10-29 14:51:21

Не знаю после чего, но сейчас ошибка в логе изменилась:

Код: Выделить всё

Oct 29 14:46:56 mail dovecot: auth-worker(4558): pam(user@dom.lan,<ip клиента>): pam_authenticate() failed: authentication information is unavailable