将 Samba 设置为 Active Directory 域控制器

介绍

从版本 4.0(2012 年发布)开始,Samba 能够用作 Active Directory (AD) 域控制器 (DC)。Samba 在 Windows Server 2008 R2 的林功能级别运行,这足以管理使用 Windows 10/11 并具有严格合规性要求(包括 NIST 800-171)的复杂企业。

从 Samba 版本 4.19 开始,Samba 支持设置更高的功能级别。这仍在进行中,因此不应在生产环境中使用。有关更多信息,请参阅 Samba 4.19.0 发行说明。

如果要在生产环境中安装 Samba,出于故障转移原因,建议运行两个或多个 DC,有关故障转移 DC 预配的更多详细信息,请参阅 Wiki 上的其他位置。本文档介绍如何将 Samba 设置为构建新 AD 林的第一个 DC。此外,如果要将 Samba NT4 域迁移到 Samba AD,请使用此文档。要将 Samba 作为附加 DC 加入现有 AD 林,请参阅将 Samba DC 加入现有 Active Directory

作为 AD DC 的 Samba 仅支持:

如果您运行的是 Samba 4.7 或更高版本,并且已使用该选项构建,则 Samba 将为您的作系统提供的 MIT Kerberos KDC 提供实验性支持。在其他情况下,Samba 使用 Samba 中包含的 Heimdal KDC。有关使用 MIT KDC 的 Samba 的更多详细信息,以及为什么它是实验性的,请参阅使用 MIT Kerberos KDC 运行 Samba AD DC--with-system-mitkrb5

  • 托管和管理用于企业队列管理的组策略对象

安装 Samba 和关联的域控制器配置不会自动转换为组策略功能。请记住这一点,并期望在 post provisioning 中更新此标志smb.conf

本教程假定这是在全新作系统安装上的 Samba 全新安装。需要注意的是,安装 Samba 和配置 Samba 是有区别的。一般来说,设置 Samba 域控制器的整个过程包括 5 个相对简单的步骤。这些步骤如下:

  1. 安装 Samba 和相关软件包
  2. 删除预配置的 Samba 和 Kerberos 占位符配置文件
  3. 使用自动供应工具供应 Samba
  4. 根据需要编辑(根据需要启用组策略和/或其他功能),有关更多信息,请参阅组策略smb.conf
  5. 基于 Unix/Linux 发行版的任何环境配置

本页涵盖了在 Unix 和 Linux 系统上安装 Samba 的许多内容。安装过程因环境而异,因此在整个阅读过程中,请遵循多个选项卡中的链接网页。在本教程的其余部分,将使用以下示例信息:

  • 主机名 =DC1
  • DC 本地 IP 地址 =10.99.0.1
  • 身份验证域 =SAMDOM.EXAMPLE.COM
  • 顶级域 =EXAMPLE.COM

准备安装

全新安装
  • 为您的 AD 林选择一个 DNS 域。不建议为您的组织使用顶级域。这是因为安装 Samba 期间使用的域将解析为域控制器。例如:如果您的组织用作其域,并且在 Samba 安装过程中使用了该域,则面向公众的网站将无法再访问(假设可公开访问的网站未在 DC 上运行,这不应该!明智的做法是为您的域控制器定义一个子域。本教程中使用了本教程,但在实验室环境中,没有必要拥有可公开访问的域,并且可以假设使用。该名称还将用作 AD Kerberos 领域。EXAMPLE.COMSAMDOM.EXAMPLE.COM.INTERNAL

确保使用不需要更改的 DNS 域预置 AD。Samba 不支持重命名 AD DNS 区域和 Kerberos 领域。不要用于 TLD,这是 Avahi 使用的。.local

有关更多信息,请参阅 Active Directory 命名常见问题解答

  • 为您的 AD DC 选择一个主机名,该名称由少于 15 个字符组成(netbios 限制)。一个很棒的主机名是DC1

请勿使用仅限 NT4 的术语作为主机名,例如 或 。这些模式在 AD 中不存在,因此会引起混淆。PDCBDC

  • 在 DC 上设置静态 IP 地址,并在路由器上进行关联的预留。重要:Samba 域控制器将成为所有加入域的工作站的 DNS 解析器。因此,可能需要在 DHCP 池之外分配此 IP 地址
  • 禁用自动更新 DNS 解析程序配置文件的工具,例如 。AD DC 和域成员必须使用能够解析 AD DNS 区域的 DNS 服务器。(有关此内容的更多信息,请参阅特定于发行版的软件包安装页面)resolvconf/etc/resolv.conf
  • 验证 DC 上的文件是否正确地将完全限定域名 (FQDN) 和短主机名解析为 DC 的 LAN IP 地址。例如:/etc/hosts
127.0.0.1     localhost
10.99.0.1     DC1.samdom.example.com     DC1

主机名和 FQDN 不得解析为 IP 地址或 DC 的 LAN 接口上使用的 IP 地址以外的任何其他 IP 地址。127.0.0.1

  • 删除任何现有文件。要列出文件的路径:smb.conf
# smbd -b | grep "CONFIGFILE"
   CONFIGFILE: /usr/local/samba/etc/samba/smb.conf

本 wiki 中显示的绝大多数路径都基于 Samba 的自编译版本,其中所有内容都在 /usr/local/samba 目录中创建。如果使用发行版 Samba 包,路径会有所不同,通常在 /etc/samba 和 /var/lib/samba 中,但请查看发行版文档以查找确切位置。

仅在之前安装了 Samba 时适用
  • 如果您之前在此主机上运行过 Samba 安装:
  • 删除所有 Samba 数据库文件,例如 和 文件。要列出包含 Samba 数据库的文件夹:*.tdb*.ldb
# smbd -b | egrep "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR"
  LOCKDIR: /usr/local/samba/var/lock/
  STATEDIR: /usr/local/samba/var/locks/
  CACHEDIR: /usr/local/samba/var/cache/
  PRIVATE_DIR: /usr/local/samba/private/

从干净的环境开始有助于防止混淆,并确保任何先前 Samba 安装中的任何文件都不会与新的域 DC 安装混合。

安装 Samba

安装维护的 Samba 版本。有关详细信息,请参阅 Samba 发布计划

配置 Samba Active Directory

AD 预置需要 root 权限才能创建文件和设置权限。

Samba AD 配置过程会创建 AD 数据库并添加初始记录,例如域管理员帐户和所需的 DNS 条目。Samba 带有一个内置的命令行工具,称为,可用于自动配置在交互模式下运行时。samba-toolsmb.conf

如果要将 Samba NT4 域迁移到 AD,请跳过此步骤并运行 Samba Classic 升级。有关详细信息,请参阅将 Samba NT4 域迁移到 Samba AD (Classic Upgrade)。


该命令提供了几个参数,用于交互式和非交互式设置。有关详细信息,请参阅:samba-tool domain provision

# samba-tool domain provision --help

在预置新 AD 时,建议通过将参数传递给命令来启用 NIS 扩展。启用 NIS 扩展没有任何缺点,但在现有域中启用 NIS 扩展需要手动扩展 AD 架构。有关 AD 中 Unix 属性的更多详细信息,请参阅:--use-rfc2307samba-tool domain provision

参数参考

在预配期间设置以下参数:

交互模式设置Non-interactive Mode 参数解释
--use-rfc2307--use-rfc2307启用 ADUC Unix Attributes 选项卡所需的 NIS 扩展。
Realm--realmKerberos 领域。AD DNS 域的大写版本。例如:。SAMDOM.EXAMPLE.COM
Domain--domainNetBIOS 域名 (Workgroup)。这可以是任何内容,但必须是一个单词,不超过 15 个字符,并且不包含点。建议使用 AD DNS 域的第一部分。例如:。不要使用 computers 的短主机名。samdom
Server Role--server-role安装域控制器角色。DC
DNS backend--dns-backend设置 DNS 后端。AD 中的第一个 DC 必须使用 DNS 后端安装。请注意,它不受支持,并将在未来的 Samba 版本中删除。BIND9_FLATFILE
DNS forwarder IP address不可用此设置仅在使用 DNS 后端时可用。有关详细信息,请参阅设置 DNS 转发器SAMBA_INTERNAL
Administrator password--adminpass设置域管理员密码。如果密码与复杂性要求不匹配,则预置将失败。有关详细信息,请参阅 Microsoft TechNet:密码必须满足复杂性要求

该命令经常使用的其他参数:samba-tool domain provision

  • --option="interfaces=lo eth0" --option="bind interfaces only=yes":如果您的服务器有多个网络接口,请使用这些选项将 Samba 绑定到指定的接口。这使命令能够在加入期间在目录中注册正确的 LAN IP 地址。samba-tool

请勿用作 DNS 后端,它不受支持,并将在未来的 Samba 版本中删除。NONE

如果使用 Bind 作为 DNS 后端,请勿使用 ,它不受支持,并将在未来的 Samba 版本中删除。BIND9_FLATFILE

在 AD 域中预置第一个 DC 后,请勿在同一域中预置任何其他 DC,加入任何其他 DC。

在交互模式下配置 Samba AD

如上所述,当以 root 身份运行时,将自动配置您以构建域控制器。交互模式不会自动启用组策略支持。但是,可以在以后通过手动编辑 来添加此内容。samba-toolsmb.confsmb.conf

按照以下说明作时,在单独的浏览器选项卡或窗口中打开“组策略”页面可能会有所帮助。

安装 Samba 将创建一个文件,在交互模式下运行 Provisioning Tool 之前,必须丢弃该文件,否则将失败。在大多数 Linux 发行版上,这可以通过运行以下命令来完成: # mv /etc/samba/smb.conf /etc/samba/smb.conf.initialsmb.conf

删除现有文件后,通过运行以下命令以交互方式配置 Samba AD:smb.conf

# samba-tool domain provision --use-rfc2307 --interactive
Realm [SAMDOM.EXAMPLE.COM]: SAMDOM.EXAMPLE.COM
 Domain [SAMDOM]: SAMDOM
 Server Role (dc, member, standalone) [dc]: dc
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: SAMBA_INTERNAL
 DNS forwarder IP address (write 'none' to disable forwarding) [10.99.0.1]: 8.8.8.8
Administrator password: Passw0rd
Retype password: Passw0rd
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=samdom,DC=example,DC=com
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container                                                                                                                                                                                        
Modifying users container                                                                                                                                                                                     
Adding computers container                                                                                                                                                                                    
Modifying computers container                                                                                                                                                                                 
Setting up sam.ldb data                                                                                                                                                                                       
Setting up well known security principals                                                                                                                                                                     
Setting up sam.ldb users and groups                                                                                                                                                                           
Setting up self join                                                                                                                                                                                          
Adding DNS accounts                                                                                                                                                                                           
Creating CN=MicrosoftDNS,CN=System,DC=samdom,DC=example,DC=com                                                                                                                                                
Creating DomainDnsZones and ForestDnsZones partitions                                                                                                                                                         
Populating DomainDnsZones and ForestDnsZones partitions                                                                                                                                                       
Setting up sam.ldb rootDSE marking as synchronized                                                                                                                                                            
Fixing provision GUIDs                                                                                                                                                                                        
A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf                                                                                                        
Setting up fake yp server settings                                                                                                                                                                            
Once the above files are installed, your Samba4 server will be ready to use                                                                                                                                   
Server Role:           active directory domain controller                                                                                                                                                     
Hostname:              DC1                                                                                                                                                                                    
NetBIOS Domain:        SAMDOM                                                                                                                                                                                 
DNS Domain:            samdom.example.com                                                                                                                                                                     
DOMAIN SID:            S-1-5-21-2614513918-2685075268-614796884

交互式供应模式支持向命令传递更多参数。这使您能够修改不属于交互式设置的参数。samba-tool domain provision

在非交互模式下配置 Samba AD

例如,要使用以下设置以非交互方式预置 Samba AD:

  • 服务器角色:dc
  • 已启用 NIS 扩展
  • 内部 DNS 后端
  • Kerberos 领域和 AD DNS 区域:samdom.example.com
  • NetBIOS 域名:SAMDOM
  • 域管理员密码:Passw0rd
# samba-tool domain provision --server-role=dc --use-rfc2307 --dns-backend=SAMBA_INTERNAL --realm=SAMDOM.EXAMPLE.COM --domain=SAMDOM --adminpass=Passw0rd

设置 AD DNS 后端

如果您使用 DNS 后端预置了 DC,请跳过此步骤。SAMBA_INTERNAL

  • 启动 BIND DNS 服务器。例如:
# systemctl start named

有关如何启动服务的详细信息,请参阅发行版的文档。

配置 DNS 解析程序

AD 中的域成员使用 DNS 查找服务,例如 LDAP 和 Kerberos。为此,他们需要使用能够解析 AD DNS 区域的 DNS 服务器。

在您的 DC 上,在 中设置 AD DNS 域,在文件的参数中设置 DC 的 IP。例如:searchnameserver/etc/resolv.conf

search samdom.example.com
nameserver 10.99.0.1

不要添加任何其他行,您的 DC 应将自身用作其名称服务器,并从其 dns 服务器查找所有其他 dns 数据。

配置 Kerberos

在 AD 中,Kerberos 用于对用户、计算机和服务进行身份验证。

在预置期间,Samba 为您的 DC 创建了一个 Kerberos 配置文件。将此文件复制到作系统的 Kerberos 配置中。例如,如果您自己构建了 Samba:

# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf

您的路径可能会有所不同,请始终使用 provision 输出中的路径。但是,无论 Samba 在何处创建 ,您都需要将其复制到 。krb5.confkrb5.conf/etc/krb5.conf

不要创建指向所生成文件的符号链接。在 Samba 4.7 及更高版本中,除该用户外,其他用户无法再访问该目录。如果文件是符号链接,则其他用户无法读取该文件,例如,如果您使用 DNS 后端,则动态 DNS 更新将失败。krb5.conf/usr/local/samba/private/rootBIND_DLZ

预先创建的 Kerberos 配置使用 DNS 服务 (SRV) 资源记录来查找 KDC。

测试 Samba AD DC

要手动启动服务,请输入:samba

# samba

Samba 不提供 System V 初始化脚本、 或其他服务配置文件。systemdupstart

  • 如果使用包安装了 Samba,请使用包中包含的脚本或服务配置文件来启动 Samba。
  • 如果构建了 Samba,请参阅管理 Samba AD DC 服务

创建反向区域

您可以选择添加反向查找区域。

# samba-tool dns zonecreate <Your-AD-DNS-Server-IP-or-hostname> 0.99.10.in-addr.arpa -U Administrator
Password for [administrator@SAMDOM.EXAMPLE.COM]:
Zone 0.99.10.in-addr.arpa created successfully

如果您需要多个反向区域(多个子网),只需再次运行上述命令,但使用另一个子网的数据。

反向区域直接处于活动状态,无需重新启动 Samba 或 BIND。

您必须先启动 Samba AD DC,然后才能添加反向区域。


现在您已经创建了 reversezone,现在是为新 DC 创建(反向)dns 记录的好时机。PTR

对于 FQDN 为 且 ipaddress 为 的 DC 若要将记录添加到 ,请运行如下命令:dc1.samdom.example.com10.99.0.10.99.10.in-addr.arpa

# samba-tool dns add <Your-AD-DNS-Server-IP-or-hostname> 0.99.10.in-addr.arpa 1 PTR dc1.samdom.example.com -U Administrator
Password for [administrator@SAMDOM.EXAMPLE.COM]:
Record added successfully

反向记录不会自动添加,您必须手动添加它们,或者将 Windows 计算机设置为在更新其 dns 记录时添加它们。

验证文件服务器(可选)

要列出 DC 提供的所有共享:

Samba 4.11.0 之前的版本:

$ smbclient -L localhost -N
Anonymous login successful
Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z]

        Sharename       Type      Comment
        ---------       ----      -------
        netlogon        Disk      
        sysvol          Disk      
        IPC$            IPC       IPC Service (Samba x.y.z)
Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------

从 Samba 4.11.0 开始:

smbclient -L localhost -N
Anonymous login successful

    Sharename       Type      Comment
    ---------       ----      -------
    sysvol          Disk      
    netlogon        Disk      
    IPC$            IPC       IPC Service (Samba 4.12.6-Debian)
SMB1 disabled -- no workgroup available

和 共享是在预置期间自动创建的,必须存在于 DC 上。netlogonsysvol

要验证身份验证,请使用域管理员帐户连接到共享:netlogon

$ smbclient //localhost/netlogon -UAdministrator -c 'ls'
Enter Administrator's password: 
Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z]
 .                                   D        0  Tue Nov  1 08:40:00 2016
 ..                                  D        0  Tue Nov  1 08:40:00 2016

               49386 blocks of size 524288. 42093 blocks available

如果一个或多个测试失败,请参阅故障排除

验证 DNS(可选)

要验证您的 AD DNS 配置是否正常工作,请查询一些 DNS 记录:

  • 域中基于 tcp 的 SRV 记录:_ldap
$ host -t SRV _ldap._tcp.samdom.example.com.
_ldap._tcp.samdom.example.com has SRV record 0 100 389 dc1.samdom.example.com.
  • 域中基于 UDP 的 SRV 资源记录:_kerberos
$ host -t SRV _kerberos._udp.samdom.example.com.
_kerberos._udp.samdom.example.com has SRV record 0 100 88 dc1.samdom.example.com.
  • 域控制器的 A 记录:
$ host -t A dc1.samdom.example.com.
dc1.samdom.example.com has address 10.99.0.1
  • 如果您已创建反向区域,则域控制器的 PTR 记录:
$ host -t PTR 10.99.0.1
1.0.99.10.in-addr.arpa domain name pointer dc1.samdom.example.com.

如果一个或多个测试失败,请参阅故障排除

验证 Kerberos(可选)

这不是明确要求的,但最好验证域控制器的身份验证机制是否按预期运行。要对此进行测试,请通过请求域管理员账户的 Kerberos 票证来登录:

$ kinit administrator
Password for administrator@SAMDOM.EXAMPLE.COM:

如果未将 principal 以 format 传递给命令,则会自动附加 Kerberos 领域。
始终以大写形式输入 Kerberos 领域。user@REALMkinit
  • 列出缓存的 Kerberos 票证:
$ klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@SAMDOM.EXAMPLE.COM

Valid starting       Expires              Service principal
01.11.2016 08:45:00  12.11.2016 18:45:00  krbtgt/SAMDOM.EXAMPLE.COM@SAMDOM.EXAMPLE.COM
	renew until 02.11.2016 08:44:59

如果一个或多个测试失败,请参阅故障排除

配置时间同步(可选,具体取决于用例)

Kerberos 要求所有域成员的时间同步。有关更多详细信息以及如何设置 or 服务,请参阅时间同步。但是,如果将 Samba 用作域控制器来管理组策略,则可以定义一个组策略对象,该对象将工作站与安装后同步,从而简化此作ntpdchronytime.windows.com

将域控制器用作文件服务器(可选)

如果您有多个 DC,请不要将 AD DC 用作文件服务器。如果 DC 是域中运行的唯一 Samba 实例,则只应将 DC 用作文件服务器。如果您有多个 DC,则还应设置 Unix 域成员并将其用作文件服务器。您应该知道,将 DC 用作文件服务器是有问题的,并且可能会导致奇怪的错误。


虽然 Samba AD DC 能够像所有其他安装模式一样提供文件共享,但 Samba 团队不建议将 DC 用作文件服务器,原因如下:

  • 对于除最小组织之外的任何组织,拥有多个 DC 都是一种非常好的备份措施,并且使升级更安全
  • 它鼓励每隔一两年升级一次 DC 和主机作系统,因为没有复杂的数据需要转换或涉及其他服务。
  • 这意味着可以通过安装新内容并复制更改来完成升级,这在 Samba 中得到了更好的测试,获得了新功能并避免了许多挥之不去的数据损坏风险。
  • DC 和文件服务器具有不同的组织希望升级的点。对 DC 和文件服务器上的新功能的需求是在不同的时间出现的。目前,AD DC 正在迅速发展以获得功能,而文件服务器在 20 多年后更加保守。
  • 在 DC 上强制实施强制 SMB 签名。


如果您决定将 Samba DC 用作文件服务器,请考虑在 DC 上运行一个包含单独 Samba Unix 域成员的 VM,并改用它。

如果必须将 Samba DC 用作文件服务器,则应注意,自动启用的虚拟文件系统 (VFS) 对象仅允许使用 Windows 访问控制列表 (ACL) 配置共享。在 Samba DC 上将 POSIX ACL 与共享一起使用不起作用。acl_xattr

您应该知道,如果希望在 DC 共享上使用 vfs 对象(例如 recycle),则不能只在共享中进行设置。这样做将关闭默认的 vfs 对象和 .您必须设置 .vfs objects = recycledfs_samba4acl_xattrvfs objects = dfs_samba4 acl_xattr recycle

要提供具有 Samba 全部功能的网络共享,请设置具有文件共享的 Samba 域成员。有关详细信息,请参阅:


如果您只有一个小型域(小型办公室、家庭网络),并且不想遵循 Samba 团队的建议并将 DC 额外用作文件服务器,请在开始设置共享之前配置 Winbindd。有关详细信息,请参阅在 Samba AD DC 上配置 Winbindd

如果您确实将 AD DC 用作文件服务器,则必须意识到它可能会出现问题,并可能导致奇怪的错误。

如果您确实使用 AD DC 作为文件服务器,请不要添加 Unix 域成员上使用的任何“idmap config”行。它们不会工作,并且会引起问题。

如果您确实使用 AD DC 作为文件服务器,则必须从 Windows 设置权限,请勿尝试使用任何旧方法(强制用户等)。它们将无法正常工作并导致问题。

故障 排除

有关更多详细信息,请参阅 Samba AD DC 故障排除

更多与 Samba 相关的文档

请参阅用户文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值