9.11. 使用带有 SASL 的 Kerberos GSS-API

必须在主机上部署 Kerberos v5,以便目录服务器使用 GSS-API 机制进行 SASL 身份验证。必须安装在目录服务器主机上安装 GSS-API 和 Kerberos 客户端库,才能利用 Kerberos 服务。

9.11.1. 目录服务器中 SASL 的身份验证机制

目录服务器支持以下 SASL 加密机制:
  • PLAIN。PLAIN 为简单基于密码的身份验证发送明文密码。
  • EXTERNAL。与 TLS 一样,EXTERNAL 会执行基于证书的身份验证。此方法使用公钥进行强大的身份验证。
  • CRAM-MD5.CRAM-MD5 是一种弱的、简单的质询响应身份验证方法。它不会建立任何安全层。
    警告
    红帽建议不要使用不安全的 CRAM-MD5 机制。
  • DIGEST-MD5。DIGEST-MD5 是 LDAPv3 服务器的弱身份验证方法。
    警告
    红帽建议不要使用不安全的 DIGGEST-MD5 机制。
  • 通用安全服务(GSS-API)。通用安全服务(GSS)是一种安全 API,这是基于 UNIX 的操作系统访问和验证 Kerberos 服务的本地方法。GSS-API 还支持会话加密,类似于 TLS。这允许 LDAP 客户端使用 Kerberos 版本 5 凭证(ticket)并使用网络会话加密与服务器进行身份验证。
    要使目录服务器使用 GSS-API,必须在主机上配置 Kerberos。请参阅 第 9.11 节 “使用带有 SASL 的 Kerberos GSS-API”
    注意
    因此,只有具有 GSS-API 支持的平台上支持 Kerberos-API。要使用 GSS-API,可能需要安装 Kerberos 客户端库;任何所需的 Kerberos 库都通过操作系统厂商提供。

9.11.2. 关于目录服务器中的 Kerberos

在 Red Hat Enterprise Linux 上,支持的 Kerberos 库是 MIT Kerberos 版本 5。
Kerberos 的概念以及使用和配置 Kerberos 的信息包括在 MIT Kerberos 网站 http://web.mit.edu/Kerberos/ 中。

9.11.2.1. 关于主体和 Realms

主体 是 Kerberos 环境中的用户或服务。 定义了 Kerberos 在谁可以访问什么情况下管理什么。您要访问的客户端、KDC 以及您要访问的主机或服务必须使用相同的域。
注意
Kerberos 域仅支持 GSS-API 身份验证和加密,不支持 DIGEST-MD5。
服务器使用域以以下格式关联客户端的 DN,类似于 LDAP DN:
uid=user_name/[server_instance],cn=realm,cn=mechanism,cn=auth
例如,example.com 的工程 领域中的 Mike Connors 使用以下关联来访问美国域中的服务器:
uid=mconnors/cn=Europe.example.com,cn=engineering,cn=gssapi,cn=auth
Babara Jensen 从 US.example.com计数 域中,不必在访问本地服务器时指定域:
uid=bjensen,cn=accounting,cn=gssapi,cn=auth
如果机制支持 realm,并且默认域不用于向服务器进行身份验证,则必须在 Kerberos 主体中指定 。否则,可以省略 realm。
注意
Kerberos 系统将 Kerberos 域视为默认域;其他系统默认为服务器。

9.11.2.2. 关于 KDC 服务器和密钥选项卡

密钥分发中心(KDC)验证用户和签发 Ticket Granting Tickets (TGT)。这可让用户使用 GSS-API 向目录服务器进行身份验证。为了响应 Kerberos 操作,目录服务器需要访问其 keytab 文件。keytab 包含目录服务器用来向其他服务器进行身份验证的加密密钥。
目录服务器使用 Kerberos 主体中的 ldap 服务名称。例如:
ldap/server.example.com@EXAMPLE.COM
有关创建 keytab 的详情,请查看您的 Kerberos 文档。
注意
您必须为目录服务器 Kerberos 主体创建一个简单验证和安全层(SASL)映射,该主体映射到现有条目可辨识名称(DN)。

9.11.3. 在目录服务器启动中配置 SASL 身份验证

必须在目录服务器中激活 SASL GSS-API 身份验证,以便 Kerberos 票据可用于身份验证。这可以通过为初始化脚本提供系统配置文件,以标识变量来设置 keytab 文件位置。当初始化脚本在 Directory 服务器启动时运行时,SASL 身份验证将立即激活。
默认 SASL 配置存储在 /etc/sysconfig/dirsrv 文件中。
如果有多个目录服务器实例,且并非所有目录服务器都使用 SASL 身份验证,那么可以在名为 dirsrv-instance/etc/sysconfig/ 目录中创建特定于实例的配置文件。例如,dirsrv-example。如果主机上只有一个实例,则可以使用默认 dirsrv 文件。
要启用 SASL 身份验证,请取消注释 /etc/sysconfig/dirsrv (或特定于实例)文件中的 KRB5_KTNAME 行,并为 KRB5_KTNAME 变量设置 keytab 位置。例如:
# In order to use SASL/GSSAPI the directory
# server needs to know where to find its keytab
# file - uncomment the following line and set
# the path and filename appropriately
KRB5_KTNAME=/etc/dirsrv/krb5.keytab