学习 Linux,302(混合环境): 与 Active Directory 集成

在本文中,将了解这些概念:

  • 了解 Active Directory 域服务 (AD DS)
  • 了解 Samba 如何与 AD DS 进行通信
  • 配置 Samba 以使用 AD DS
  • 与 AD DS 集成

本文帮助您准备 Linux Professional Institute (LPI) 的混合环境专业考试 (302) 的主题 314 下的目标 314.3。该目标的权值为 2。

先决条件

为了最有效地利用本系列中的文章,您应该具备高级 Linux 知识,同时还需要准备一个 Linux 系统,用它来练习本文介绍的命令。具体地讲,本文假设您拥有 Linux 命令行功能的应用知识,并且对 学习 Linux,302(混合环境):概念 中介绍的 Samba 的用途有基本了解 。要执行本文中描述的操作,您必须安装 Samba 软件。此外,您应该能够访问具有 Windows Server 操作系统的计算机,该操作系统针对 AD DS 进行了配置并可运行它。

回页首

了解 Active Directory

关于选修的 LPI-302 考试

Linux Professional Institute Certification (LPIC)与 其他许多认证一样,Linux Professional Institute Certification (LPIC) 提供多个不同级别,每个级别都比前一个级别要求更多知识和经验。LPI-302 考试是 LPIC 层级的第三级中的一个可选特性考试,要求具有高级 Linux 系统管理知识。

要通过 LPIC 级别 3(LPIC-3)认证,您必须通过前两个一级考试(101 和 102),两个二级考试(201 和 202),以及 LPIC-3 核心考试(301)。到达这个级别后,才能参加一些可选专业考试,比如 LPI-302

如果您在拥有大量 Windows 客户端的环境中工作,或者是在具有 AD DS 的环境中工作,则可以考虑将 Linux 服务器集成到 AD 环境中。自 Microsoft Windows 2000 以来,AD 一直是 Windows 的身份验证和目录服务。AD DS 对主域控制器和备份域控制器进行了重大更改,它使用了可复制到另一个 AD DS 的域控制器。

尽管还有其他可以将 Linux 服务器集成到 AD DS 域中的方法,但是 Samba 可帮助简化管理和配置,且无需对 AD DS 进行任何架构修改,或者是在 Windows Server 计算机上安装其他软件。Samba 服务器无法成为 AD DS 域中的域控制器,但它可以作为成员服务器加入 AD DS 服务并与之进行交互。

AD DS 基于下列 Internet 标准:

  • 进行名称解析的域名系统 (DNS)
  • 进行用户身份验证的 Kerberos 版本 5
  • 进行目录服务的 Lightweight Directory Access Protocol (LDAP) 版本 3

LDAP 3

LDAP 最初是为了满足比其前身 X.500 协议更轻型的目录服务需求。自 1993 年发布以来,LDAP 已改进了许多。现在,它实际上是目录服务的 Internet 标准。

Microsoft 声称 LDAP 在核心方面是兼容的。表 1 显示了请求注释 (RFCs),提供了在 LDAP 中读取和执行操作的扩展支持。


表 1. LDAP 的 Microsoft RFC 支持
RFC
支持
2251LDAP v3自 Windows 2000 以来
2252Attribute Syntax Definitions自 Windows 2000 以来
2253UTF-8 String Representation of Distinguished Names自 Windows 2000 以来
2254LDAP Search Filters Using Strings自 Windows 2000 以来
2255The LDAP URL Format自 Windows 2000 以来
2256The X.500 User Schema for use with LDAPv3自 Windows 2000 以来
2829Authentication Methods for LDAP自 Windows 2000 以来
2830Extension for Transport Layer Security自 Windows 2000 以来
2589Extensions for Dynamic Directory Services自 Windows Server 2003 以来
2798Defines the inetOrgPerson LDAP Object Class自 Windows Server 2003 以来
2831Using Digest Authentication as an SASL Mechanism自 Windows Server 2003 以来
2891LDAP Control Extension for Server Side Sorting of Search Results自 Windows Server 2003 以来

Kerberos 5

构建您自己的提要

您可以构建一个自定义 RSS、Atom 或 HTML 提要,以便在我们添加新文章或更新内容时收到通知。访问 developerWorks RSS 提要。选择 Linux 作为专区,Articles 作为类型, 输入 Linux Professional Institute 作为关键字。然后选择您想要的提要类型。

Kerberos 由 Massachusetts Institute of Technology 作为网络验证协议进行开发,那时 Internet 和内部网的安全性已成为十分重要的内容。此协议提供了强加密,支持客户端向服务器证明其身份。同样,服务器也可以向客户端证明其身份。此操作使用了票据和 身份验证器。

AD DS 使用 Kerberos 5 进行用户身份验证。在 AD DS 中,域控制器作为客户端身份验证的 Kerberos 密钥发布中心。

DNS

AD DS 与 DNS 紧密集成并使用它来实现以下操作:

  • 定位 AD DS 域控制器
  • 以分级方式用域名表示组织的结构
  • 提供域控制器位置和 AD DS 域的名称解析服务

请记住,AD DS 本身并不是一个 DNS 服务器,并且不会替代 DNS 通常执行的任务。一般情况下,DNS 服务器会存储区域和资源记录,而 AD DS 使用同一命名空间来存储域及其对象。表 2 比较了典型的 DNS 和 AD DS 角色。


表 2. DNS 和 AD DS 角色
DNSAD DS
将域名映射到资源记录将 DNS 名作为对象存储 (dnsZone)
将计算机名映射到资源记录将计算机名作为对象记录存储

服务记录(SRV 记录)是 DNS 中的数据规范,定义指定服务的服务器位置。为了使 AD DS 正常工作,DNS 服务器必须提供对服务位置资源记录 (RR) 的支持。 SRV RR 将服务名映射到提供该服务的服务器名。AD DS 客户端和域控制器使用 SRV 记录来确定域控制器的 IP 地址。

回页首

配置 Samba 以提供 AD DS 支持

在您的 Linux 服务器可以与 AD DS 进行交互之前,必须验证您的 Samba 安装可以支持 LDAP 和 Kerberos。如果您正在使用之前编译的 Samba 版本,很有可能您的安装会支持 Kerberos 5 和 LDAP。如果您根据源代码编译 Samba,一定要包含对 kbr5ldap 库的支持。首先,这包含在运行 make 命令之前对 include/config.h 标头文件的更改:

#define HAVE_KRB5 1 #define HAVE_LDAP 1 

库名称可能有所不同,具体差异取决于您的 Linux 计算机。

在 Linux 计算机上安装了 Samba 后,就可以使用 Samba 服务守护进程 smbd 来发现已安装的 Samba 支持的内容(参见清单 1)。


清单 1. 显示在 Samba 中对 Kerberos 5 支持的部分列表
				 [tbost@samba3 ~]$ smbd -b | grep KRB    HAVE_KRB5_H    HAVE_KRB5_LOCATE_PLUGIN_H    HAVE_ADDRTYPE_IN_KRB5_ADDRESS    HAVE_DECL_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE    HAVE_DECL_KRB5_GET_CREDENTIALS_FOR_USER    HAVE_INITIALIZE_KRB5_ERROR_TABLE    HAVE_KRB5    HAVE_KRB5_AUTH_CON_SETUSERUSERKEY    HAVE_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE    HAVE_KRB5_C_ENCTYPE_COMPARE    HAVE_KRB5_C_VERIFY_CHECKSUM    HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER    HAVE_KRB5_ENCRYPT_BLOCK    HAVE_KRB5_ENCRYPT_DATA    HAVE_KRB5_ENCTYPE_TO_STRING .....  [tbost@samba3 ~]$smbd -b | grep LDAP    HAVE_LDAP_H    HAVE_LDAP    HAVE_LDAP_ADD_RESULT_ENTRY    HAVE_LDAP_INIT    HAVE_LDAP_INITIALIZE    HAVE_LDAP_SASL_WRAPPING    HAVE_LDAP_SET_REBIND_PROC    HAVE_LIBLDAP    LDAP_SET_REBIND_PROC_ARGS 

清单 1 显示了在 Fedora 发行版对 krb5ldap 库的支持。您的输出可能有所不同,这取决于发行版。尽管如此,验证您的命令输出至少显示 HAVE_KRB5_HHAVE_LDAP_H

Kerberos 和 NTP

Kerberos 依赖于 Samba 服务器,与域的时间保持同步。通常将 AD DS 配置为使用时间服务的域控制器。通过将指定的 Windows 域控制器用作时间服务器,您可以配置 Linux 计算机上的网络时间协议 (NTP)。

Samba 和 Kerberos

Samba 可使用 Kerberos 对 AD DS 域中的用户进行身份验证。要配置 Samba,请找到 /etc 目录中的 krb5.conf 文件,因为您需要对默认文件配置进行一些修改。至少,您应该在文件的 realms 部分中指定域名,以及执行 AD DS 身份验证的 Windows 域服务器的完全限定域名(参见清单 2)。


清单 2. 配置 krb5.conf 文件
				 [realms]  	LPIC302.LOCAL= { 		kdc = wins3.lpic302.local  		admin_server =wins3.lpic302.local 		default_domain = LPIC302.LOCAL 	 	} 

清单 2 显示了一个简单的配置示例,该配置使用 LPIC302.LOCAL 作为 AD DS 域名。一定要以全部大写的字母形式输入域,否则将无法连接 Kerberos。kdc 指令使用主机名 wins3.lpic302.local 指定 AD DS 控制器。此外,将 admin_server 指定为域控制器。如果您想让 Kerberos 在用户没有指定域名时使用此域名,那么 default_domain 参数很有用。

Winbind 守护进程

Winbind 守护进程促进对 AD DS 域的用户进行身份验证。因此,您应该将 Pluggable Authentication Modules (PAM) 配置为使用 pam_winbind 模块,如清单 3 所示。


清单 3. 配置 PAM 以使用 pam_winbind
				 				auth        sufficient   pam_winbind.so auth        sufficient   pam_unix.so use_first_pass auth        required     pam_stack.so service=system-auth auth        required     pam_nologin.so account     sufficient   pam_winbind.so account     required     pam_stack.so service=system-auth password    required     pam_stack.so service=system-auth session     required     pam_stack.so service=system-auth session     optional     pam_console.so 

清单 3 显示基于 Fedora 发行版的 /etc/pam.d 目录中修改的 system-auth 文件。根据您的 Linux 发行版,身份验证文件的名称可能有所不同。通常,文件名是 serviceslogin。

pam_winbind.so 文件的位置很重要。如果您希望用户主要从其 AD DS 帐户而不是本地密码文件进行身份验证,则应该首先输入 pam_winbind.so。否则,您可能发现 auth.log 文件很快就会被失败的本地登录尝试填满。

Name Service Switch

Name Service Switch 提供了一种标准机制,在该机制中,Linux 计算机可以与常见服务进行交互,其中一个服务是身份验证。在使用这些服务时,Linux 计算机会查询 /etc/nsswitch.conf 文件。请根据下列方法修改该文件,以便允许 Linux 计算机使用 Winbind 进行用户身份验证。

下面的代码突出了使用 Winbind 添加 Winbind 支持,以便允许用户参照 AD DS Kerberos 5 数据库,使用 Winbind 进行身份验证:

passwd: files winbind group:	 files winbind 			

smb.conf

毫不奇怪,smb.conf 文件也需要进行配置更改,以便 Samba 可以在 AD DS 域中工作。从根本上讲,需要设置 realmsecurity 的参数,如清单 4 所示。


清单 4. 配置 /etc/nssswitch.conf 文件
				 [global] realm = lpic302.LOCAL security = ADS password server = wins.lpic302.local workgroup = lpic302 winbind use default domain = yes idmap uid = 10000-20000 idmap gid = 10000-20000 winbind enum users = yes winbind enum groups = yes 

清单 4 中的配置将 realm 设置为域名 lpic302.local。将 security 参数设置为 ADS。ADS 表明 Samba 将在 AD DS Service 安全模式下运行。您可以设置代码行 windbind use default domain = yes,消除访问资源时使用域名验证用户名和其他资源的需要。例如,在指定了用户名 tbost 时,Winbind 使用了域 LPIC302.LOCAL,而不是使用 LPIC302.LOCAL/ 进行身份验证。

回页首

与 AD DS 进行交互

配置完成时,系统会重新启动 Samba,并且 Winbind 守护进程正在运行,您可以与 AD DS 进行交互。

使用 net 命令

net 工具对 Samba 管理员非常有用。如果您使用过 Windows 的 net 命令,应该熟悉它的大部分选项和功能。net ADS 命令是您在使用 AD DS 时使用的命令。首先要做的一件事是加入一个域:

[tbost@samba3 ~]$ sudo net ADS join -U Administrator%password [tbost@samba3 ~]$ sudo net ADS testjoin [tbost@samba3 ~]$ sudo net ADS join Computers\OrganizationalUnit\Accounting\Servers 

该代码使用 net 命令来加入域。另外,您可以省略 %password,并在提示 时输入 Windows Administrator 帐户密码。第二个命令验证服务器已加入到域中。该代码段中的最后一步操作是在 AD DS 的 Computers\OrganizationalUnit\Accounting\Servers 下为 Samba 服务器创建一个计算机帐户。如果您需要有关 net 命令的更多信息,其在线手册页提供了很多有用信息。此外,您可以发出命令 net help ADS,如清单 5 所示。


清单 5. 列出 AD DS 域中的用户和组
				 [tbost@samba3 ~]$ net help ADS Usage: net ads info     Display details on remote ADS server net ads join     Join the local machine to ADS realm net ads testjoin     Validate machine account net ads leave     Remove the local machine from ADS net ads status     Display machine account details net ads user     List/modify users net ads group     List/modify groups net ads dns     Issue dynamic DNS update net ads password     Change user passwords net ads changetrustpw     Change trust account password net ads printer     List/modify printer entries net ads search     Issue LDAP search using filter net ads dn     Issue LDAP search by DN net ads sid     Issue LDAP search by SID net ads workgroup     Display the workgroup name net ads lookup     Find the ADS DC using CLDAP lookups net ads keytab     Manage local keytab file net ads gpo     Manage group policy objects net ads kerberos     Manage kerberos keytab 

与 wbinfo 进行交互

您可以使用 Winbind 守护进程提供的 wbinfo 工具来查询 AD DS 资源:

[tbost@samba3 ~]$  wbinfo -p [tbost@samba3 ~]$  wbinfo -u  [tbost@samba3 ~]$  wbinfo -g  

该代码段使用 wbinfo 探索关于域的信息。wbinfo -p 命令将对 Winbind 守护进程运行 ping 命令,以验证它是否正在运行。wbinfo -u 命令返回某个域中的所有用户清单,而wbinfo -g 返回域中的所有组。请参阅 wbinfo 手册,了解有关的更多工具选项和功能。

使用 smbcacls 管理访问控制列表

如果您熟悉 setfaclgetfacl 命令,在学习 Samba 客户端套件提供的 smbcacls 命令时,您应该没有什么问题。您可以使用 smbcacls 工具来更改组和用户所有权,或者在由域中的一个 Windows Server 机器提供的共享上管理访问控制列表:

[tbost@samba3 ~]$sudo smbcacls -G LPIC302.LOCAL\accounting \ //wins2.lpic302.local/budget private.doc 

该代码使用 smbcacls 命令将文件 private.doc 上的组权限更改为共享目录上的 accounting 组、Window Server 机器上的 budget 和 AD DS 域中的 accounting 组。smbcacls --help 命令显示该工具的各种功能可用的选项。


参考资料

学习

原文地址:https://www.cnblogs.com/shihao/p/2316039.html