LINUX.ORG.RU
ФорумAdmin

Samba + MIT Kerberos Authentication??? Как?


0

0

Люди, здравствуйте. Вот такая задачка у меня возникла: нужно заставить samba использовать MIT Kerberos для аутентификации виндовых клиентов. Ситуация следующая: по HOWTO, расположенной вот тут:

http://www.vanemery.com/DAS/DAS-manual.html

,была поднята система для централизованного логина со всех Linux рабочих станций в лабе (основана она на Krberos5+NIS и я добавил туда NSF+autofs). Сервер -- RHEL 4 x86_64, клиенты -- FC6-i386. Работает эта система просто отлично. Более того, я также настроил все Windows XP клиенты в лабе использовать этот же керберос сервер для логинов вот по этим докам: http://sial.org/howto/kerberos/windows/ и http://mailman.mit.edu/pipermail/kerberos/2006-May/009895.html

Работает всё замечательно и у меня в лабе теперь настоящий Single-Sign-On. В предпоследней процитированной доке также есть некоторая инфа для настройки Samba для логинов через тот же Kerberos сервер, но я как ни бился, не смог её заставить работать :-( Уже весь Гугл перерыл, но успеха так и не добился (там почти вся инфа по присоединению самбы к NT domain). При попытке соединения WinXP клиентов с Samba сервером и открытия шары, в логах самбы возникает вот такая ошибка:

[2007/02/07 21:20:26, 1] libads/kerberos_verify.c:ads_secrets_verify_ticket(221) ads_secrets_verify_ticket: failed to fetch machine password [2007/02/07 21:20:26, 1] smbd/sesssetup.c:reply_spnego_kerberos(202) Failed to verify incoming ticket! [2007/02/07 21:20:26, 1] libads/kerberos_verify.c:ads_keytab_verify_ticket(87) ads_keytab_verify_ticket: krb5_kt_start_seq_get failed (No such file or directory)

Самый прикол, что Windiws box уже успешно залогинен, но вот самбовые шары открыть не может, а это мне ломает всю идею "универсальных паролей" :-(

Помогите, пожалуйста, разобраться, а?

Спасибо.


Ответ на: комментарий от geekkoo

Да, я добавил ключ и теперь тикет выдаётся. Однако, возникает следующя ошибка при диагностике:

$ smbclient -d 3 -L \\\\sambaserver -U testuser

got principal=cifs/sambaserver@MYREALM.REALM.COM

.............................

SPNEGO login failed: No logon servers

session setup failed: NT_STATUS_NO_LOGON_SERVERS

При этом в smb.conf указано:

password server = kerberos_server_ip (имя тоже пробовал)
security = ads
realm = MYREALM.REALM.COM
workgroup = MYREALM
use kerberos keytab = yes

Вам это не знакомо? И в чём может быть причина?

garry
() автор топика
Ответ на: комментарий от garry

>>password server = kerberos_server_ip (имя тоже пробовал)

По-моему, это вообще лишнее. Достаточно, что сервер знает свой REALM, а kdc/kpasswd/kadmin сервера для этого REALM-а ему известны или с DNS или с /etc/krb5.conf

geekkoo
()
Ответ на: комментарий от geekkoo

Вы правы, я эту строку добавил после того, как начитался доков в инете. Значит, я это убрал, и вот, что выясняется: при попытке соединения с самбой с удалённой, либо с локальной машины опять видим следующее:

smbclient -d 3 -L \\\\localhost -U testuser

got principal=cifs/samba.server.fqdn@MY.REALM.COM

...........................

SPNEGO login failed: No logon servers
session setup failed: NT_STATUS_NO_LOGON_SERVERS

Однако в логе самбы для машины, с которой осуществляется попытка соединения, получаем ошибку, похоже, связанную с DNS:

[2007/02/13 09:13:30, 1] libads/dns.c:ads_dns_lookup_srv(260)
ads_dns_lookup_srv: Failed to resolve _ldap._tcp.dc._msdcs.MY.REALM.COM (Success)
[2007/02/13 09:13:35, 1] libads/dns.c:ads_dns_lookup_srv(260)
ads_dns_lookup_srv: Failed to resolve _ldap._tcp.dc._msdcs.MY.REALM.COM (Success)

Все хосты у меня явно прописаны в /etc/resolv.conf

Может, что-то с DNS не так?



garry
() автор топика
Ответ на: комментарий от garry

Итак, провёл я ещё ряд тестов, и вот, что обнаружилось. Если я пытаюсь зайти на самба сервер с удалённой Linux машины со своим kerberos ticket, то всё работет замечательно, и Samba находит и использует ADS kerberos server:

smbclient -k -L sambaserver

OS=[Unix] Server=[Samba 3.0.23c-2]
Sharename Type Comment
--------- ---- -------
tmp Disk temporary files
IPC$ IPC IPC Service (Linux Home)
testuser Printer Home Directories
OS=[Unix] Server=[Samba 3.0.23c-2]
Server Comment
--------- -------
Workgroup Master
--------- -------
WORKGROUP SAMBASERVER

smbclient -k //sambaserver/tmp тоже работает прекрасно.

Однако, если мы пытаемся зайти без использования выданного нам тикета, просто используя логин и пароль, то ничего не получается:

smbclient -L sambaserver -U testuser
Password:
session setup failed: NT_STATUS_NO_LOGON_SERVERS

При этом в логах самбы мы видим нашу старую знакомую ошибку:

[2007/02/13 18:10:57, 1] libads/dns.c:ads_dns_lookup_srv(260)
ads_dns_lookup_srv: Failed to resolve _ldap._tcp.dc._msdcs.MY.REALM.COM (Success)

Теперь, если мы пытаемся соединиться с Samba server из виндового клиента (Win XP Pro SP2), после того, как мы в этот клиент успешно залогинились с помощью нашего Kerberos сервера и получили от него тикет, то ничего не получается, винда бесконечно спрашивает логин и пароль, а в логах самбы мы видим ТЕ ЖЕ САМЫЕ ОШИБКИ, что и в предыдущем случае (с smbclient без опции -k):

[2007/02/13 18:10:46, 1] libads/dns.c:ads_dns_lookup_srv(260)
ads_dns_lookup_srv: Failed to resolve _ldap._tcp.dc._msdcs.MY.REALM.COM (Success)

Следовательно, либо виндовый клиент не посылает серверу наш kerberos тикет, а шлёт самбе логин и пароль, либо тикет, полученный при входе в винду "какой-то не такой". Кстати, при создании principal для samba сервера я пробовал явно указывать encryption type "rc4-hmac:normal des-cbc-md4:normal" (согласно вот этим рекоммендациям: http://mailman.mit.edu/pipermail/kerberos/2005-March/007372.html), но это не помогло нисколько :-(

Уважаемые сисадмины, есть ли у кого идеи, как всё это поправить?

Заранее спасибо.

garry
() автор топика
Ответ на: комментарий от garry

>>Однако, если мы пытаемся зайти без использования выданного нам тикета, просто используя логин и пароль, то ничего не получается:

ИМХО, и не должно. Самбу все же предполагается использовать внутри realma, так что "обычный" логин сведется к kinit и последующему обмену билетиками. Можно ведь сделать kinit до того как подсоединяться к сетевому ресурсу?

С виндовыми клиентами тоже должно работать. Попробуй установить Kerberos-for-Windows от MIT, хотя он, строго говоря, и не нужен, но помогает посмотреть какие билетики выданы. Главное помнить о правильно настроенном DNS (или /etc/hosts) с прямой и обратной зоной и синхронизации времени.

geekkoo
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.