kerberos配置具有多个域的单个kdc

我们正在尝试配置具有多个域的单个kerberos服务器(这是必需的),所以我最终创建了2个这样的数据库以及每个数据库中的一些主体(一切都很好,我可以登录到这两个数据库并查看不同的主体):

kdc.conf

[realms]
EXAMPLE1.COM =
{database_module=EXAMPLE1.COM
...}
EXAMPLE2.COM =
{database_module=EXAMPLE2.COM
...}

[dbmodules]
EXAMPLE1.COM=
{database_name=/var/kerberos/krb5kdc/principal
...}
EXAMPLE2.COM =
{database_name=/var/kerberos/krb5kdc/principal2
...}

krb5.conf看起来像这样:

[realms]
EXAMPLE1.COM=
{ kdc= server.example1.com
admin_server = server.example1.com
default_domain = example1.com
...}
EXAMPLE2.COM =
{kdc= server.example2.com:61321
admin_server = server.example2.com:61321
default_domain = example2.com
...}

[domain_realm]
.example1.com = EXAMPLE1.COM
example1.com = EXAMPLE1.COM
.example2.com = EXAMPLE2.COM
example2.com = EXAMPLE2.COM

现在的问题是,kerberos似乎不接受example2处于不同领域的kdc(但它适用于example1):

kinit -V -t /tmp/krb5.example2.keytab user/example2@EXAMPLE2.com
keytab specified,forcing -k
Using default cache: /tmp/krb5cc_0
Using principal: user/example2@EXAMPLE2.com
Using keytab: /tmp/krb5.example2.keytab
kinit: Cannot contact any KDC for realm 'EXAMPLE2.com' while getting initial credentials

在修改后建议修改后,我使用systemctl edit --full krb5kdc.service编辑了服务文件,并将其放置在末尾-r Example1 -r EXAMPLE2,现在看来效果更好,但我仍然遇到错误,我无法理解(不确定我是否应该添加不同的端口或发生了什么):

kinit -V -t /tmp/krb5.example2.keytab user/example2@EXAMPLE2.COM
keytab specified,forcing -k
Using default cache: /tmp/krb5cc_0
Using principal: user/example2@EXAMPLE2.COM
Using keytab: /tmp/krb5.example2.keytab
[355090] 1573732431.376189: Getting initial credentials for user/example2@EXAMPLE2.COM
[355090] 1573732431.376190: Looked up etypes in keytab: aes256-cts,aes128-cts,des3-cbc-sha1,rc4-hmac,des-hmac-sha1,des,des-cbc-crc
[355090] 1573732431.376192: Sending unauthenticated request
[355090] 1573732431.376193: Sending request (201 bytes) to cpd4PRE.NEO4J.GENCAT.CAT
[355090] 1573732431.376194: Resolving hostname host.example2.com
[355090] 1573732431.376195: Initiating TCP connection to stream 10.53.48.79:88
[355090] 1573732431.376196: Sending TCP request to stream 10.53.48.79:88
[355090] 1573732431.376197: Received answer (218 bytes) from stream 10.53.48.79:88
[355090] 1573732431.376198: Terminating TCP connection to stream 10.53.48.79:88
[355090] 1573732431.376199: Response was not from master KDC
[355090] 1573732431.376200: Received error from KDC: -1765328370/KDC has no support for encryption type
[355090] 1573732431.376201: Getting initial credentials for user/example2@EXAMPLE2.COM
[355090] 1573732431.376202: Looked up etypes in keytab: aes256-cts,des-cbc-crc
[355090] 1573732431.376204: Sending unauthenticated request
[355090] 1573732431.376205: Sending request (201 bytes) to EXAMPLE2.COM (master)
kinit: KDC has no support for encryption type while getting initial credentials

实际上,我没有读到有关它需要不同端口的信息,因此我对其进行了修改,以便使用61321,但它没有推高该端口上的任何套接字,它只是推了默认端口88(Im asuming用于该端口)第一(也是默认)领域:    {kdc = server.example2.com:61321    admin_server = server.example2.com:61321

root@example1.com:/ root#netstat -netapl | grep LISTEN | grep krb tcp 0 0 0.0.0.0:88 0.0.0.0:* LISTEN 0 9326395 362136 / krb5kdc tcp6 0 0 ::: 88 ::: *监听0 9326396 362136 / krb5kdc root@example1.com:/ root#ps -ef | grep -i krb 根362136 1 0 13:04 00:00:00 / usr / sbin / krb5kdc -P /var/run/krb5kdc.pid -r Example1.COM -r Example2.COM 根363981 331025 0 13:08 pts / 0 00:00:00 grep --color = auto -i krb

xiaoyan198607 回答:kerberos配置具有多个域的单个kdc

首先,您的[realms] database_module配置与[dbmodules]配置不匹配。您有database_module=EXAMPLE1,但实际的模块部分称为EXAMPLE1.com

(配置布局/语法似乎也很奇怪。我希望这只是复制粘贴的产物,而不是它的实际外观吗?)


第二,在MIT Kerberos中,必须为每个领域使用-r参数启动KDC进程(krb5-kdc)。如果未指定,它将仅使用系统范围的default_realm –不会枚举所有已配置的数据库。

编辑systemd krb5-kdc.service或init.d脚本以运行:

krb5kdc -r EXAMPLE1.COM -r EXAMPLE2.COM

不幸的是,在当前版本中,使用MIT Kerberos'kadmind无法实现相同的 –每个实例仅支持一个数据库。您可以运行多个kadmind实例(在不同的TCP端口上),或使用kadmin.local进行管理。


最后,您的kinit实际上并未首先显示它是否在与正确的KDC联系。 (而且您也没有包括任何表明这一点的KDC日志。)

您可以通过导出KRB5_TRACE=/dev/stderr使Kerberos客户端更详细。


还请注意,传统上,域名是完全大写的,其中包括TLD。因此,尽管EXAMPLE1.com完全有效,但是它并不是默认情况下软件所期望的。例如,如果您没有[domain_realm]部分,则客户端会尝试将域自动映射到大写的领域,而不是当前的混合版本。

本文链接:https://www.f2er.com/3109175.html

大家都在问