问候,我想知道如何将Linux MIT Kerberos与Windows 2003 Active Directory连接起来,以实现以下目标:
用户[email protected]尝试loginApache网站,该网站与Linux MIT Kerberos在同一台服务器上运行。
如果用户通过该名称或领域了解用户,则Apache模块首先询问本地Linux Kerberos。
MIT Kerberos发现它不负责这个领域,并将请求转发给Windows 2003 Active Directory。
Windows 2003活动目录积极回应,并将这些信息提供给Linux MIT Kerberos,然后将这些信息告诉Apache模块,授权用户访问其文件。
这是一个形象的情况: 
我已阅读有关此问题的文档通常不同于此问题:
一些人讨论了将MIT Kerberos与Active Directory连接起来以访问Active Directory服务器上的资源;
而另一个使用链接通过 Windows 2003 Active Directory向Windows KerberosvalidationWindows用户。 (我的问题是相反的。)
所以我的问题归结为:
是否有可能让Linux MIT Kerberos服务器通过对Active Directory域的请求,然后让它接收到答复并将其提供给请求的服务? (尽pipe如果请求服务和Windows 2003 Active Directory直接通信,这不是问题。)
build议和build设性的批评非常感谢。 🙂
后期编辑
我有这个问题。 我已经成功configurationmod_auth_kerb与MIT Kerberos(在我的情况下,EINDWERK.LAN)进行协商,如果我在Ubuntu上用kinit获取本地MIT Kerberos的票据,我可以浏览到Apachenetworking服务器,login。
但是,如果我从Active Directory服务器(在我的情况下是WINDOWS.LAN)获取票据,并冲浪到Apachenetworking服务器,则会收到login提示。 通过Wireshark查看数据包,看起来Apache Web服务器错误地尝试使用WINDOWS.LAN的EINDWERK.LAN的TGT。
我已经上传了Wireshark输出:
Active Directory用户“tester”([email protected])的一个kinit ,成功(忽略KRB5KDC_ERR_PREAUTH_REQUIRED,这里没有preauth)
一次去Apache Web服务器,在那里你可以看到它出错。 [链接]
编辑:是的 ,它总是尝试使用EINDWERK.LAN的TGT进行身份validation。 我将尝试在AD和MIT Kerberos之间build立一个信任关系,看看是否能解决这个问题。
编辑2:好吧,通过创build一个信任( 这里是一个教程 ),似乎一切正常检查,但我不得不强制rc4-hmacencryption从活动目录门票,并且Apache HTTP服务在des3-cbcencryption-sha1。 有谁知道如何删除一个委托人,并使用某种encryption方式encryption其密钥?
您可以在Linux的/etc/krb5.conf文件中设置多个领域。 请参阅MIT Kerberos文档的领域部分 。 您可以在那里configuration您的Windows领域,而使用属于该领域一部分的主体login的用户将通过Windows 2003 Active Directory进行身份validation。
然后,您只需要使用mod_auth_kerb设置Apache,并确保将KrbAuthRealmsconfigurationvariables设置为包含您希望通过Apache进行身份validation的所有领域。
除非我错过了一些东西,否则在使用多域Kerberosconfiguration时,这种configuration并不是那么复杂和相当标准的做法。
好吧,通过重新创build我的Kerberos数据库,并添加每个enctype的主体可用(aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3),然后将HTTP / link.to.website@REALM导出到apache的密钥表中,Active Directory用户现在也可以login。
以下是使用每种编码添加主体并将其导出到密钥表的示例:
addprinc -e“aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3”HTTP / http://www.eindwerk。兰
ktadd -e“aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3”-kt / etc / apache2 /apache.keytab HTTP / http://www.eindwerk.lan
编辑:好的,这一切似乎是正常工作,除了Internet Explorer总是试图获得第一次尝试HTTP / [TRUSTED_DOMAIN_NAME_IN_WIN_2003]的票。 在我的情况下,它转换为“HTTP / EINDWERK.LAN”,而它应该是“HTTP / NS.EINDWERK.LAN”。
我也注意到,试图完全改变信任的域名,并且绝对地破坏了任何跨领域authentication:TGT的交换是正确的,但是当你的本地Linux KDC试图实际使用这张票据时,它发现它可以解密它,在KDC日志中抛出“PROCESS_TGS:authtime 0,对于HTTP/[email protected],在条目中没有匹配键”的错误。 其原因很可能是许多encryption机制把领域和用户名当作盐,所以域名确实需要正确设置。