9.11. 在 SASL 中使用 Kerberos GSS-API
Kerberos v5 必须部署到主机上,以便 Directory 服务器使用 GSS-API 机制进行 SASL 身份验证。GSS-API 和 Kerberos 客户端库必须安装在目录服务器主机上,才能利用 Kerberos 服务。
9.11.1. 目录服务器中的 SASL 的验证机制 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
目录服务器支持以下 SASL 加密机制:
- PLAIN.PLAIN 为基于密码的简单验证发送明文密码。
- 外部.与 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 凭据(反引号)与服务器进行身份验证,并使用网络会话加密。要使目录服务器使用 GSS-API,必须在主机中配置 Kerberos。请参阅 第 9.11 节 “在 SASL 中使用 Kerberos GSS-API”。注意GSS-API 和因此,Kerberos 仅在 GSS-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. 关于 Principals 和 Realms 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
主体 是 Kerberos 环境中的用户或服务。域 定义了 Kerberos 管理的人员可以访问什么。您要访问的客户端、KDC 和主机或服务必须使用相同的域。
注意
Kerberos 域仅支持 GSS-API 身份验证和加密,不适用于 DIGEST-MD5。
服务器使用 realm 来关联客户端的 DN,其形式类似 LDAP DN:
uid=user_name/[server_instance],cn=realm,cn=mechanism,cn=auth
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
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
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
ldap/server.example.com@EXAMPLE.COM
有关创建 keytab 的详情,请查看您的 Kerberos 文档。
注意
您必须为映射到现有条目可辨识名称(DN)的目录服务器 Kerberos 主体创建一个简单身份验证和安全层(SASL)映射。
9.11.3. 在目录服务器启动中配置 SASL 身份验证 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
SASL GSS-API 身份验证必须在 Directory 服务器中激活,以便 Kerberos 票据可用于身份验证。这可以通过为初始化脚本提供系统配置文件,以使用该文件标识设置 keytab 文件位置的变量。当初始化脚本在 Directory Server 启动时运行时,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
# 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