在配置 Kerberos 时,基本上可以采用两种方法 - 在 /etc/krb5.conf 文件进行静态配置或使用 DNS 进行动态配置。采用 DNS 配置时,Kerberos 应用程序会尝试使用 DNS 记录查找 KDC 服务。采用静态配置时,将您的 KDC 服务器的主机名添加到 krb5.conf(并在移动 KDC 或以其他方式重配置领域时更新文件)。
基于 DNS 的配置通常比较灵活,而且每台计算机的配置工作量也少得多。但要求您的领域名与您的 DNS 域相同或是它的子域。通过 DNS 配置 Kerberos 也会产生一个较小的安全问题 - 攻击者能够通过 DNS 严重扰乱您的基础结构(使名称服务器无效、窃取 DNS 记录等)。但这最多只会造成服务被拒绝。除非在 krb5.conf 中输入 IP 地址而非主机名,否则静态配置也会发生相同的情况。
配置 Kerberos 的一种方法是编辑配置文件 /etc/krb5.conf。默认安装的文件中包含多个示例项。在开始编辑前需要将所有这些项删除。krb5.conf 由多个节组成,每节由括在括号中的节名引入,如 [this]。
要配置您的 Kerberos 客户机,请将以下语句添加到 krb5.conf(其中 kdc.sample.com 是 KDC 的主机名):
[libdefaults]
default_realm = EXAMPLE.COM
[realms]
EXAMPLE.COM = {
kdc = kdc.example.com
admin_server = kdc.example.com
}
default_realm 行设置 Kerberos 应用程序的默认领域。如果您有多个领域,只需向 [realms] 节添加其他的语句。
此外还要向此文件添加一条语句,指示应用程序如何将主机名映射到领域。例如,当连接到远程主机时,Kerberos 库需要知道此主机位于哪个领域中。必须在 [domain_realms] 节中对此进行配置:
[domain_realm]
.example.com = EXAMPLE.COM
www.foobar.com = EXAMPLE.COM
此语句向库说明 example.com DNS 域中的所有主机均位于 SAMPLE.COM Kerberos 领域中。此外,名为 www.foobar.com 的外部主机也应被视为 EXAMPLE.COM 领域的成员。
基于 DNS 的 Kerberos 配置大量使用 SRV 记录。请参见 (RFC2052) 用于指定服务位置的 DNS RR,网址是 http://www.ietf.org。这些记录在早期的 BIND 名称服务器实施中不受支持。这里要求至少为 BIND 版本 8。
对于 Kerberos 而言,SRV 记录的名称始终采用 _service._proto.realm 格式,其中的“realm”是 Kerberos 领域。DNS 中的域名是不区分大小写的,所以当使用这种配置方法时,Kerberos 领域将无法再区分大小写。_service 是一个服务名(例如当尝试联系 KDC 或密码服务时会使用不同的名称)。_proto 可以是 _udp 或 _tcp,但不是所有服务都支持这两种协议。
SRV 资源记录的数据部分包括一个优先级值、一个权重、一个端口号和一个主机名。优先级确定了主机被尝试的顺序(值越低则优先级越高)。权重用于支持优先级相同的服务器之间的某种负载平衡。您也许不需要它们,所以将它们设为 0 即可。
MIT Kerberos 当前查找服务时将查找以下名称:
它定义了 KDC 守护程序(身份验证和票证授予服务器)的位置。典型记录如下:
_kerberos._udp.EXAMPLE.COM. IN SRV 0 0 88 kdc.example.com. _kerberos._tcp.EXAMPLE.COM. IN SRV 0 0 88 kdc.example.com.
它描述了远程管理服务的位置。典型记录如下:
_kerberos-adm._tcp.EXAMPLE.COM. IN SRV 0 0 749 kdc.example.com.
因为 kadmind 不支持 UDP,所以没有 _udp 记录。
与静态配置文件一样,这里也提供了一种机制来向客户机指示特定主机位于 EXAMPLE.COM 领域中,即使它不是 example.com DNS 域的一部分。通过将一个 TXT 记录附加到 _keberos.hostname 即可做到这一点,如下所示:
_keberos.www.foobar.com. IN TXT "EXAMPLE.COM"