在多宿主主机中使用 Kerberos

在多宿主主机中使用 Kerberos

我有几个主机正在运行CentOS 7.3OpenSSH 6.6.1p1Kerberos 5 版本 1.14.1

我的主机及其网络接口如下所示。主机按其“主”主机名列出,该主机名在 DNS 中与主机的单个 IP 地址相关联eth0网络接口。在具有多个网络接口的主机上,我还会给出与每个网络接口上的单个 IP 地址关联的 DNS 名称。

  • inf.example.com

    • eth0:192.168.1.1/24
  • dev.example.com

    • eth0:192.168.1.2/24
  • cluster-1.example.com

    • eth0:192.168.1.11/24
    • eth1:192.168.10.11/24(此辅助网络接口的 DNS A / PTR 记录使用主机名 cluster-1-a.example.com 设置)
  • cluster-2.example.com

    • eth0:192.168.1.12/24
    • eth1:192.168.10.12/24(此辅助网络接口的 DNS A / PTR 记录使用主机名 cluster-2-a.example.com 设置)

inf.example.com,即“基础架构”服务器,DNS、LDAP、Kerberos 密钥分发中心 (KDC) 等在此运行。这些项目都通过使用FreeIPA 版本 4.4.0

dev.example.com是一个开发主机,开发人员可以从中运行使用 SSH 执行远程命令的脚本cluster-1.example.com

运行的命令cluster-1.example.com反过来使用 SSH 在其他集群主机,但它通过其次要的网络接口(即通过其192.168.10.11(又名cluster-2-a.example.com) 网络接口)。

为了方便运行这些脚本,我正在尝试为 OpenSSH 完全设​​置单点登录 (SSO)。

一切正常,如果我使用192.168.1.0/24地址并使用-KSSH 标志将我的 Kerberos 票证授予票证 (TGT) 转发到我正在通过 SSH 连接的主机:

user@dev$ ssh -K cluster-1.example.com
user@cluster-1$ ssh -K cluster-2.example.com
user@cluster-2 $ # Everything worked! I was never prompted to accept an SSH host key or to enter a password!

然而,如果我尝试使用次要的在第二个 SSH 跳转的网络接口上,事情不会按预期进行(即以不需要人工交互的方式)。具体来说,会出现两个需要人工交互的提示:

  1. 系统提示我接受服务器的 SSH 主机密钥
  2. 系统提示我输入密码

这些问题如下所示:

user@dev$ ssh -K cluster-1.example.com
user@cluster-1$ ssh -K cluster-2-a.example.com
The authenticity of host 'cluster-2-a.example.com (<no hostip for proxy command>)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'cluster-2-a.example.com' (RSA) to the list of known hosts.
Password:

这不起作用并不奇怪。尽管与辅助网络接口关联的 IP 地址和主机名在 DNS 中具有相应的 A 和 PTR 记录,但 Kerberos 中没有与辅助网络接口关联的 IP 地址和主机名的“注册”。

如何在 Kerberos 中正确配置具有多个网络接口 / 主机名 / IP 地址的主机,以允许 SSH SSO 使用任何主机的主机名 / IP 地址工作?

2018 年 7 月 31 日更新
inf.example.com(即 KDC)没有192.168.10.0/24网络。

它是否需要存在192.168.10.0/241)初次注册cluster-1-a.example.comcluster-2-a.example.com或 2)正在进行的运营cluster-1-a.example.comcluster-2-a.example.com

或者,注册并操作辅助网络接口所需的所有 Kerberos 流量是否都可以通过主接口(即192.168.1.0/24网络)?

答案1

虽然与辅助网络接口关联的 IP 地址和主机名在 DNS 中具有相应的 A 和 PTR 记录,但 Kerberos 中没有与辅助网络接口关联的 IP 地址和主机名的“注册”。

好吧,那就让他们报名吧。

  1. 在每个多宿主服务器上,禁用严格的主体检查,并告诉它接受其密钥表中包含的任何密钥的票证:

  2. 完成此操作后,将所有服务器名称的主体添加到 KDC,并将所有密钥添加到同一个/etc/krb5.keytab。 (对于已禁用名称规范化的客户端,您甚至可以添加短名称和/或 IP 地址的主体。)

    FreeIPA 似乎有一个名为“主要别名”的功能可以执行此操作,尽管我不确定它是否可以按需要在这里工作:

    https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/linux_domain_identity_authentication_and_policy_guide/managing-kerberos-aliases

这可能不是仅有的方式,但这是最简单的,不涉及任何客户端配置。一切都像以前一样工作。

2018 年 7 月 31 日更新

inf.example.com(即 KDC)在 192.168.10.0/24 网络上不存在。

1) cluster-1-a.example.com 和 cluster-2-a.example.com 的初始注册或 2) cluster-1-a.example.com 和 cluster-2-a.example.com 的持续运行是否需要在 192.168.10.0/24 上存在?

不,不是。Kerberos 根本不关心子网 - 它只依赖于标准单播 TCP/UDP 通信工作。(例如,我的家庭实验室在三个不同的国家/地区拥有服务器和 KDC,通过公共互联网进行通信......)

事实上,服务器不与 KDC 通信一点儿也不。只有客户端才可以。服务器使用其本地密钥表来验证您的票证。

(当然,服务器将与您的 FreeIPA 目录服务通信,以通过 LDAP 查找帐户详细信息……但这不再是 Kerberos 的事情。)

相关内容