许多系统组件需要无故障交互,以便将 Linux 客户程序集成到现有的 Windows Active Directory 域。 图 12.1 “Active Directory 鉴定纲要”重点介绍了最突出的那些组件。 以下几节主要讲述 AD 服务器和客户机交互中关键事件的基础进程。
为了与目录服务进行通信,客户机至少需要与服务器共享两个协议。
LDAP 是一种为管理目录信息而优化的协议。 带有 AD 的 Windows 域控制器可以使用 LDAP 协议与客户机交换目录信息。 要了解有关 LDAP 概述及其开放源端口 OpenLDAP 的详细信息,请参阅第 35 章 LDAP - 目录服务。
Kerberos 是可信的第三方鉴定服务。其所有客户机均信任 Kerberos 对另一台客户机的身份判断,从而支持采用 Kerberos 的一次签到 (SSO) 解决方案。 Windows 支持 Kerberos 实施,因此即使是 Linux 客户机也可以使用 Kerberos SSO。 有关 Linux 中 Kerberos 的详细信息,请参阅第 41 章 网络鉴定 - Kerberos。
以下客户机组件处理帐户和鉴定数据:
本解决方案最核心的部分是 winbind 守护程序,它是 Samba 项目的组成部分,可以处理与 AD 服务器的所有通信。
NSS 例程提供名称服务信息。针对用户和组的命名服务由 nss_winbind 提供。 此模块与 winbind 守护程序直接交互。
AD 用户的用户鉴定是通过 pam_winbind 模块实现的。Linux 客户机上 AD 用户的用户主目录创建是由 pam_mkhomedir 处理的。pam_winbind 模块与 winbidd 直接交互。 有关 PAM 概述的更多信息,请参阅第 24 章 通过 PAM 进行鉴定。
可感知 PAM 的应用程序(如登录例程及 GNOME 和 KDE 显示管理器)与 PAM 及 NSS 层交互,以便对 Windows 服务器进行鉴定。 支持 Kerberos 鉴定的应用程序(如文件管理器、万维网浏览器或电子邮件客户程序)使用 Kerberos 身份凭证超速缓存来访问用户的 Kerberos 票证,因此而成为 SSO 框架的组成部分。
在域加入过程中,服务器和客户机确立安全关系。 在客户机上,需要执行下列任务来加入 Window 域控制器提供的现有 LDAP 和 Kerberos SSO 环境。 整个加入过程由 YaST 域成员资格模块来处理,该模块可以在安装过程中运行或在已安装系统中运行:
找到了提供 LDAP 和 KDC(密钥发布中心)服务的 Windows 域控制器。
加入客户机的计算机帐户是在目录服务中创建的。
客户机的初始票证授予票证 (TGT) 已经获得并储存于其本地 Kerberos 身份凭证超速缓存。 客户机需要此 TGT 来获得进一步的票证,使其可以联系其他服务,如联系目录服务器进行 LDAP 查询。
NSS 和 PAM 配置要进行调整,使客户机能对域控制器进行鉴定。
客户机引导过程中,将启动 winbind 守护程序并检索计算机帐户的初始 Kerberos 票证。 winbindd 自动刷新计算机票证以保持其有效。 为了跟踪当前的帐户策略,winbindd 定期查询域控制器。
Gnome 和 KDE 的登录管理器 GDM 和 KDM 已经被扩展以处理 AD 域登录。 用户可以选择登录其计算机已加入的主域或主域的域控制器已经与之确立信任关系的可信域之一。
如第 12.2 节 “有关 Linux AD 支持的背景信息”中所述,用户鉴定由多个 PAM 模块调解。 用于对 Active Directory 或 NT4 域进行客户机鉴定的 pam_winbind 模块非常清楚可能妨碍用户登录的 Windows 错误条件。 Windows 错误代码被转换为相应的用户可读错误讯息,这些讯息是 PAM 通过任意支持的方法(GDM、 KDM、控制台和 SSH)在登录中提供的:
密码已失效用户看到一条讯息,说明密码已经失效,需要更改。 系统会直接提示输入新密码,如果新密码不符合公司密码政策(例如密码太短、太简单或已用过)会通知用户。如果用户的密码更改失败,会显示原因,提示输入新密码。
帐户被禁用用户看到一条错误讯息,说明其帐户已被禁用,应该与系统管理员取得联系。
帐户已锁定用户看到一条错误讯息,说明其帐户已被锁定,应该与系统管理员取得联系。
密码必须更改用户可以登录,但会收到警告说密码很快就必须更改了。该警告会在密码失效前三天发出。失效后,用户就不能再登录了。
工作站无效只允许用户从特定工作站登录,而当前 SUSE Linux Enterprise 计算机不在该列表中,会显示一条消息,说明该用户不能从该工作站登录。
登录时段无效只允许用户在工作时段登录,如果试图在工作时段之外登录,就会显示一条消息,说明现在不能登录。
帐户已失效管理员可为特定用户帐户设置失效时间。如果该用户试图在该失效时间以后登录,则会看到一条消息,说明帐户已失效,不能用于登录。
在成功鉴定的过程中,pam_winbind 从 Active Directory 的 Kerberos 服务器中获得票证授予票证 (TGT) 并将其储存在用户的身份凭证超速缓存中。 它也负责更新后台中的 TGT 且不需要任何用户交互。
SUSE Linux Enterprise 支持 AD 用户本地用户主目录。 如果按第 12.3 节 “为 Active Directory 配置 Linux 客户机”中所述通过 YaST 进行配置,用户主目录在 Windows (AD) 用户首次登录时创建到 Linux 客户机。 这些主目录在外观上与标准的 Linux 用户主目录完全一样,并且其运行不依赖 AD 域控制器。 使用本地用户主目录,可访问该计算机上的用户数据。如果 Linux 客户机已配置为执行脱机鉴定,即使 AD 服务器断开连接也可以执行该操作。
公司环境中的用户必须能够成为漫游用户,如:切换网络,甚至在断开连接的情况下工作一段时间。为使用户能够登录断开连接的计算机,已经将大量的超速缓存集成到 winbind 守护程序。 winbind 守护程序即使在脱机状态下都可强制实施密码策略。 它跟踪失败的登录尝试次数并根据 Active Directory 中配置的策略做出反应。 在默认情况下将禁用脱机支持,必须在 YaST 域成员资格模块中明确地启用它。
就像在 Windows 中一样,域控制器不可用时,用户仍可用断开连接前获得的 Kerberos 有效票证访问网络资源(除了 AD 服务器本身之外)。域控制器联机时才能处理密码更改。从 AD 服务器断开连接时,用户不能访问保存在该服务器上的任何数据。工作站与网络完全断开连接并稍后再次连接到公司网络时,SUSE Linux Enterprise 会在用户锁定台式机和解除锁定(例如使用台式机屏幕保护程序)时立即获得新的 Kerberos 票证。