Fedora 目录服务器:Linux 身份验证的演变

作者:Jeramiah Bowling

在当今大多数企业网络中,集中式身份验证是一种基本的安全范例。在 Linux 领域,OpenLDAP 多年来一直占据主导地位,但对于那些不熟悉 LDAP 命令行界面 (CLI) 的人来说,部署它可能是一个痛苦的过程。 Fedora 目录服务器 (FDS) 应运而生。 FDS 于 2005 年 6 月以 GPL 许可发布,最初名为 Fedora Directory Server 7.1(同年 12 月更名为 1.0 版本),其根源可追溯到 Netscape Directory Server Project 及其姊妹产品 Red Hat Directory Server (RHDS)。 FDS 的一些显著特点是其易于使用的基于 Java 的管理控制台、对 LDAP3 和 Active Directory 集成的支持。 到目前为止,FDS 最具吸引力的功能是多主复制 (MMR)。 MMR 允许多个服务器维护相同的目录信息,因此一个服务器的丢失不会像主从环境中那样导致目录瘫痪。

启动并运行 FDS 服务器有其优点和缺点。 然而,一旦服务器运行,Red Hat 可以轻松管理您的目录并连接原生 Fedora 客户端。 除了提供网络身份验证之外,您还可以轻松地将 FDS 功能扩展到其他应用程序,例如 NFS、Samba、Sendmail、Postfix 等。 在本文中,我们仅专注于使用 FDS 进行网络身份验证和实施 MMR。

安装

首先,从许多 Fedora 镜像站点之一下载 Fedora 6 ISO。 FDS 的硬件要求很低——500MHz 处理器、256MB 内存和 3GB 或更多空间。 我建议至少使用 1GHz 或更高的处理器、512MB 或更多的内存以及 20GB 或更多的磁盘空间。 此配置应能很好地支持小型企业到拥有数千用户的企业。 至于支持的操作系统,毫不奇怪,Red Hat 列出了 Fedora 和 Red Hat 版本的 Linux。 HP-UX 和 Solaris 也受支持。 使用可引导 ISO CD,启动 Fedora 6 安装过程,并选择您所需的系统首选项和软件包。 确保在安装过程中选择 Apache。 在安装期间设置您的主机和 DNS 信息,使用完全限定域名 (FQDN)。 您也可以在安装后设置此信息,但关键是您的主机信息配置正确。 如果您计划使用防火墙,则需要输入两个端口以允许 LDAP(默认端口 389)和管理控制台(默认端口是随机端口)。 对于此处使用的服务器,由于我的环境中已存在 LDAP 安装,因此我选择了端口 3891 和 3892。 Fedora 还原生支持 Security-Enhanced Linux (SELinux),这是一种基于策略的锁定工具(如果您选择使用它)。 如果您想使用 SELinux,则必须选择 Permissive Policy(许可策略)。

一旦您的 Fedora 6 服务器启动,从 FDS 站点下载并安装最新 RPM 版本的 Fedora Directory Server(它未包含在 Fedora 6 发行版中)。 运行 RPM 会将程序文件解压缩到 /opt/fedora-ds。 此时,在运行 FDS 的本地设置之前,从 Sun 下载并安装当前的 Java 运行时环境 (JRE) .bin 文件。 为了将文件放在同一位置,我创建了一个 /opt/java 目录,并从那里下载并运行了 .bin 文件。 安装 Java 后,将 /etc/alternatives 中现有的 Java 软链接替换为指向您新安装的 Java 的链接。 以下语法可以做到这一点

cd /etc/alternatives
rm ./java
ln -sf /opt/java/jre1.5.0_09/bin/java java  

接下来,配置 Apache 在启动时启动,使用 chkconfig 命令

chkconfig -level 345 httpd on

然后,通过键入以下命令启动服务

service httpd start

现在,使用 useradd 命令,创建一个名为 fedorauser 的帐户,FDS 将在该帐户下运行。 创建帐户后,运行/opt/fedora-ds/setup/setup以启动 FDS 安装脚本。 在继续之前,您可能会看到一些关于非最佳配置问题的错误消息,但在大多数情况下,您可以回答 yes 以跳过它们并开始安装过程。 启动后,选择默认安装模式 2 - 典型。 接受安装期间的所有默认设置,除了服务器和组 ID,我们在此处使用 fedorauser 帐户(图 1),如果您想自定义端口(就像我们在此处所做的那样),请将端口设置为正确的数字 (3891/3892)。 您可能还希望为安装期间创建的配置 Admin 和 Directory Manager 帐户使用相同的密码。

Fedora Directory Server: the Evolution of Linux Authentication

图 1. 安装选项

安装完成后,使用脚本返回的语法访问管理控制台 (./startconsole -u admin http://fullyqualifieddomainname:port),使用您在 FDS 安装期间指定的 Administrator 帐户(默认名称为 Admin)。 您始终可以使用相同的语法从 /opt/fedora-ds 调用管理控制台。

此时,您已经拥有一个功能正常的目录服务器。 最后一步是创建一个启动脚本或直接编辑 /etc/rc.d/rc.local 以在机器启动时启动 slapd 进程和管理服务器。 这是一个执行此操作的脚本示例

/opt/fedora-ds/slapd-yourservername/start-slapd
/opt/fedora-ds/start-admin &

目录结构和管理

查看管理控制台,您将在“默认”选项卡上看到服务器信息(图 2),并在第二个选项卡上看到搜索实用程序。 在“服务器和应用程序”选项卡上,展开您的服务器名称以显示两个可访问的服务器控制台:管理服务器和目录服务器。 双击“目录服务器”图标,您将被带到“目录服务器”的“任务”选项卡(图 3)。 在这里,您可以启动和停止目录服务、管理证书、导入/导出目录数据库以及备份服务器。 备份功能是 FDS 控制台的亮点之一。 它允许您备份服务器上的任何目录数据库,而无需任何 CLI 知识。 唯一的注意事项是您仍然需要使用 CLI 来计划备份。

Fedora Directory Server: the Evolution of Linux Authentication

图 2. 主控制台

Fedora Directory Server: the Evolution of Linux Authentication

图 3. “任务”选项卡

在“状态”选项卡上,您可以查看相应的日志以监控活动或诊断 FDS 的问题(图 4)。 只需展开左窗格中的一个日志,即可在右窗格中显示其输出。 使用“连续刷新”选项以实时查看日志。

Fedora Directory Server: the Evolution of Linux Authentication

图 4. 主要日志

在“配置”选项卡中,您可以定义副本(目录的副本)和与其他服务器的同步选项、编辑架构、初始化数据库以及定义日志和插件的选项。 “目录”选项卡按服务器托管信息的域进行布局。 Netscape 文件夹由安装程序自动创建,并存储有关目录的信息。 config 文件夹供 FDS 用于存储有关服务器操作的信息。 在大多数情况下,应将其保留不动,但我们将在设置复制时使用它。

在创建目录结构之前,您应该仔细考虑如何在目录中组织用户。 这里没有足够的空间来介绍目录规划的入门知识,但我通常使用组织单元 (OU) 来分隔按共同安全需求分组的人员,例如按部门(例如,会计部门)。 然后,在 OU 中,我创建用户和组以简化权限或创建电子邮件地址列表(例如,客户经理)。 FDS 还支持角色,角色本质上是新用户的模板。 这种策略并非一成不变,您当然可以使用安装期间创建的默认域目录结构来满足您的大部分需求(图 5)。 无论您选择哪种策略,都应在部署之前查阅 Red Hat 文档。

要创建新用户,请右键单击域下的 OU,然后单击“新建→用户”以调出“新建用户”屏幕(图 5)。 填写相应的条目。 至少,您需要名字、姓氏和通用名称 (cn),通用名称是从您的名字和姓氏创建的。 您的登录 ID 是从您的名字首字母和姓氏自动创建的。 您还可以输入电子邮件地址和密码。 从“用户”窗口左窗格的选项中,您可以添加 NT 用户信息、Posix 帐户信息以及激活/停用帐户。 您可以从“目录”选项卡实现密码策略,方法是右键单击域或 OU 并选择“管理密码策略”。 但是,我无法使此功能正常工作。

Fedora Directory Server: the Evolution of Linux Authentication

图 5. 用户屏幕

复制

在 FDS 中设置复制是一个相对轻松的过程。 在我们的场景中,我们配置双向多主复制,但 Red Hat 最多支持四向复制。 由于我们已经有一个服务器(服务器一)在运行,我们需要另一个系统(服务器二)以相同的方式配置(Fedora、FDS)以进行复制。 使用与服务器一上相同的设置(主机名除外)安装和配置 Fedora 6/FDS。 在两个服务器都启动后,验证它们之间的时间同步和名称解析。 服务器必须具有同步时间或它们的偏移量必须相对接近,并且它们必须能够解析彼此的主机名才能使复制工作。 您可以使用 IP 地址、配置 /etc/hosts 或使用 DNS。 我建议事先设置好 DNS 和 NTP,以使生活更轻松。

下一步是创建一个复制管理器帐户,以将一个服务器的目录绑定到另一个服务器,反之亦然。 在目录服务器控制台的“目录”选项卡上,在 config 文件夹下(在主根目录之外,而不是您的域),创建一个用户帐户,并将其命名为 Replication Manager,这将创建一个登录 ID (uid) RManager。 在两个服务器/目录上的 RManager 上使用相同的密码。 在服务器一上,单击“配置”选项卡,然后单击“复制”文件夹。 在右窗格中,单击“启用更改日志”。 单击“使用默认值”按钮以填写 slapd-servername 目录下的默认路径。 单击“保存”。 接下来,展开“复制”文件夹,然后单击 userroot 数据库。 在右窗格中,单击“启用副本”,然后在“副本角色”部分下选择“多主”(图 6)。 输入唯一的副本 ID。 此数字在参与复制的每个服务器上都必须不同。 向下滚动到下面的更新部分,然后在“输入新的供应商 DN:”文本框中,输入以下内容

uid=RManager,cn=config
Fedora Directory Server: the Evolution of Linux Authentication

图 6. 设置副本

单击“添加”,然后单击底部的“保存”按钮。 在服务器二上,执行与刚才完成的步骤相同的步骤,在 config 文件夹中创建 RManager 帐户,启用更改日志并创建多主副本(具有不同的副本 ID)。

现在,您需要在服务器一上设置复制协议。 从目录服务器的“配置”选项卡中,右键单击 userroot 数据库,然后选择“新建复制协议”。 然后,向导将引导您完成该过程。 输入协议的名称和描述(图 7)。 在“源和目标”屏幕上的“使用者”下,单击“其他”按钮以将服务器二添加为使用者。 您必须使用 FQDN 和正确的端口(在我们的例子中为 3891)。 在“连接”框中使用“简单身份验证”,并输入 RManager 帐户的完整上下文 (uid=Rmanager,cn=config) 和帐户密码(图 8)。 在下一个屏幕上,选中该框以启用“部分复制”,以便在发生更改时仅发送增量而不是整个目录数据库,这在 WAN 连接上非常有用。 在“计划”屏幕上,选择“始终保持目录同步”以保持同步。 您也可以选择计划更新。 在“初始化使用者”屏幕上,使用“立即初始化”选项。 如果您在初始化使用者(服务器二)时遇到任何困难,可以使用“创建使用者初始化文件”选项并将生成的 ldif 文件夹复制到服务器二,然后从“目录服务器任务”窗格导入并初始化它。 当您单击“下一步”时,您将看到复制正在进行。 过程结束时会出现摘要。 要验证复制是否发生,请检查第一个服务器上的复制和错误日志以查看成功消息。 要完成 MMR,请在服务器二上设置复制协议,将服务器一列为使用者,但在向导结束时不要初始化。 这样做会将服务器一上的目录覆盖为服务器二上的目录。 随着我们的设置完成,我们现在拥有了一个冗余的身份验证基础设施,如果我们选择,我们可以添加另外两个读写副本/主服务器。

Fedora Directory Server: the Evolution of Linux Authentication

图 7. 输入名称和密码。

Fedora Directory Server: the Evolution of Linux Authentication

图 8. 输入 RManager 帐户的信息。

验证桌面客户端

随着我们的基础设施到位,我们可以连接我们的桌面客户端。 对于我们的配置,我们使用原生 Fedora 6 客户端和 Windows XP 客户端来模拟混合环境。 其他 Linux 版本也可以连接到 FDS,但由于空间限制,我们将不深入探讨连接它们。 应该注意的是,大多数发行版(如 Fedora)都使用 PAM、/etc/nsswitch.conf 和 /etc/ldap.conf 文件来设置 LDAP 身份验证。 无论客户端类型如何,尝试登录的用户帐户都必须在目录中包含 Posix 信息才能向 FDS 服务器进行身份验证。 要连接 Fedora 客户端,请使用 GNOME 和 KDE 中内置的身份验证实用程序(图 9)。 该实用程序的优点在于它为您完成了所有工作。 您不必手动编辑任何其他先前提及的文件。 打开该实用程序,然后在“用户信息”选项卡和“身份验证”选项卡上启用 LDAP。 单击“确定”以应用这些设置后,Fedora 会立即更新您的 nsswitch.conf 和 /etc/pam.d/system-auth 文件。 重新启动后,您的系统现在使用 PAM 而不是本地 passwd 和 shadow 文件来验证用户身份。

Fedora Directory Server: the Evolution of Linux Authentication

图 9. 内置身份验证实用程序

在登录期间,本地系统从 FDS 中提取 LDAP 帐户的 Posix 信息,并将系统设置为匹配帐户上设置的关于主目录和 shell 选项的首选项。 通过少量手动工作,您还可以使用 automount 本地自动验证身份并在登录时自动挂载网络卷。

连接 XP 客户端几乎同样容易。 通常,NT/2000/XP 用户被迫使用内置的 MSGINA.dll 仅向 Microsoft 网络进行身份验证。 过去,Novell 等供应商使用他们自己的专有客户端来解决这个问题,但现在开源 pgina 客户端已经解决了这个问题。 要连接 2000/XP 客户端,请从 SourceForge 上的项目页面下载主 pgina zip 文件,然后解压缩文件。 对于本文,我使用了 1.8.4 版本,因为我在 1.8.8 版本中遇到了一些 dll 问题。 您还需要下载并解压缩插件捆绑包。 从解压缩的文件中运行 x86 安装程序,接受所有默认选项,但不要在最后启动配置工具。 接下来,从解压缩的插件捆绑包中安装 LDAPAuth 插件。 安装完成后,打开“开始”菜单下的“Pgina 程序组”下的“配置工具”。 在“插件”选项卡上,浏览到您安装期间指定的目录中的 ldapauth_plus.dll。 选中“显示身份验证方法选择框”选项。 这使您可以选择在遇到问题时本地登录。 如果没有此选项,绕过 pgina 客户端的唯一方法是通过安全模式。 现在,单击“配置”按钮,然后输入 LDAP 服务器名称、端口和您希望 pgina 用于搜索客户端的上下文。 我建议将“搜索模式”作为您的 LDAP 方法,因为它会在找不到您的用户 ID 时搜索整个目录。 单击“确定”两次以保存您的设置。 在重新启动之前使用“插件测试器”工具加载您的客户端并测试连接(图 10)。 在下次登录时,用户将收到图 11 中显示的提示。

Fedora Directory Server: the Evolution of Linux Authentication

图 10. 插件测试器工具

Fedora Directory Server: the Evolution of Linux Authentication

图 11. 登录提示

结论

FDS 是一个强大的平台,本文仅触及了皮毛。 根本没有空间将 FDS 的所有其他功能(例如加密或 AD 同步)压缩到一篇文章中。 如果您对这些项目感兴趣或想了解如何将 FDS 扩展到其他应用程序,请查看项目文档页面上的 wiki 和操作指南以获取更多信息。 从我们这里的简单配置来看,FDS 似乎是渐进式的,而不是革命性的。 它并没有从根本上改变 LDAP 的运行方式。 它所做的是简化了管理 LDAP 的复杂任务,同时将通常是商业的功能(例如 MMR)扩展到开源。 通过将 pgina 混合使用,您可以进一步挖掘 FDS 的灵活性和成本节约,而无需部署一系列服务来连接 Windows 和 Linux 客户端。 因此,如果您正在寻找一种简单、可靠且经济高效的 LDAP 产品替代方案,请考虑 FDS。

资源

Fedora 主站点:fedora.redhat.com

Fedora ISO:fedora.redhat.com/Download

Fedora 目录服务器站点:directory.fedora.redhat.com

pgina 主站点:www.pgina.org

pgina 下载:sourceforge.net/project/showfiles.php?group_id=53525

Jeramiah Bowling 担任系统管理员和网络工程师已有十多年。 他在马里兰州亨特谷的一家地区性会计和审计事务所工作,并拥有包括 CISSP 在内的多项行业认证。 欢迎您在 jb50c@yahoo.com 发表评论。

加载 Disqus 评论