我在Ubuntu 14.10上安装Squid3,我想用windows kerberos 5在windows server 2012上集成ADDS。我的基础架构如下:
默认网关:
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桌面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查找:其正向和反向查找工作正常。
第2步:在代理服务器上configuration正确的时区:
$ 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步:编辑Kerberosconfiguration文件/etc/krb5.conf。
[libdefaults] default_realm = MYDOMAIN.COM default_tgs_enctypes = rc4-hmac des3-hmac-sha1 default_tkt_enctypes = rc4-hmac des3-hmac-sha1
检查Kerberosconfiguration是否正确。 通过
$ kinit [email protected] $ klist
步骤:5在Active Directory中创build一个专门的用户,并将该用户映射到Kerberos主体名称
c:/> ktpass -princ HTTP/[email protected] -mapuser [email protected] -crypto rc4-hmac-nt -pass P@ssw0rd -ptype KRB5_NT_PRINCIPAL -out krb5.keytab
步骤:6将keytab文件复制到vmproxy上的/etc/krb5.keytab
我的/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
现在当我testing从dc.mydomain.com TGT作为:
$ kinit -V -k -t /etc/krb5.keytab HTTP/[email protected]
它说:
Using default cache: /tmp/krb5cc_0 Using principal: HTTP/[email protected] Using Keytab: /etc/krb5.keytab kinit:Client 'HTTP/[email protected]' not found in kerberos database while getting initial credentials
在使用时
$ kinit -k
它说
kinit:Cannot determine realm for host (principal host/vmproxy@)
这个命令:
c:/> ktpass -princ HTTP/[email protected] -mapuser [email protected] -crypto rc4-hmac-nt -pass P@ssw0rd -ptype KRB5_NT_PRINCIPAL -out krb5.keytab
我相信将HTTP / [email protected]设置为与AD中的[email protected]用户关联的服务主体。 Active Directory通常不允许您作为服务主体进行身份validation(具体来说,不要让它通过AS_REQ获取TGT); 从理论上讲,服务主体应该是接受用户凭证,而不是用来authentication你的Kerberos领域。
这与Unix KDC不同,默认情况下,它通常不区分“服务主体”和“用户主体”,允许通过kinit进行身份validation。 在Active Directory中,相反,KDC假设当您尝试使用kinit时,主体不存在,这往往是相当混乱的。
如果你可以像任何其他用户一样成功进行身份validation,那么我会尝试testing服务主体是否可以运行:
$ kinit some_other_user $ kvno HTTP/[email protected]
它只为HTTP/[email protected]获取服务票据。 或者,您可以通过[email protected]进行身份validation,而不是您设置的服务主体。
如果您需要直接将kinit为HTTP/[email protected],我认为这是可能的,但您需要更改相关AD帐户的userPrincipalName属性。 现在我不记得如何做到这一点,但是如果我记得正确的话,你只能有一个这样的UPN; 您不能拥有多个不同的主体名称,您可以像同一个帐户一样使用kinit 。