Назад | Перейти на главную страницу

Клиент не найден в базе данных Kerberos при первом запуске

Я устанавливаю Squid3 на Ubuntu 14.10 и хочу интегрировать его ADDS на windows server 2012 с использованием kerberos 5. Моя инфраструктура следующая:

Шлюз по умолчанию:

192.168.1.1

DNS и контроллер домена (Windows Server 2012):

dc.mydomain.com

 address   192.168.1.250
 netmask 255.255.255.0
 gateway 192.168.1.1

Прокси-сервер (Ubuntu Desktop 14.10) vmproxy

address 192.168.1.251
netmask 255.255.255.0
gateway 192.168.1.1
dns-search mydomain.com
dns-nameservers 192.168.1.2

Шаги следующие

Шаг 1. Проверьте DNS Lookup: он отлично работает как при прямом, так и при обратном поиске.

Шаг 2: Настройте правильный часовой пояс на прокси-сервере:

  $ sudo service ntp stop
  $ sudo ntpdate -b dc.mydomain.com
  $ sudo service ntp start

Шаг 3. Установите клиентские библиотеки Kerberos и установите для имени области Kerberos значение MYDOMAIN.COM.

$ sudo apt-get install krb5-user

Шаг 4: Отредактируйте файл конфигурации Kerberos /etc/krb5.conf.

[libdefaults]
default_realm = MYDOMAIN.COM    
default_tgs_enctypes = rc4-hmac des3-hmac-sha1    
default_tkt_enctypes = rc4-hmac des3-hmac-sha1

Проверьте правильность конфигурации Kerberos. по

$ kinit Administrator@mydomain.com
$ klist

Шаг: 5 создание специализированного пользователя в Active Directory и сопоставление этого пользователя с основным именем Kerberos

c:/> ktpass -princ HTTP/vmproxy.mydomain.com@MYDOMAIN.COM -mapuser squid@MYDOMAIN.COM -crypto rc4-hmac-nt -pass P@ssw0rd -ptype KRB5_NT_PRINCIPAL -out krb5.keytab

Шаг: 6 Скопируйте файл keytab в /etc/krb5.keytab на vmproxy


Мой /etc/krb5.conf выглядит следующим образом: -

[libdefaults]
default_realm= MYDOMAIN.COM
default_tgs_enctypes=rc4.hmac des3-hmac.sha1
default_tkt_enctypes=rc4.hmac des3-hmac.sha1

[realms]
MYDOMAIN.COM={

kdc=dc.mydomain.com
admin_server=dc.mydomain.com
default_domain=mydomain.com

}

[domain_realm]
.mydomain.com=  MYDOMAIN.COM
mydomain.com=MYDOMAIN.COM

теперь, когда я тестирую TGT с dc.mydomain.com как:

$ kinit -V -k -t /etc/krb5.keytab HTTP/vmproxy.mydomain.com@MYDOMAIN.COM

он говорит:

Using default cache: /tmp/krb5cc_0
Using principal: HTTP/vmproxy.mydomain.com@MYDOMAIN.COM
Using Keytab: /etc/krb5.keytab
kinit:Client 'HTTP/vmproxy.mydomain.com@MYDOMAIN.COM' not found in kerberos database while getting initial credentials

При использовании

$ kinit -k

это говорит

kinit:Cannot determine realm for host (principal host/vmproxy@)

Эта команда:

c:/> ktpass -princ HTTP/vmproxy.mydomain.com@MYDOMAIN.COM -mapuser squid@MYDOMAIN.COM -crypto rc4-hmac-nt -pass P@ssw0rd -ptype KRB5_NT_PRINCIPAL -out krb5.keytab

Я считаю, что HTTP/vmproxy.mydomain.com@MYDOMAIN.COM устанавливается в качестве принципала службы, связанного с пользователем squid@MYDOMAIN.COM в AD. Active Directory обычно не позволяет вам пройти аутентификацию в качестве субъекта-службы (в частности, не позволяет получать TGT через AS_REQ); Теоретически предполагается, что принципалы служб предназначены для приема учетных данных пользователей, а не для аутентификации в вашей области Kerberos.

Это отличается от Unix KDC, которые обычно не делают различий между «принципалами служб» и «принципалами пользователей» по умолчанию, позволяя выполнять аутентификацию через kinit. В Active Directory вместо этого KDC делает вид, что принципал не существует, когда вы пытаетесь kinit как таковой, что может сбивать с толку.

Если вы можете успешно пройти аутентификацию как любой другой пользователь, я бы попробовал проверить, работает ли субъект-служба, запустив вместо этого:

$ kinit some_other_user
$ kvno HTTP/vmproxy.mydomain.com@MYDOMAIN.COM

Которая просто получает служебный билет для HTTP/vmproxy.mydomain.com@MYDOMAIN.COM. Или вы можете пройти аутентификацию как squid@MYDOMAIN.COM вместо субъекта-службы, который вы настроили.

Если вам нужно уметь kinit как HTTP/vmproxy.mydomain.com@MYDOMAIN.COM напрямую, я думаю, что это возможно, но вам нужно изменить атрибут userPrincipalName в соответствующей учетной записи AD. В настоящий момент я не могу вспомнить, как этого добиться, но, если я правильно помню, у вас может быть только одно такое UPN; у вас не может быть нескольких разных основных имен, вы можете kinit как для той же учетной записи.