AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[mitkerberos](server)

Martin Hope
Nathan
Asked: 2021-02-26 14:18:26 +0800 CST

在 Kerberos 数据库中未找到服务器 - 数据库位于何处?

  • 1

测试设置:

  • 在已加入活动目录的 Windows 10 机器上运行的 Weblogic 12.2.1.4
    • JVM 1.8.0_281
    • Java Web 应用程序使用 Java GSSAPI 通过 Samba 访问文件共享,基本上使用来自https://github.com/hierynomus/smbj/issues/304#issuecomment-375603115的代码
    • 这是一个开发者机器——java系统属性“user.name”显示了开发者的windows用户名
  • 运行 Red Hat Enterprise Linux 7 的 Linux 文件服务器,配置了 sssd 以连接到 Active Directory
  • 运行 Red Hat Enterprise Linux 6 的 Linux 文件服务器,不使用 sssd,不使用 winbind(不清楚为 Active Directory 配置的精确度)

根据我收集到的与系统管理员对话的第三手资料,MIT Kerberos 以某种方式参与了将 linux 服务器连接到 Active Directory 的工作——但我没有更多信息。

(注意:serverfault 存在 markdown 表渲染问题 - 表在预览中显示正常,但在实际发布的问题中显示不正常,因此现在将其包围在代码块中,这样它就不会一起运行)

试验结果

| Source (all on same Windows 10 machine)  | Target FileServer     | Result  |
|------------------------------------------|-----------------------|---------|
| Weblogic application                     | RHEL 6                | Success |
| Weblogic application                     | RHEL 7                | **Fail:** Server not found in Kerberos database |
| Windows Explorer                         | RHEL 6                | Success |
| Windows Explorer                         | RHEL 7                | Success |

所有测试都使用相同的用户凭据完成。

Weblogic 的跟踪结果(将 java 系统属性设置为 之后sun.security.krb5.debug)true是:

KrbAsReqBuild: PREAUTH FAILED/REQ, re-send AS-REQ
Using builtin default etypes for default_tkt_enctypes
default etypes for default_tkt_enctypes: 18 17 16 23
Using builtin default etypes for default_tkt_enctypes
default etypes for default_tkt_enctypes: 18 17 16 23
>>> EType: sun.security.krb5.internal.crypto.Aes256CtsHmacSha1EType
>>> KrbAsReq creating message
getKDCFromDNS using UDP
>>> KrbKdcReq send: kdc=***************. UDP:88, timeout=30000, number of retries =3, #bytes=233
>>> KDCCommunication: kdc=***************. UDP: 88, timeout=30000,Attempt =1, #bytes=233
>>> KrbKdcReq send: #bytes read=100
>>> KrbKdcReq send: kdc=*****************. TCP:88, timeout=30000, number of retires =3, #bytes=233
>>> KDCCommunication: kdc=****************. TCP:88, timeout=30000,Attempt =1, #bytes=233
>>>DEBUG: TCPClient reading 2695 bytes
>>>KrbKdcReq send: #bytes read=2695
>>>KdcAccessibility: remove **********************.:88
>>>Etype: sun.security.krb5.internal.crypto.Aes256CtsHmacSha1EType
>>>KrbAsRep cons in KrbAsReq.getReply ******
Found ticket for ******@******** to go to krbtgt/******@****** expiring on ******
Entered Krb5Context.initSecContext with state=STATE_NEW
Found ticket for ******@******** to go to krbtgt/******@****** expiring on ******
Service ticket not found in the subject
>>> Credentials serviceCredsSingle: same realm
Using builtin default etypes for default_tgs_enctypes
default etypes for default_tgs_enctypes: 18 17 16 23
>>> EType: sun.security.krb5.internal.crypto.Aes256CtsHmacSha1EType
>>> CksumType: sun.security.krb5.internal.crypto.HmacSha1Aes256CksumType
>>> EType: sun.security.krb5.internal.crypto.Aes256CtsHmacSha1EType
getKDCFromDNS using UDP
>>> KrbKdcReq send: kdc=************. TCP:88, timeout=30000, number of retries =3, #bytes=2633
>>> KDCCommunication: kdc=************. TCP:88, timeout=30000,Attempt =1, #bytes=2633
>>>DEBUG: TCPClient reading 104 bytes
>>> KrbKdcReq send: #bytes read=104
>>> KdcAccessibility: remove *************.:88
>>> KDCRep: init() encoding tag is 126 req type is 13
>>>KRBError:
        STime is **********
        suSec is **********
        error code is 7
        error Message is Server not found in Kerberos database
        sname is cifs/***********@***********
        msgType is 30

搜索“在 Kerberos 数据库中找不到服务器”会产生多种可能性(DNS 似乎是最常见的建议,其他答案建议 SPN 注册、TLS 证书、不使用 FQDN、无效的主机到领域映射、主机不是域的一部分, IPV4 与 IPV6)

网络管理员说 DNS 是正确的,这似乎可以通过 Windows 资源管理器可以很好地连接到 RHEL 7 服务器这一事实得到证实。但我也不准备只责备 java 代码,因为它确实成功连接到 RHEL 6 服务器。

我很难清楚地解释需要在哪里配置 Kerberos 条目。

这是 Windows 10 机器、文件服务器或 Active Directory KDC 上的“Kerberos 数据库”吗?或者是否有这个 Kerberos 数据库的多个副本,每个副本都需要条目?

编辑 - 附加细节 我学到了一些新东西,可以提供一些附加细节。

以下内容均来自 Developer 机器上的 Window 命令提示符。

领域由以下因素决定:

C:\>echo %userdnsdomain%
DC1.DC2.DC3

对于成功的连接(RHEL 6 服务器)

C:\>powershell Get-ADComputer server1

DistinguishedName : CN=SERVER1,OU=ou1,OU=ou2,OU=ou3,DC=dc1,DC=dc2,DC=dc3
DNSHostName       : server1.dc2.dc3
Enabled           : True
Name              : SERVER1
ObjectClass       : Computer
ObjectGUID        : aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
SamAccountName    : server1$
SID               : ************************************
UserPrincipalName :

C:\>setspn -L server1
Registered ServicePrincipalNames for CN=SERVER1,OU=ou1,OU=ou2,OU=ou3,DC=dc1,DC=dc2, DC=dc3:
        HOST/server1.dc2.dc3
        HOST/SERVER1

C:\>nslookup server1
Server:  aa1.dc2.dc3
Address:  123.456.789.01

Name:    server1.dc2.dc3
Address:  123.456.7.890

C:\>nslookup 123.456.7.890
Server:  aa1.dc2.dc3
Address:  123.456.789.01

Name:    server1.dc2.dc3
Address:  123.456.7.890 

对于失败的连接(RHEL 7 服务器)

C:\>powershell Get-ADComputer server2

DistinguishedName : CN=SERVER2,OU=ou4,DC=dc1,DC=dc2,DC=dc3
DNSHostName       : server2.dc1.dc2.dc3
Enabled           : True
Name              : SERVER2
ObjectClass       : Computer
ObjectGUID        : bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
SamAccountName    : SERVER2$
SID               : ************************************
UserPrincipalName :

C:\>setspn -L server2
Registered ServicePrincipalNames for CN=SERVER2,OU=ou4,DC=dc1,DC=dc2,DC=dc3:
        RestrictedKrbHost/SERVER2
        HOST/SERVER2
        RestrictedKrbHost/SERVER2.dc1.dc2.dc3
        HOST/SERVER2.dc1.dc2.dc3

C:\>nslookup server2
Server:  aa1.dc2.dc3
Address:  123.456.789.01

Name:    server2.dc1.dc2.dc3
Address:  12.345.6.78

C:\>nslookup 12.345.6.78
Server:  aa1.dc2.dc3
Address:  123.456.789.01

Name:    server2.dc2.dc3
Address:  12.345.6.78

比较成功与失败的 Weblogic 跟踪结果:

成功:

>>> DEBUG: ----Credentials----
        client: [email protected]
        server: cifs/[email protected]
        ticket: sname: cifs/[email protected]

失败:

>>>KRBError:
  ...
         error code is 7
         error Message is is Server not found in Kerberos database
         sname is cifs/[email protected]
         msgType is 30

所以我注意几点:

  • 成功的(RHEL 6)服务器在许多地方(但不是全部)省略了“dc1”
  • 成功和失败sname仅在服务器部分有所不同——否则它们会排列在“dc”值上。
  • 两台服务器位于不同的组织单位中(尽管我认为这不是问题)
  • 命令结果的大小写有一些差异
  • nslookup结果似乎有所不同,server2具体取决于是通过服务器名称(包括dc1)还是 IP 地址(不包括dc1)查找
redhat active-directory kerberos mitkerberos
  • 3 个回答
  • 11437 Views
Martin Hope
Howard_Roark
Asked: 2020-12-19 07:59:53 +0800 CST

Kerberos rdns=false 中断从 Linux 客户端到 Windows IIS 服务器的连接

  • 0

最近我更改了 Linux 客户端上的 krb5.conf 文件以使用:

[libdefaults]
rdns = false

这些客户端仍然可以成功使用 kerberos 身份验证连接到其他 Linux 网络服务器。但是,现在他们与 IIS 网络服务器的连接中断了。我看到的一个示例错误是:

< HTTP/1.1 401 Unauthorized
< Content-Type: text/html
< Server: Microsoft-IIS/8.5
* gss_init_sec_context() failed: Server not found in Kerberos database.

但是,当我删除 rdns=false 时,Linux 客户端可以毫无问题地进行身份验证/连接。我能够通过添加rdns=false和查看失败然后删除它并查看成功来始终如一地重新创建这种行为。为什么 rdns=false 会中断从 Linux 客户端到 IIS Web 服务器的连接?

kerberos mitkerberos iis-8.5
  • 1 个回答
  • 1459 Views
Martin Hope
Poehli
Asked: 2020-12-13 11:33:14 +0800 CST

ubuntu 忽略 default_ccache_name

  • 0

我在使用 Kerberos 和 Ubuntu 20.04 时遇到问题。
我正在运行一个 FreeIPA 服务器,但由于它可以在我的 Centos 机器上运行,我想这是一个客户端问题。

最大的目标是拥有一个 SSO 系统,用于多种服务。大多数情况下它按预期工作,但有一件事拒绝为我工作:
让 automount/autofs 接受我的 Kerberos 配置。一个主要问题是 autofs 无法读取KRB5CCNAME环境变量。它总是使用 libdefault,如果 Ubuntu 也这样做的话,那很好。但是,出于某种原因,无论我尝试什么,Ubuntu 都不会设置 KRB5CCNAME 环境。变种。在正确登录部分期间,但始终默认为FILE:/tmp/krb5cc_\<UID>_\<VALUE>.
我更喜欢使用密钥环,所以我写default_ccache_name = KEYRING:persistent:%{uid}在 libdefaults 部分的 krb5.conf 中。当手动设置 KRB5CCNAME 时,一切都很好,自动挂载连接到我的 samba 驱动器。
但是让系统决定变量应该包含什么,总是会导致FILE:...

我的客户 krb5.conf 如下所示:

includedir /etc/krb5.conf.d/
includedir /var/lib/sss/pubconf/krb5.include.d/

[logging]
  default = FILE:/var/log/krb5.log

[libdefaults]
  default_realm = EXAMPLE.COM
  dns_lookup_realm = true
  dns_lookup_kdc = true
  rdns = false
  dns_canonicalize_hostname = false
  ticket_lifetime = 24h
  forwardable = true
  udp_preference_limit = 0
  default_ccache_name = KEYRING:persistent:%{uid}
  ccache_type = 4

[realms]
  EXAMPLE.COM = {
    kdc = ipa.example.com:80
    master_kdc = ipa.example.com:88
    admin_server = ipa.example.com:749
    kpasswd_server = ipa.example.com:464
    default_domain = example.com
    pkinit_anchors = FILE:/var/lib/ipa-client/pki/kdc-ca-bundle.pem
    pkinit_pool = FILE:/var/lib/ipa-client/pki/ca-bundle.pem

  }


[domain_realm]
  .example.com = <EXAMPLE.COM>
  example.com = <EXAMPLE.COM>
  client.example.com = <EXAMPLE.COM>

SSSD 配置:

[domain/example.com]
debug_level=10
cache_credentials = True
krb5_store_password_if_offline = True
ipa_domain = EXAMPLE.COM
id_provider = ipa
auth_provider = ipa
access_provider = ipa
ipa_hostname = client.example.com
chpass_provider = ipa
ipa_server = _srv_, ipa.example.com
ldap_tls_cacert = /etc/ipa/ca.crt
ldap_search_base = cn=accounts,dc=example,dc=com
krb5_ccname_template = KEYRING:persistent:%U

[sssd]
services = nss, sudo, pam, ssh
config_file_version = 2
domains = example.com
debug_level=10
[nss]
override_shell = /bin/bash

[pam]
offline_credentials_expiration = 60
debug_level=10

[domain/default]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
access_provider = ldap
ldap_access_filter = (objectClass=posixAccount)
debug_level=10
[ssh]

[sudo]

有任何想法吗?

ubuntu kerberos ubuntu-20.04 freeipa mitkerberos
  • 1 个回答
  • 1152 Views
Martin Hope
comfix
Asked: 2020-03-05 10:40:21 +0800 CST

MIT Kerberos 更新生命周期不起作用

  • 0

我试图弄清楚为什么我的门票只能获得 0 天的可再生寿命,而不是我指定的 7 天。

我尝试在我的 krb5.conf 和 kdc.conf 中同时设置max_renewable_life(如另一个问题所示)以及renew_lifetime7 天(7d和856800),但这不起作用。我已将它们设置在[realms](krb5/kdc) 和[libdefaults](krb5) 下,但守护进程似乎忽略了此设置。但是ticket_lifetime有效。

我运行了以下命令(编辑了不必要的输出):

$ kinit -r 20m -l 10m PRINCIPAL
$ klist -f
Valid starting       Expires              Service principal
04.03.2020 19:18:46  04.03.2020 19:28:44  krbtgt/REALM@REALM
    renew until 04.03.2020 19:18:46, Flags: RIA

正如你所看到的 kinit 的最大寿命就像一个魅力,但更新不会做任何事情。

令我沮丧的是,我也将这些设置在客户端上,但没有运气。我知道maxlife校长的情况并将其设置为 7 天,但这对我也不起作用。

如果有帮助:我正在运行 FreeBSD (FreeNAS) 并自己编译了 kerberos。是否有其他设置可以使用,或者是否有我需要设置的编译时间选项?

编辑1:

$ kadmin                                                                       
kadmin:  getprinc comfix
Principal: comfix@REALM
Expiration date: [never]
Last password change: Mi Mär 04 21:00:00 CET 2020
Password expiration date: [never]
Maximum ticket life: 0 days 10:00:00
Maximum renewable life: 7 days 00:00:00
Last modified: Mi Mär 04 21:02:47 CET 2020 (comfix/admin@REALM)
Last successful authentication: Mi Mär 04 22:14:13 CET 2020
Last failed authentication: [never]
Failed password attempts: 0
Number of keys: 2
Key: vno 1, aes256-cts-hmac-sha1-96
Key: vno 1, aes128-cts-hmac-sha1-96
MKey: vno 1
Attributes: REQUIRES_PRE_AUTH DISALLOW_SVR
Policy: [none]
freebsd kerberos truenas mitkerberos renew
  • 1 个回答
  • 793 Views
Martin Hope
Ingo
Asked: 2020-03-02 16:18:26 +0800 CST

通过 Kerberos SASL/GSSAPI 对 OpenLDAP 服务器使用 SSSD 进行单点登录

  • 0

针对 Kerberos 的身份验证和针对 LDAP 目录的授权对我有用。现在我正在使用sssd在 Debian Buster 上寻找客户端设置。

我开始使用nss-pam-ldapd 进行 LDAP 身份验证,在 OpenLDAP 服务器上使用SASL 代理授权,并使用ccreds缓存 OpenLDAP 凭据。但是因为我一直使用systemd及其环境,传统的设置不太适合它,我遇到了一些问题OpenLDAP 服务器。

正因为如此,我查看了sssd,发现它可以一体完成,而且它基于systemd并且还使用dbus进程间通信。所以我决定改用它。但在 Debian 上,推荐的软件包sssd会安装所有可能的服务,例如用于活动目录和其他我不需要的东西。我想让我的客户在没有未使用的软件的情况下尽可能精简,所以我的问题是:

我必须安装哪些 Debian 软件包才能使用sssd对具有 Kerberos SASL/GSSAPI 的 OpenLDAP 服务器进行单点登录,以及如何配置它?

openldap debian-buster sssd mitkerberos gssapi
  • 1 个回答
  • 1734 Views
Martin Hope
jla
Asked: 2016-09-17 15:59:23 +0800 CST

从管理服务器初始化 kadmin 界面时出现 Kerberos 错误

  • 3

我按照 MIT Kerberos 5 说明更新了我的 Kerberos 5 服务器的主密钥。我重新启动了 kdc 和 kadmind 服务并使用 krb5-prop 将更改推送到其他服务器。

现在我无法从任何服务器连接到 kadmin,包括管理服务器:

$kadmin
Authenticating as principal jacob/[email protected] with password.
Password for jacob/[email protected]:
kadmin: GSS-API (or Kerberos) error while initializing kadmin interface

从我的搜索中,我发现造成这种情况的一个常见原因是时间同步问题,但机器在一秒钟内匹配,即使从运行 kadmind 的服务器也失败。

我不知道如何解决这个问题。我的 kadmind 版本没有我发现的任何类型的调试参数或详细的日志记录级别。我试过用 -nofork 从命令行运行它,那里很安静。

密码被接受。我可以将 kinit 作为目标原则,如果我输入的密码错误,它会告诉我。

kadmin: Incorrect password while initializing kadmin interface

如果 kadmind 服务没有运行,它也会给出不同的错误。

kadmin: Communication failure with server while initializing kadmin interface

在更新主密码之前我没有测试 kadmin,但是我最近使用它并且没有进行其他配置更改。我试过检查我的密钥版本号(kvno),它们似乎是正确的。

还有什么可能导致这种情况?我还能在哪里检查?如何调试 kadmind?

Debian 8,krb5-admin-server 1.12.1。

linux debian kerberos mitkerberos
  • 3 个回答
  • 13356 Views
Martin Hope
leeand00
Asked: 2016-04-12 07:56:28 +0800 CST

当每个人都有一个公共 IPv6 地址时,IPv6 中的 Kerberos 身份验证有何变化?

  • 0

应该如何使用 IPv6 设置 Kerberos 身份验证?

当每个客户端设备都使用一个公共的、全球可路由的 IPv6 IP 地址时,会有什么影响?

以这种方式设置而不是像使用 IPv4 的规范那样使用 NAT 时会发生什么变化?

kerberos ipv6 mitkerberos
  • 1 个回答
  • 629 Views
Martin Hope
tstm
Asked: 2010-01-22 03:02:22 +0800 CST

从 OpenLDAP/Kerberos 迁移到 Active Directory

  • 1

我有一个运行良好的设置,使用 OpenLDAP 获取用户信息并使用 Kerberos 进行身份验证,但我们也需要集成 Windows,为此我们决定迁移到 Active Directory 可能是一个好主意。从 OpenLDAP 移动帐户信息非常简单且容易完成,但我有一个问题:如何将密码/身份验证信息从 MIT Kerberos 移动到 AD?

我知道他们之间可以进行某种委托,但这不能解决我的问题吗?或者我可以对 MIT Kerberos KDC 进行 AD 身份验证吗?密码存储在 Kerberos 的散列中,所以我不能以明文形式移动它们。我想知道哈希值在 MIT 和 AD 之间是否兼容,因为我也可以以加密形式将密码输入 AD。

有没有人有这方面的经验?除了要求我的所有用户更改密码并且在所有身份验证从一个地方切换到另一个地方而没有任何共存时遇到一个主要麻烦之外,您还有什么建议。

active-directory authentication kerberos credentials mitkerberos
  • 3 个回答
  • 1562 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve