1 (01-04-2014 11:43:21 отредактировано nickdsl)

Тема: KERBEROS. Замена Heimdal на MIT

Приветствую Вас, дорогие пользователи.

Вообще тема данного топика неоднозначная, и немножко шире может оказаться, нежели то, что было написано в заголовке. В очередной раз пытаюсь перейти с NTLM на Negotiate (KERBEROS) аутентификацию пользователей, с целью последующего разграничения уровня (прав) доступа к ресурсам в сети Интернет. В очередной же раз у меня это не выходит.

Балуюсь в песочнице. Поднял на гипервизоре машиночку FreeBSD 9.1 x86.
Поставил squid 3.3 с поддержкой всего необходимого. Автоматом самба 3.6 притянулась.
Собственно читал и пытался делать вот по этому мануалу:
http://www.k-max.name/linux/avtorizaciy … iya-squid/
В процессе курения данной статьи (и не только) и пытаясь реализовать у себя то, что изложено в ней у меня ничего не получилось. А именно: после создания keytab-файла на контроллере домена W2k8R2 все заткнулось на этапе:
(сейчас будет короткая цитата из статьи ссылка на которую выше указана)

squid ~ # kinit -V -k -t /etc/squid3/squid.keytab  HTTP/squid.domain.local
Authenticated to Kerberos v5
squid ~ # klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: HTTP/[email protected]

Valid starting     Expires        em    Service principal
02/29/12 11:20:24  02/29/12 21:20:24  krbtgt/[email protected]
        renew until 03/01/12 11:20:24
squid ~ # kdestroy
squid ~ # chown -v proxy:proxy /etc/squid3/squid.keytab
изменён владелец «/etc/squid3/squid.keytab» на proxy:proxy
squid ~ # chmod -v u=rw,go-rwx /etc/squid3/squid.keytab
права доступа «/etc/squid3/squid.keytab» изменены на 0600 (rw-------)

(собственно это пункт 2.5.)

У меня эта штука не работает.
Во-первых, ключа -V в манах нет.
Я думаю, что это не великая беда и данный ключ не критичен, надеюсь. Скорее всего автор реализовывал это не на FreeBSD, а на чем то другом и там данный ключ есть и что то значит. (вот только почему на момент написания топика у меня появилась мысль проверить что это за ключ?)) ).
Двигаемся дальше. Команда эта у меня не отрабатывает так как надо. Пишет следующее:

root@testbsd:/etc # kinit -k -t /etc/krb5.keytab HTTP/testbsd.domain
kinit: krb5_get_init_creds: KDC has no support for encryption type

При этом в билете вот что:

root@testbsd:/etc # ktutil -k /etc/krb5.keytab list
/etc/krb5.keytab:
Vno  Type                     Principal
  5  des-cbc-crc              HTTP/testbsd.domain@DOMAIN
  5  des-cbc-md5              HTTP/testbsd.domain@DOMAIN
  5  arcfour-hmac-md5         HTTP/testbsd.domain@DOMAIN
  5  aes256-cts-hmac-sha1-96  HTTP/testbsd.domain@DOMAIN
  5  aes128-cts-hmac-sha1-96  HTTP/testbsd.domain@DOMAIN

Я английский понимаю. Из сообщения видно, что кодировку KDC не понимает, но в списке есть же MD5. Какого, извините, тогда черта?
В итоге, пробуя различные варианты (уже не помню какие) я обошел проблему кодировки, но на данную команду уже был другой вывод

krb5_get_init_creds: Additional pre-authentication required

Погуглив, наткнулся на совет поставить галочку в учетке AD "Без предварительной проверки подлинности Kerberos".
НО, данная галочка как и вкладка существует для учетных записей пользователей, а не для учетных записей компьютеров.
Обратил внимание на то, что автор статьи пишет об используемой версии KERBEROS от MIT.
Проверил у себя - heimdal. Ставил порты krb5 и после этого проверял версию. Heimdal.
Ставил порт krb5-maint. Все равно Heimdal.
Проверял так: kinit --version.
Как правильно заменить Heimdal на MIT?
Возможно я где то чушь написал, извините )

Добавлено: 01-04-2014 12:36:04

Ну вот, что за напасть. Пока ковырялся "сам" не мог ничего сделать. Стоило только создать топик на форуме как спустя пару часов нашел решение)

Действительно, учетной записи компьютера в AD не нужно.
Нашел другую похожую статью, но более дельную:
http://kaktusenok.blogspot.ru/2012/08/c … ndows.html

Извините за беспокойство.

Хотя еще остается вопрос авторизации.

В статье говорится о squid_ldap_auth.
А у меня:

root@testbsd:/usr/local/etc/squid # ls /usr/local/libexec/squid/
basic_db_auth                    basic_pop3_auth            ext_ldap_group_acl        ntlm_fake_auth
basic_fake_auth            basic_radius_auth                ext_time_quota_acl        ntlm_smb_lm_auth
basic_getpwnam_auth        basic_smb_auth            ext_unix_group_acl        unlinkd
basic_ldap_auth            basic_smb_auth.sh                ext_wbinfo_group_acl    url_fake_rewrite
basic_msnt_auth            cachemgr.cgi                    helper-mux.pl            url_fake_rewrite.sh
basic_msnt_multi_domain_auth    digest_file_auth        log_file_daemon            wbinfo_group.pl
basic_ncsa_auth            diskd                        negotiate_kerberos_auth
basic_nis_auth                    dnsserver                            negotiate_kerberos_auth_test
basic_pam_auth            ext_file_userip_acl                negotiate_wrapper_auth

В статье говорилось, что надо использовать squid_kerb_auth.
Методом тыка случайно определил, что это одно и то же что и negotiate_kerberos_auth.
Почему?
Потому что при вводе неполных данных или некорректных ключей... или же запроса хелпа, вылезает вот это:

root@testbsd:/usr/local/etc/squid # /usr/local/libexec/squid/negotiate_kerberos_auth --help
negotiate_kerberos_auth: illegal option -- -
2014/04/01 11:35:01| negotiate_kerberos_auth: WARNING: unknown option: -?.
Usage: [b]
squid_kerb_auth[/b] [-d] [-i] [-s SPN] [-h]
-d full debug
-i informational messages
-r remove realm from username
-s service principal name
-h help
The SPN can be set to GSS_C_NO_NAME to allow any entry from keytab
default SPN is HTTP/fqdn@DEFAULT_REALM

Вот я и смекнул, что вместо того надо подставить это...
Но вот что будет аналогом squid_ldap_auth?