настраиваю связку Squid AD авторизация через протокол kerberos. На данный момент работаю с NTLM. Но хочу попробовать c kerberos так как есть проблемы с NTLM.
AD 2008 - ABC.LOCAL
Squid 2.7 stable 9
Пробовал вот это
ktpass -princ HTTP/proxy.adc.local@ABC.LOCAL -mapuser admin@abc -crypto rc4-hmac-nt pass squid-pass -ptype KRB5_NT_SRV_HST -out proxy.abc.local.keytab
Дает вот это
Targeting domain controller: dc1.abc.local
Using legacy password setting method
Successfully mapped HTTP/proxy.abc.local to admin.
WARNING: pType and account type do not match. This might cause problems.
Key created.
Output keytab to proxy.abc.local.keytab:
Keytab version: 0x502
keysize 73 HTTP/proxy.abc.local@ABC.LOCAL ptype 3 (KRB5_NT_SRV_HST
9 etype 0x17 (RC4-HMAC) keylength 16 (0x7835c079c3561c28e66259ca2b9a8b98)Копирую этот proxy.abc.local.keytab в /etc/squid
далее ввожу команду
kinit -V -k -t proxy.abc.local.keytab.pdc HTTP/proxy.abc.local
Using default cache: /tmp/krb5cc_0
Using principal: HTTP/proxy.abc.local@ABC.LOCAL
Using keytab: proxy.abc.local.keytab
kinit: Client 'HTTP/proxy.abc.local@ABC.LOCAL' not found in Kerberos database while getting initial credentialsПомогите в чем проблема ???
> kinit: Client 'HTTP/proxy.abc.local@ABC.LOCAL' not found in Kerberos database while getting
> initial credentials
> Помогите в чем проблема ???Хотя после создания keytab-а. У пользователя admin вход в домен изменился на HTTP/proxy.abc.local
Вот вариант того, как работает у меня.
ktpass -princ HTTP//squidname.domain.name.loc@DOMAIN.NAME.LOC -mapuser squid_user@DOMAIN.NAME.LOC -crypto rc4-hmac-nt -pass "12345678" -out c:\krb5.keytab
(у пользователя, на которого генерируется билет, необходимо запретить смену пароля и срок действия пароля неограничен)После чего "krb5.keytab" размещаем в /etc/krb5.keytab (FreeBSD 8.2) и назначаем такие права:
============================================
-r-xr-xr-x 1 nobody nobody krb5.keytab
============================================Проверяем:
============================================
% kinit -t /etc/krb5.keytab -k HTTP/squidname.domain.name.loc
% klist
Credentials cache: FILE:/tmp/krb5cc_0
Principal: HTTP//squidname.domain.name.loc@DOMAIN.NAME.LOCIssued Expires Principal
Nov 1 11:06:09 Nov 1 21:06:09 krbtgt/DOMAIN.NAME.LOC@DOMAIN.NAME.LOC
============================================
в конфиге Squid-a:
============================================
auth_param negotiate program /usr/local/libexec/squid/squid_kerb_auth -d -s HTTP//squidname.domain.name.loc@DOMAIN.NAME.LOC
#-d debug режим, смотрим в cache.log (можно убрать после отладки)auth_param negotiate children 10
auth_param negotiate keep_alive onacl REQUIRED proxy_auth REQUIRED #REQUIRED - все пользователи, которые прошли авторизацию
http_access allow REQUIRED
============================================В DNS на серверах необходимо создать запись squidname.domain.name.loc, которая будет соответствовать IP-адресу вашему прокси.
В браузерах клиентов необходимо указывать адрес прокси "squidname.domain.name.loc", по IP работать не будет!!!!
Надеюсь данная информация поможет вам в решение ваших проблем
>[оверквотинг удален]
> auth_param negotiate keep_alive on
> acl REQUIRED proxy_auth REQUIRED
> #REQUIRED - все пользователи, которые прошли авторизацию
> http_access allow REQUIRED
> ============================================
> В DNS на серверах необходимо создать запись squidname.domain.name.loc, которая будет соответствовать
> IP-адресу вашему прокси.
> В браузерах клиентов необходимо указывать адрес прокси "squidname.domain.name.loc",
> по IP работать не будет!!!!
> Надеюсь данная информация поможет вам в решение ваших проблемБольшое спасибо! Протестирую и сразу отпишусь))
> Большое спасибо! Протестирую и сразу отпишусь))C:\Users\Администратор.DC1>ktpass -princ HTTP//proxy.babilon.local@BABILON.LOCAL
-mapuser squid_user@BABILON.LOCAL -crypto rc4-hmac-nt -pass "Uzel963" -out c:\k
rb5.keytab
Targeting domain controller: dc1.babilon.local
Using legacy password setting method
Successfully mapped HTTP//proxy.babilon.local to squid_user.
WARNING: pType and account type do not match. This might cause problems.
Key created.
Output keytab to c:\krb5.keytab:
Keytab version: 0x502
keysize 75 HTTP//proxy.babilon.local@BABILON.LOCAL ptype 0 (KRB5_NT_UNKNOWN) vno
3 etype 0x17 (RC4-HMAC) keylength 16 (0xde0e25a54cb8ed52daa6ca713e59b9d4)
Копирую krb5.keytab в /etc/-r-xr-xr-x 1 nobody nobody 81 Nov 1 22:16 /etc/krb5.keytab
proxy ~ # kinit -t /etc/krb5.keytab -k HTTP/proxy.babilon.local
kinit: Client 'HTTP/proxy.babilon.local@BABILON.LOCAL' not found in Kerberos database while getting initial credentialsВ примере HTTP//domain.name.loc т.е. два слеша если делаю так
proxy ~ # kinit -t /etc/krb5.keytab -k HTTP//proxy.babilon.local
kinit: No key table entry found for HTTP//proxy.babilon.local@BABILON.LOCAL while getting initial credentialsвсе равно гдето ошибка, что опять не так ?
и да у меня не FreeBSD а Gentoo если конечно это на что то влияет
Все делаю по примеру. У созданного пользователя логин меняется на HTTP/proxy.babilon.local
Но такая фигня
proxy ~ # kinit -t /etc/squid/proxy.babilon.local.keytab -k HTTP/proxy.babilon.local
kinit: No key table entry found for HTTP/proxy.babilon.local@BABILON.LOCAL while getting initial credentialsЯ так понял keytab неправильно создается.
> Все делаю по примеру. У созданного пользователя логин меняется на HTTP/proxy.babilon.local
> Но такая фигня
> proxy ~ # kinit -t /etc/squid/proxy.babilon.local.keytab -k HTTP/proxy.babilon.local
> kinit: No key table entry found for HTTP/proxy.babilon.local@BABILON.LOCAL while getting
> initial credentials
> Я так понял keytab неправильно создается.Прошу прощения. Действительно, в строке генерации ключа необходимо указывать один слеш (ktpass -princ HTTP/domain)
С генерируйте снова keytab, с одним слешем и попробуйте проверить (kinit)
Заранее проверьте, резолвиться ли ваш "babilon.local" на сервере прокси где вы запускаете kinit.Какая у вас операционная система, где установлен Squid? На разных OS могут отличаться ключи запуска, для kinit.
>[оверквотинг удален]
>> kinit: No key table entry found for HTTP/proxy.babilon.local@BABILON.LOCAL while getting
>> initial credentials
>> Я так понял keytab неправильно создается.
> Прошу прощения. Действительно, в строке генерации ключа необходимо указывать один слеш
> (ktpass -princ HTTP/domain)
> С генерируйте снова keytab, с одним слешем и попробуйте проверить (kinit)
> Заранее проверьте, резолвиться ли ваш "babilon.local" на сервере прокси где вы запускаете
> kinit.
> Какая у вас операционная система, где установлен Squid? На разных OS могут
> отличаться ключи запуска, для kinit.Да я менял. HTTP/proxy.babilon.local тоже не работает. Ошибка
kinit -t /etc/squid/proxy.babilon.local.keytab -k HTTP/proxy.babilon.local
kinit: No key table entry found for HTTP/proxy.babilon.local@BABILON.LOCAL while getting initial credentials
Gentoo OS, Squid 2.7 установлен на нем.
Домен контроллер windows server 2008 R2 enterprise. AD + DNS
>[оверквотинг удален]
>> Заранее проверьте, резолвиться ли ваш "babilon.local" на сервере прокси где вы запускаете
>> kinit.
>> Какая у вас операционная система, где установлен Squid? На разных OS могут
>> отличаться ключи запуска, для kinit.
> Да я менял. HTTP/proxy.babilon.local тоже не работает. Ошибка
> kinit -t /etc/squid/proxy.babilon.local.keytab -k HTTP/proxy.babilon.local
> kinit: No key table entry found for HTTP/proxy.babilon.local@BABILON.LOCAL while getting
> initial credentials
> Gentoo OS, Squid 2.7 установлен на нем.
> Домен контроллер windows server 2008 R2 enterprise. AD + DNSПроблема решилась, просто при создании Keytaba использовал шифрование AES, теперь
proxy ~ # kinit -V -k -t /etc/squid/proxy.babilon.local.keytab HTTP/proxy.babilon.local
Using default cache: /tmp/krb5cc_0
Using principal: HTTP/proxy.babilon.local@BABILON.LOCAL
Using keytab: /etc/squid/proxy.babilon.local.keytab
Authenticated to Kerberos v5Но теперь не проходит авторизация в cache.log
2011/11/03 09:26:32| squid_kerb_auth: Got 'YR TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAHIXAAAADw==' from squid (length: 59).
2011/11/03 09:26:32| squid_kerb_auth: parseNegTokenInit failed with rc=101
2011/11/03 09:26:32| squid_kerb_auth: received type 1 NTLM token
2011/11/03 09:26:32| squid_kerb_auth: Got 'YR TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAHIXAAAADw==' from squid (length: 59).
2011/11/03 09:26:32| squid_kerb_auth: parseNegTokenInit failed with rc=101
2011/11/03 09:26:32| squid_kerb_auth: received type 1 NTLM token
C этим как бороться :) ?
Вы на верном пути реализации Kerberos авторизации =)Будет полезным прочесть это "http://wiki.squid-cache.org/ConfigExamples/Authenticate/Kerb..., если не читали.
Я не знаю откуда вы взяли и собрали из исходников SQUID, а потому рекомендую добавить в исполняемый файл запуска это:
KRB5_KTNAME=/dir/to/HTTP.keytab
export KRB5_KTNAMEВторой момент который нужно учесть, это синхронизация времени. Время между серверами прокси, АД и пользователем, не должно отличатся более чем 5 минут.
В браузере пользователя указываться не IP-proxy а FQDN, кроме того kerberos авторизация работает в explorer-версиях начиная с 7-й. На 6-й и ниже не работает!!!
auth_param negotiate program /dir/to/squid/squid_kerb_auth -d -s HTTP//proxy.babilon.local@BABILON.LOCAL
Надеюсь у Вас все получиться!
>[оверквотинг удален]
> потому рекомендую добавить в исполняемый файл запуска это:
> KRB5_KTNAME=/dir/to/HTTP.keytab
> export KRB5_KTNAME
> Второй момент который нужно учесть, это синхронизация времени. Время между серверами прокси,
> АД и пользователем, не должно отличатся более чем 5 минут.
> В браузере пользователя указываться не IP-proxy а FQDN, кроме того kerberos авторизация
> работает в explorer-версиях начиная с 7-й. На 6-й и ниже не
> работает!!!
> auth_param negotiate program /dir/to/squid/squid_kerb_auth -d -s HTTP//proxy.babilon.local@BABILON.LOCAL
> Надеюсь у Вас все получиться!Ок. Все равно спасибо вам. буду смотреть дальше надеюсь когда нибудь получиться настроить эту связку ))
при перезапуске сквида, командой klist что должно показывать может в этом проблема ??
> при перезапуске сквида, командой klist что должно показывать может в этом проблема
> ??kinit & klist ни как не связаны с squid-om.
Данные команды нужны Вам только для проверки работы ключа.