LINUX.ORG.RU
ФорумAdmin

Squid+Kerberos+AD ошибка аутентификации

 ,


1

3

делаю по офф-вики, вот этой

дошел до секции создания кейтабов, создать кейтаб через msktutil не получается, выдает следующее:

denis@debianmail:~$ sudo msktutil -c -b "OU=SQUID" -s HTTP -k /etc/squid3/HTTP.keytab --computer-name squid --upn HTTP/squid.rus.local --server netserver.rus.local --verbose
 -- init_password: Wiping the computer password structure
 -- create_fake_krb5_conf: Created a fake krb5.conf file: /tmp/.msktkrb5.conf-AIdtmi
 -- reload: Reloading Kerberos Context
 -- finalize_exec: SAM Account Name is: squid$
 -- try_machine_keytab_princ: Trying to authenticate for squid$ from local keytab...
 -- try_machine_keytab_princ: Error: krb5_get_init_creds_keytab failed (Client not found in Kerberos database)
 -- try_machine_keytab_princ: Authentication with keytab failed
 -- try_machine_keytab_princ: Trying to authenticate for host/debianmail.rus.local from local keytab...
 -- try_machine_keytab_princ: Error: krb5_get_init_creds_keytab failed (Client not found in Kerberos database)
 -- try_machine_keytab_princ: Authentication with keytab failed
 -- try_machine_password: Trying to authenticate for squid$ with password.
 -- try_machine_password: Error: krb5_get_init_creds_keytab failed (Client not found in Kerberos database)
 -- try_machine_password: Authentication with password failed
 -- try_user_creds: Checking if default ticket cache has tickets...
 -- finalize_exec: Authenticated using method 4

 -- ldap_connect: Connecting to LDAP server: netserver.rus.local try_tls=YES
 -- ldap_connect: Connecting to LDAP server: netserver.rus.local try_tls=NO
SASL/GSSAPI authentication started
SASL username: Администратор@RUS.LOCAL
SASL SSF: 56
SASL data security layer installed.
 -- ldap_connect: LDAP_OPT_X_SASL_SSF=56

Error: ldap_connect failed
--> Is your kerberos ticket expired? You might try re-"kinit"ing.
 -- ~KRB5Context: Destroying Kerberos Context

все это делалось в соответствии с 4-мя принципами использования msktutil на офф-вики.

тогда я создал кейтаб через ktpass.exe на AD вот так:

ktpass -princ HTTP/netserver.rus.local@RUS.LOCAL -mapuser squid@RUS.LOCAL -crypto des-cbc-md5 -pass squidpass -ptype KRB5_NT_SRV_HST -out C:/HTTP.keytab

кейтаб сгенерил для юзера, т.к. для объекта компьютер генерить не получается - выдает что-то типа Ds CrackNames returned x05 blablabla. ktpass failed getting target domain for specified user.

созданный кейтаб скопировал на машину с проксей, сменил группу, назначил права (вообщем, сделал все по вики), но при проверке аутентификации командой kinit выдает следующее:

denis@debianmail:~$ kinit -V -k -t /etc/squid3/HTTP.keytab HTTP/netserver.rus.local
Using default cache: /tmp/krb5cc_1000
Using principal: HTTP/netserver.rus.local@RUS.LOCAL
Using keytab: /etc/squid3/HTTP.keytab
kinit: Generic preauthentication failure while getting initial credentials

DNS-записи для кербероса не создавал. (может, проблема в этом?)

чяднт? почему не работает msktutil? какие именно объекты на AD мне нужно создать? Компьютер и юзера или только юзера? Почему кейтаб через ktpass.exe создается только для юзера?

если будут нужны еще конфиги - скажите, я скину.

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

правильнее и надежнее будет организовать аутентификацию через Kerberos, а не через NTLM.

поэтому я хочу разобраться с этим.

но все равно - спасибо.

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

klist после kinit показывает билет? Должно быть так:

user@server:~$ kinit user
user@DOMAIN.LOCAL's Password: 
user@server:~$ klist
Credentials cache: FILE:/tmp/krb5cc_10000_C7A3NT
        Principal: user@DOMAIN.LOCAL

  Issued                Expires               Principal
Aug  6 17:49:59 2013  Aug  7 03:49:55 2013  krbtgt/DOMAIN.LOCAL@DOMAIN.LOCAL
Если kinit не проходит то
1.) проверяйте DNS ( КД должен пинговаться по доменному имени)
2.) проверьте время - между КД и сервером со squid разницы во времени быть не должно
3.) проверьте конфиг /etc/krb5.conf

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

тикет есть, да.

denis@debianmail:~$ kinit squid@RUS.LOCAL
Password for squid@RUS.LOCAL:
denis@debianmail:~$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: squid@RUS.LOCAL

Valid starting       Expires              Service principal
06.08.2013 18:00:52  07.08.2013 04:01:00  krbtgt/RUS.LOCAL@RUS.LOCAL
        renew until 07.08.2013 18:00:52

получается, что все работает?

nebraska_edu ()

http://home.pinkbyte.ru/wiki/doku.php?id=squid_w2008_ad

Дисклеймер:

1) да, возможно это пеар моего «бложика»(хотя вики так язык не поворачивается назвать);
2) там - личный опыт по поднятию гибридной аутентификации на squid с AD;
3) чукча - читатель :-). Английский по ссылке может и будет^W^W хромать.

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

по вашей ссылке для mskutil идет следующая команда:

msktutil -c -b "CN=COMPUTERS" -s HTTP/zfstest.test.local -k /etc/squid/krb.keytab \
--computer-name ZFSTEST-K --upn HTTP/zfstest.test.local --server ad.test.local --enctypes 28 \
--verbose --user-creds-only

на вашем AD имя объекта ZFSTEST-K записано в верхнем регистре?

что такое -K после имени объекта? это ключ?

если да, то что необходимо для его корректной работы?

я попробовал вбить у себя, со своими данными.

получилось вот так:

denis@debianmail:~$ sudo msktutil -c -b "CN=COMPUTERS" -s HTTP/squidc.rus.local -k /etc/squid3/krb.keytab --computer-name SQUIDC-K --upn HTTP/squidc.rus.local --server netserver.rus.local --enctypes 28 --verbose --user-creds-only
 -- init_password: Wiping the computer password structure
 -- create_fake_krb5_conf: Created a fake krb5.conf file: /tmp/.msktkrb5.conf-ZQZrtC
 -- reload: Reloading Kerberos Context
 -- finalize_exec: SAM Account Name is: SQUIDC-K$
 -- try_user_creds: Checking if default ticket cache has tickets...
 -- try_user_creds: Error: krb5_cc_get_principal failed (No credentials cache found)
 -- try_user_creds: User ticket cache was not valid.
Error: could not find any credentials to authenticate with. Neither keytab,
     default machine password, nor calling user's tickets worked. Try
     "kinit"ing yourself some tickets with permission to create computer
     objects, or pre-creating the computer object in AD and selecting
     'reset account'.
 -- ~KRB5Context: Destroying Kerberos Context

все крединшлы верные, почему он не создает кейтаб - так же непонятно.

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

kerberos на машине работает, что-то не так с keytab файлом. Дайте вывод

denis@debianmail:~$ klist -k -t /etc/squid3/HTTP.keytab
Keytab name: FILE:/etc/squid3/HTTP.keytab
KVNO Timestamp           Principal
---- ------------------- ------------------------------------------------------
   6 01.01.1970 03:00:00 HTTP/netserver.rus.local@RUS.LOCAL

странно, должно быть fqdn прокси, а не AD.

я еще раз напомню про DNS, я не делал A-запись для машины с проксей на внутреннем DNS.

есть ли вероятность, что проблема в этом?

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

на вашем AD имя объекта ZFSTEST-K записано в верхнем регистре?

Да, не вдавался в подробности почему, но при вводе машин в домен(что тестовый, что несколько разных, настроенных независимо разными людьми продакшенов) они представлены в верхнем регистре. Хотя windows case-insensetive в этом отношении, Linux более разборчив.

что такое -K после имени объекта? это ключ?

Дополнительное имя. Необходимо выписать еще один билет, на другое имя. ZFSTEST(и соответстующий билет) будет использован для ввода машины в домен, так что его использовать для билета нельзя. Можно вообще-то было просто нагло спереть билет у самбы, после ввода в домен, но мне было влом :-)

я попробовал вбить у себя, со своими данными.
-- try_user_creds: Error: krb5_cc_get_principal failed (No credentials cache found)

Некорректно настроен /etc/krb5.conf, mksutil не может найти билет, полученный через kinit. Убедитесь что в krb5.conf правильные настройки, ВКЛЮЧАЯ регистр символов.

То есть строка вида .yourdomain.local = YOURDOMAIN.LOCAL должны выглядеть именно так, включая регистр символов. Я на это по первому разу убил немало времени...

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 2)
Ответ на: комментарий от nebraska_edu

я еще раз напомню про DNS, я не делал A-запись для машины с проксей на внутреннем DNS.

Это будет факапом на следующей стадии - без нормально настроенного DNS авторизация в AD работать не будет - проверено. У тебя облом происходит раньше, но эту часть пофиксить тоже придется

Pinkbyte ★★★★★ ()

и да, делай sudo -i и потом все команды - из под рута. Потому что ты можешь хэндлы потерять при релогинах через sudo - отсюда тоже могут быть факапы

Pinkbyte ★★★★★ ()
Ответ на: комментарий от menzoberronzan

Перед msktutil делали?

да, само собой.

я сейчас посмотрел, для объекта SQUIDC отсутствует fqdn отчего-то.

вероятно, из-за этого и проблема.

или я не прав?

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

вот листинг для /etc/krb5.conf

вроде как, оно настроено правильно.

[libdefaults]
        default_realm = RUS.LOCAL
        dns_lookup_kdc = no
        dns_lookup_realm = no
        ticket_lifetime = 24h
        default_keytab_name = /etc/squid3/HTTP.keytab

# The following krb5.conf variables are only for MIT Kerberos.
        krb4_config = /etc/krb.conf
        krb4_realms = /etc/krb.realms
        kdc_timesync = 1
        ccache_type = 4
        forwardable = true
        proxiable = true

# The following encryption type specification will be used by MIT Kerberos
# if uncommented.  In general, the defaults in the MIT Kerberos code are
# correct and overriding these specifications only serves to disable new
# encryption types as they are added, creating interoperability problems.
#
# Thie only time when you might need to uncomment these lines and change
# the enctypes is if you have local software that will break on ticket
# caches containing ticket encryption types it doesn't know about (such as
# old versions of Sun Java).

#       default_tgs_enctypes = des3-hmac-sha1
#       default_tkt_enctypes = des3-hmac-sha1
#       permitted_enctypes = des3-hmac-sha1

# for Windows 2003
    default_tgs_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
    default_tkt_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
    permitted_enctypes = rc4-hmac des-cbc-crc des-cbc-md5

# for Windows 2008 with AES
#    default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
#    default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
#    permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5

[realms]

       RUS.LOCAL = {
                kdc = netserver.rus.local
                admin_server = netserver.rus.local
                default_domain = rus.local
    }

[domain_realm]
        .rus.local = RUS.LOCAL
        rus.local = RUS.LOCAL
nebraska_edu ()
Ответ на: комментарий от anonymous

вот эта команда не проходит с моими данными.

ktpass -princ HTTP/squid.rus.local@rus.local -mapuser rus.local\squid -pass "squidpass" -ptype KRB5_NT_SRV_HST -out HTTP7.keytab

некорректный синтаксис.

отсутствует тип шифрования, вывод кейтаба не определен, а параметр mapuser должен быть в формате

/mapuser учетная_запись_хоста@ИСПОЛЬЗУЕМАЯ.ОБЛАСТЬ

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

Вот пикча с компом, у которого не fqdn и через который я пытаюсь аутентифицироваться в Kerberos.

A-запись для него создана, резолвится в обе стороны, почему при создании у объекта отсутствует fqdn - я не знаю.

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

очевидно же что нужно поправить и все пройдет

ktpass -princ HTTP/squid.rus.local@RUS.LOCAL -mapuser squid@rus.local -pass "squidpass" -crypto RC4-HMAC-NT -ptype KRB5_NT_SRV_HST -out C:\HTTP7.keytab

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

ну, я же в первом посте привел команду, которой я генерил кейтаб.

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

ktpass -princ HTTP/netserver.rus.local@RUS.LOCAL -mapuser squid@RUS.LOCAL -crypto des-cbc-md5 -pass squidpass -ptype KRB5_NT_SRV_HST -out C:/HTTP.keytab

вот содержимое кейтаба, созданного вашей командой:

denis@debianmail:~$ klist -k -t /etc/squid3/HTTP7.keytab
Keytab name: FILE:/etc/squid3/HTTP7.keytab
KVNO Timestamp           Principal
---- ------------------- ------------------------------------------------------
   3 01.01.1970 03:00:00 HTTP/squid.rus.local@RUS.LOCAL
nebraska_edu ()

Вчера получилось сделать работающую конфигурацию.

По действиям:

1. создаю на контроллере домена dns-запись прокси-сервера, а в оснастке Пользователи и компьютеры - новый компьютер с его именем

2. создаю keytab-файл в консоли контроллера домена (в одну строку без \):

ktpass -out c:\prx.keytab -princ HTTP/prx.domain.local@DOMAIN.LOCAL 
-mapUser prx$@DOMAIN.LOCAL -pass +rndpass -crypto ALL -pType KRB5_NT_PRINCIPAL
3. полученный файл отгружаю на прокси-сервер в /etc/squid3/

4. просматриваю файл, экспортирую его в /etc/krb5.keytab

 ktutil
  rkt /etc/squid3/prx.keytab
  list
  wkt /etc/krb5.keytab
  q
 kinit -k HTTP/prx.domain.local
 klist (отображены тикеты)
5. проверяю создание тикетов:
 kdestroy
 klist (пусто)
 kinit -k HTTP/prx.domain.local
 klist (тикеты снова отображены)
6. создаю в cron задания периодически продлевать тикеты:
0 */6   * * *   root    kinit -k HTTP/prx.domain.local
Эту же команду вписываю в /etc/rc.local

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