现有域的 Kerberos 登录:领域和工作组不匹配导致 CLIENT_NOT_FOUND

现有域的 Kerberos 登录:领域和工作组不匹配导致 CLIENT_NOT_FOUND

我最近接手了维护 Samba 域控制器的职责,该控制器主要用于管理域登录以及作为安全文件共享。我并不完全了解该系统的初始配置,因为它是在我加入小组之前很久就配置好的,而且由于最近一些意外的员工变动,我手头上的系统服务出现故障,而我对它的配置一无所知。该服务器运行的是 Ubuntu 16.04,并使用 Samba 模拟 Windows Active Directory(我想我用的是正确的术语)。如果需要,我很乐意发布配置文件或其他相关信息。

我发现无法将新机器加入域,而且,登录该域下的 Windows 机器似乎依赖于缓存凭据,密码更改不会反映在不同机器上。我进行了深入研究,最初的发现是,在服务器机器启动时,其中一个服务显示无法启动。查看日志文件后发现 Kerberos 5 密钥分发服务失败了。

kerberos 服务似乎已经中断了好几个月。我按照一个非常有用的指南配置了新的 kerberos 域,链接在消息底部。我按照指南重新安装了 kerberos 5 服务器,现在服务在启动时正确启动,通过跟踪指南建议的日志文件跟踪,我可以看到它正在与网络上的其他计算机通信,我可以看到各种计算机进行登录尝试,由于在主体列表下没有计算机名称而失败。(这是另一个优先级较低的问题,因为我认为旧的主体文件在我重新安装时被覆盖了,不知道这是可能的。弄清楚这些计算机在自动尝试重新连接时发送的密码将允许我将它们添加到具有正确密码的主体中以解决此问题)当我尝试在加入域的计算机的 Windows 7 登录页面上登录时,当一切仍在运行时,我可以在服务器上实时看到跟踪终端读数。然而,并非一切都很好。

当我尝试登录到仍加入域的终端时,nucleus 收到来自 username@MSAE 的登录,但无法找到匹配项,因为域名为 msae.wisc.edu,因此找不到匹配的用户名。这让我有点困惑,因为在 Windows 中,域下列出了“msae.wisc.edu”,但在登录启动画面上,域显示为“MSAE”。登录尝试缺少必要的“.wisc.edu”,无法与主体列表中的内容完全匹配。我不确定如何继续。我尝试使用 msae.wisc.edu/username 登录以强制域读取“msae.wisc.edu”,这导致在发送正确密码时,Windows 计算机上出现“服务器上的安全数据库没有此工作站信任关系的计算机帐户”消息,在服务器上我看到:

Jun 22 13:09:10 nucleus.msae.wisc.edu krb5kdc[1040](info): AS_REQ (6 etypes {18 17 23 24 -135 3}) 128.104.185.62: ISSUE: authtime 1498154950, etypes {rep=18 tkt=18 ses=18}, [email protected] for krbtgt/[email protected]

我还尝试在主体中添加一个新条目,仅使用 MSAE 作为域,即 username@MSAE,而不是所有其他条目,内容如下[电子邮件保护]。当我登录时,如果没有指定域(即使用 Windows 中显示的默认 MSAE 域),则会出现以下错误:

REFERRAL: username@MSAE for krbtgt/MSAE@MSAE, Realm not local to KDC

根据我在 MIT Kerberos 文档(下面的第二个链接)中找到的内容,我还尝试将以下几行添加到 krb5.conf,希望能解决这个主机名问题。

[libdefaults]
    ignore_acceptor_hostname = true

但这并没有起作用。

我有一个想法,将默认域名更改为“MSAE”,以匹配 Windows 使用的登录尝试格式,但我担心这可能会破坏其他现有服务。我唯一的另一个想法是找到一种方法,自动将“MSAE”替换为“msae.wisc.edu”,我以为我通过在 krb5.conf 的 [domain_realm] 部分中放置这样一行 (MSAE = msae.wisc.edu) 来启用它,但据我所知,这没有任何作用。

更糟糕的是,修复损坏的 kerberos 服务后,客户端计算机可以与 nucleus 通信,但由于上述域名问题,用户名和密码无法被接受。这里需要注意的是,几个月来,我的教授一直使用缓存的凭据登录他的计算机,因为他的计算机由于 kerberos 服务损坏而无法联系 Nucleus。现在问题已经(某种程度上)修复,他尝试使用(以前)缓存在他终端上的凭据登录,但被拒绝,因为他的登录尝试被传送到 Nucleus 并被拒绝。这导致删除了缓存的正面凭据,从而毁掉了他这几个月以来的登录方式。

任何有关此事的建议都将不胜感激。

我的 krb5.conf

[libdefaults]
    default_realm = msae.wisc.edu
    ignore_acceptor_hostname = true
# The following krb5.conf variables are only for MIT Kerberos.
#krb4_config = /etc/krb.conf
#krb4_realms = /etc/krb.realms
#kdc_timesync = 1
#ccache_type = 4
#forwardable = true
#proxiable = true

# The following encryption type specification will be used by MIT Kerberos
# if uncommented.  In general, the defaults in the MIT Kerberos code are
# correct and overriding these specifications only serves to disable new
# encryption types as they are added, creating interoperability problems.
#
# Thie only time when you might need to uncomment these lines and change
# the enctypes is if you have local software that will break on ticket
# caches containing ticket encryption types it doesn't know about (such as
# old versions of Sun Java).

#   default_tgs_enctypes = des3-hmac-sha1
#   default_tkt_enctypes = des3-hmac-sha1
#   permitted_enctypes = des3-hmac-sha1

# The following libdefaults parameters are only for Heimdal Kerberos.
v4_instance_resolve = false
v4_name_convert = {
    host = {
        rcmd = host
        ftp = ftp
    }
    plain = {
        something = something-else
    }
}
fcc-mit-ticketflags = true

[realms]
msae.wisc.edu = {
    kdc = NUCLEUS
    admin_server = NUCLEUS
}
ATHENA.MIT.EDU = {
    kdc = kerberos.mit.edu:88
    kdc = kerberos-1.mit.edu:88
    kdc = kerberos-2.mit.edu:88
    admin_server = kerberos.mit.edu
    default_domain = mit.edu
}
MEDIA-LAB.MIT.EDU = {
    kdc = kerberos.media.mit.edu
    admin_server = kerberos.media.mit.edu
}
ZONE.MIT.EDU = {
    kdc = casio.mit.edu
    kdc = seiko.mit.edu
    admin_server = casio.mit.edu
}
MOOF.MIT.EDU = {
    kdc = three-headed-dogcow.mit.edu:88
    kdc = three-headed-dogcow-1.mit.edu:88
    admin_server = three-headed-dogcow.mit.edu
}
CSAIL.MIT.EDU = {
    kdc = kerberos-1.csail.mit.edu
    kdc = kerberos-2.csail.mit.edu
    admin_server = kerberos.csail.mit.edu
    default_domain = csail.mit.edu
    krb524_server = krb524.csail.mit.edu
}
IHTFP.ORG = {
    kdc = kerberos.ihtfp.org
    admin_server = kerberos.ihtfp.org
}
GNU.ORG = {
    kdc = kerberos.gnu.org
    kdc = kerberos-2.gnu.org
    kdc = kerberos-3.gnu.org
    admin_server = kerberos.gnu.org
}
1TS.ORG = {
    kdc = kerberos.1ts.org
    admin_server = kerberos.1ts.org
}
GRATUITOUS.ORG = {
    kdc = kerberos.gratuitous.org
    admin_server = kerberos.gratuitous.org
}
DOOMCOM.ORG = {
    kdc = kerberos.doomcom.org
    admin_server = kerberos.doomcom.org
}
ANDREW.CMU.EDU = {
    kdc = kerberos.andrew.cmu.edu
    kdc = kerberos2.andrew.cmu.edu
    kdc = kerberos3.andrew.cmu.edu
    admin_server = kerberos.andrew.cmu.edu
    default_domain = andrew.cmu.edu
}
CS.CMU.EDU = {
    kdc = kerberos.cs.cmu.edu
    kdc = kerberos-2.srv.cs.cmu.edu
    admin_server = kerberos.cs.cmu.edu
}
DEMENTIA.ORG = {
    kdc = kerberos.dementix.org
    kdc = kerberos2.dementix.org
    admin_server = kerberos.dementix.org
}
stanford.edu = {
    kdc = krb5auth1.stanford.edu
    kdc = krb5auth2.stanford.edu
    kdc = krb5auth3.stanford.edu
    master_kdc = krb5auth1.stanford.edu
    admin_server = krb5-admin.stanford.edu
    default_domain = stanford.edu
}
    UTORONTO.CA = {
            kdc = kerberos1.utoronto.ca
            kdc = kerberos2.utoronto.ca
            kdc = kerberos3.utoronto.ca
            admin_server = kerberos1.utoronto.ca
            default_domain = utoronto.ca
}

[domain_realm]
.msae.wisc.edu = msae.wisc.edu
MSAE = msae.wisc.edu
.MSAE = msae.wisc.edu
.mit.edu = ATHENA.MIT.EDU
mit.edu = ATHENA.MIT.EDU
.media.mit.edu = MEDIA-LAB.MIT.EDU
media.mit.edu = MEDIA-LAB.MIT.EDU
.csail.mit.edu = CSAIL.MIT.EDU
csail.mit.edu = CSAIL.MIT.EDU
.whoi.edu = ATHENA.MIT.EDU
whoi.edu = ATHENA.MIT.EDU
.stanford.edu = stanford.edu
.slac.stanford.edu = SLAC.STANFORD.EDU
    .toronto.edu = UTORONTO.CA
    .utoronto.ca = UTORONTO.CA

[login]
krb4_convert = true
krb4_get_tickets = false

[logging]
kdc = FILE:/var/log/kerberos/krb5kdc.log
admin_server = FILE:/var/log/kerberos/kadmin.log
default = FILE:/var/log/kerberos/krb5lib.log

我的 kdc.conf

[kdcdefaults]
kdc_ports = 750,88

[realms]
MSAE.WISC.EDU = {
    database_name = /var/lib/krb5kdc/principal
    admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
    acl_file = /etc/krb5kdc/kadm5.acl
    key_stash_file = /etc/krb5kdc/stash
    kdc_ports = 750,88
    max_life = 10h 0m 0s
    max_renewable_life = 7d 0h 0m 0s
    master_key_type = des3-hmac-sha1
    supported_enctypes = aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3
    default_principal_flags = +preauth
}

Kerberos 指南 http://techpubs.spinlocksolutions.com/dklar/kerberos.html#krb-adduser-ticket 主体名称和 DNS 文档 https://web.mit.edu/kerberos/krb5-1.11/doc/admin/princ_dns.html

相关内容