Я устанавливаю 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
как для той же учетной записи.