我正在尝试为我所在的公司 Kubuntu 12.04 Linux 工作站设置 Kerberos 登录支持(提供 kerberos 的 Windows AD 域)。
它几乎完全正常工作,但我无法让 kerberos 同时用于机器登录(通过 kdm)和 ssh。问题似乎是 kdm 将主机的完全限定域检测为 hostname.domain。而 ssh 将完全限定域检测为 hostname.domain(请注意缺少尾随的 .)。
在 kerberos 请求中使用的域末尾缺少或存在 . 足以使票证请求失败并出现“在 kerberos 数据库中找不到服务器”错误。如果我更新 /etc/hosts 以使完全限定主机名为 hostname.domain。并使用 samba 加入域,则使用 kerberos 的 kdm 登录可以正常工作,但 ssh 登录会失败。如果我更新 /etc/hosts 以使主机名为 hostname.domain,则使用 kerberos 的 ssh 登录可以正常工作,但 kdm 登录会失败。
我有点不明白为什么这两项服务对完全限定域名的检测方式不同——我进行了广泛的搜索,并没有发现任何人遇到过此问题,也没有发现任何强制其中一项服务以不同方式检测其域名的选项。
技术细节
正在使用的 Kubuntu 12.04 是我无法控制的技术要求,因此升级到更高发行版目前不是一个选择。
pam_krb5 用于通过 pam dns 提供 kerberos 身份验证,使用的不是 windows dns(在其他基础设施的进一步工作完成之前无法切换 dns 服务器),因此用于 samba kerberosied 加入域的主要详细信息来自 /etc/hosts,它看起来像
127.0.0.1 hostname.domain. hostname localhost
(但是,正在使用的 unix dns 服务器确实具有主机的正确正向和反向 dns 条目)
/etc/krb5.conf(主要是发行版默认设置,其中输入了域详细信息和服务器)
[libdefaults]
default_realm = DOMAIN
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
# samba 3 didn't like the default enc type so overridden to ones it supported
default_tkt_enctypes = arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc
default_tgs_enctypes = arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc
[realms]
DOMAIN = {
kdc = dc01.domain
kdc = dc02.domain
admin_server = dc01.domain
}
[domain_realm]
.domain = DOMAIN
[login]
krb4_convert = true
krb4_get_tickets = false
/etc/samba/smb.conf(仅用于加入域)
[global]
security = ads
realm = WETAFX.CO.NZ
workgroup = WETAFX.CO.NZ
kerberos method = secrets and keytab
client signing = yes
client use spnego = yes
server string = %h server (Samba, Ubuntu)
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
pam wise /etc/pam.d/kdm 仅包含具有标准 pam_krb5.so 条目的 common-pam 文件,例如
auth sufficient pam_krb5.so minimum_uid=1000
这些基本上都是直接从 pam_krb5.conf 的手册页中获取的
ssh 配置有
GSSAPIAuthentication yes
其余部分是标准默认的 ubuntu ssh 配置文件。
感谢您对导致服务之间检测到的完全合格域不匹配的原因提出任何指示。
答案1
我相信我已经弄清楚了这里发生了什么。看起来主机在域末尾使用/不使用 . 加入后,keytab 文件中保存了额外信息,这就是奇怪行为的来源。
有一次我删除了 /etc/krb5.keytab 并重新运行加入域,创建了一个新的 keytab,该 keytab 只使用配置的域名设置,而域名末尾没有 . 。此时 kdm 和 ssh 都可以与 kerberos 一起正常工作。