Kerberos 的 GNU/Linux 发行版包含一个客户端软件包,其中包含设置 GNU/Linux 机器以能够针对 KDC 执行 Kerberos 身份验证所需的所有软件和配置文件。在 Fedora 派生的 GNU/Linux 中,此软件包是krb5-workstation。为了使您的系统能够进行 Kerberos 身份验证,包括通过 Kerberized 应用程序进行身份验证,您必须在系统上配置 Kerberos。
配置涉及编辑/etc/krb5.conf文件。在此文件中,您必须指定您的域、KDC、管理服务器、日志记录、默认域和 KDC 信息。您还必须修改kdc.conf文件,您可以选择在krb5.conf文件中指定其位置。默认位置是/var/Kerberos/krb5kdc/kdc.conf。该kdc.conf文件包含有关域的加密算法策略的信息。
您希望在其上执行 Kerberos 身份验证的系统的配置信息与放置在 KDC 上的/etc/krb5.conf文件名中的信息相同。以下是来自 Gnu University Dublin 示例客户端的示例krb5.conf和kdc.conf配置文件。
现在,您可以使用 kinit 命令测试 Kerberos 身份验证
bash$ kinit <username> |
如果您的身份验证失败,查找原因的最佳位置是客户端上的系统日志文件和针对其执行身份验证的 KDC 上的 KDC 日志文件。在解决身份验证问题时,拥有一个打开到 KDC 的终端窗口,并在 KDC 日志上运行 *tail -f* 非常有帮助。在我们的示例中krb5.conf,KDC 日志的位置是/var/log/Kerberos/krb5kdc.log.
PAM,或可插入身份验证模块,是 GNU/Linux 的许多发行版附带的技术,能够通过 pam_krb5 模块与 Kerberos 集成。为了将 Kerberos 身份验证与 PAM 一起使用,您必须安装 pam_krb5 模块并修改 pam 配置文件。
pam_krb5 模块附带示例配置文件名,这些文件名位于/usr/share/doc/pam_krb5-1.55/pam.d。这些配置文件为允许 PAM 控制的服务针对 Kerberos 进行身份验证而进行的基本更改类似于以下内容
auth required /lib/security/pam_krb5.so use_first_pass |
Kerberos 可以用作 Apache Web 服务器的身份验证机制。mod_auth_kerb 应用程序是一个 apache 模块,它提供该功能。使用该模块,您将能够在httpd.conf文件中为访问控制节设置 Kerberos 作为身份验证类型。请注意,虽然正在使用 Kerberos,但这并不是一种理想的身份验证机制,因为票证存储在 Web 服务器上而不是在客户端计算机上。但是,如果您的目标是实施单一登录解决方案或合并帐户,那么这就有价值。mod_auth_kerb 能够支持 Kerberos 4,但是本 HOWTO 中未涵盖该内容,因为协议版本 4 存在已知弱点。
可以在 http://modauthkerb.sourceforge.net/ 找到 mod_auth_kerb 网站。访问使用 mod_auth_kerb 的站点时,务必使用 HTTPS 协议,因为 mod_auth_kerb 使用基本身份验证机制。基本身份验证使用 base64 编码,可以轻松转换回纯文本。因此,重要的是身份验证交换通过 SSL 加密,以确保用户名和密码在传输到 Web 服务器时受到保护。
要使用 mod_auth_krb 模块编译 apache,您必须执行以下步骤
bash$ export 'LIBS=-L/usr/Kerberos/lib -lkrb5 -lcrypto -lcom_err' bash$ export 'CFLAGS=-DKRB5 -DKRB_DEF_REALM=\\\"GNUD.IE\\\"' bash$ export 'INCLUDES=-I/usr/Kerberos/include' bash$ mkdir apache_x.x.x/src/modules/kerberos bash$ cp mod_auth_kerb-x.x.x.c apache_x.x.x/src/modules/kerberos bash$ ./configure --prefix=/home/httpd --add-module=src/modules/Kerberos/mod_auth_kerb.c bash$ make bash$ make install |
您应该测试 apache 以确保它工作。在机器上拥有一个已知的 SSL 启用 apache 的工作副本后,您可以修改httpd.conf文件名以为目录提供 Kerberos 身份验证
以下是来自 mod_auth_kerb apache 模块的示例节,该节为目录启用 Kerberos 5 身份验证
<Directory "/home/httpd/htdocs/content"> AllowOverride None AuthType KerberosV5 AuthName "Kerberos Login" KrbAuthRealm GNUD.IE require valid-user </Directory> |
由于 Microsoft 对 Kerberos 标准的 flawed 实现,标准的 MIT Kerberos 和 Microsoft 的版本之间存在有限的兼容性。 Microsoft 发布了一份文档,其中描述了 Microsoft 损坏的 Kerberos 版本能够与标准 Kerberos 互操作的有限方式。 该文档可在 here 获得。