我一直绞尽脑汁尝试让 Windows 7 通过 MIT Kerberos 5 Realm(在 Arch Linux 服务器上运行)进行身份验证。
我在服务器(又名 dc1)上完成了以下操作:
- 安装并配置 NTP 时间服务器
- 安装并配置 DHCP 和 DNS(为域 tnet.loc 设置)
- 从源代码安装 Kerberos
- 设置数据库
- 配置 keytab
- 使用以下方法设置 ACL 文件:*@TNET.LOC *
- 为我的用户和我的机器添加了一个策略:
addpol 用户 添加pol 管理员 添加主机 ank-政策用户[电子邮件保护] ank-政策管理员 tom/[电子邮件保护] ank -policy 主机 host/wdesk3.tnet.loc -pw MYPASSWORDHERE
然后我对 Windows 7 客户端(又名 wdesk3)进行了以下操作:
- 确保 IP 地址由我的 DHCP 服务器提供,并且 dc1.tnet.loc 可以 ping 通
- 将互联网时间服务器设置为我的 Linux 服务器(又名 dc1.tnet.loc)
- 使用 ksetup 配置领域:
ksetup /SetRealm TNET.LOC ksetup /AddKdc dc1.tnet.loc ksetip /设置计算机密码 MYPASSWORDHERE ksetip /MapUser* *
- 经过一番谷歌搜索,我发现 Windows 7 默认禁用了 DES 加密,于是我开启了该策略以支持 Kerberos 上的 DES 加密
- 然后我重新启动了 Windows 客户端
然而,完成所有这些操作后,我仍然无法从我的 Windows 客户端登录。:(
查看服务器上的日志;请求看起来不错,一切运行良好,我认为问题是 Windows 客户端无法识别来自 KDC 的响应,并且出现通用登录错误:“登录失败:用户名或密码无效”。
服务器的日志文件如下所示(我跟踪了它,所以我知道当 Windows 机器尝试登录时会发生这种情况):屏幕截图:http://dl.dropbox.com/u/577250/email/login_attempt.png
如果我在登录窗口中提供无效的领域,我会收到完全不同的错误消息,所以我不认为这是客户端与服务器之间的连接问题?但我在 Windows 机器上找不到任何错误日志?(有人知道这些在哪儿?
如果我尝试:运行方式 /netonly /用户:[电子邮件保护]命令执行程序一切正常(虽然我没有在服务器日志中看到任何内容,所以我想知道这是否没有影响服务器?),但如果我运行:运行方式/用户:[电子邮件保护]命令执行程序我收到相同的身份验证错误。
有没有 Kerberos 大师可以给我一些关于下一步该尝试的建议?拜托了?
答案1
查看吉娜。它没有 Kerberos 插件,因此您必须编写一个。或者,您可以使用 OpenLDAP 作为代理并使用 pGina LDAP 插件。
答案2
显然,如果您有 Windows 客户端,则绝对需要 AD,因为 Windows 客户端需要对 AD 附加的标准 Kerberos 票证进行小幅扩展。
MIT Kerberos 服务器目前无法自行验证 Windows 客户端。
(信息取自 MIT Kerberos 新闻组)
答案3
@jyvenard - tommed 最终可能使用 SSH 或其他方法来验证他的机器。如果他使用 SSH(在这种情况下我可能会这样做),那么他很可能让验证过的主机使用 kerberos。
在这样的方法中:
[客户端] --ssh--> [主机] --pam 支持 ssh--> [KDC 服务器]
[客户端] <--ssh-- [主机] <--成功或失败-- [KDC 服务器]
它使用 kerberos 来向其客户端系统验证用户身份,方法是尝试 ssh 到尝试根据 KDC 验证其凭据的主机,但客户端实际上从未获取过 kerberos 票证,而只是 ssh 会话的成功或失败。
答案4
这是可能的,但是正如下面的文档所示,您需要将本地用户映射到 kerberos 主体。
我认为可以使用某种形式的登录脚本来动态地执行此操作。登录 Windows 是一个单独的过程。正如 ptman 所指出的,pGina 可能对此有所帮助。
将 MIT KDC 与独立 Windows 2000 工作站结合使用
为了使 Windows 2000 工作站使用 Kerberos KDC,必须按照接下来的说明配置 Kerberos KDC 服务器和工作站。
配置 Kerberos KDC 服务器和 Windows 2000 工作站
跑过设定用于配置 Kerberos KDC 服务器和领域的实用程序(有关详细信息,请参阅设定请参阅本文档后面的部分)。
- 在 Kerberos 领域中,为计算机创建主机主体。使用以下命令:
Kadmin q “ank pw 密码主机/机器名.dns域名”
例如,如果 Windows 2000 工作站名称为 W2KW,而 Kerberos 领域名称为 REALM.RESKIT.COM,则主体名称为 host/w2kw.realm.reskit.com。
Kadmin 是 MIT Kerberos 发行版的一部分,是一个实用程序。
- 由于 Kerberos 领域不是 Windows 2000 域,因此必须将计算机配置为工作组的成员。当您设置 Kerberos 领域并添加 KDC 服务器时,这将自动完成,如下所示:
C:\> Ksetup /setdomain REALM.RESKIT.COM
C:> Ksetup /addkdc REALM.RESKIT.COM kdc.realm.reskit.com
- 设置本地机器账户密码,如下:
C:\> Ksetup /setmachpassword 密码
重新启动计算机以使更改生效。(这是必需的步骤。)每当对外部 KDC 和领域配置进行更改时,都需要重新启动。
使用设定配置单点登录到本地工作站帐户。定义帐户映射;这会将本地计算机帐户映射到 Kerberos 主体。例如:
C:\Program Files (x86)\MapUsers\[电子邮件保护]来宾 C:> Ksetup /mapuser * *
请注意,第二条命令将客户端映射到同名的本地帐户。
使用设定不带参数来查看当前设置。(请注意,未显示 KDC 服务器。)