使用 Samba Winbind将CentOS 8/RHEL 8加入到 Windows AD的步骤

9 篇文章 0 订阅

如何使用 Samba Winbind 将 RHEL 8 系统加入 Active Directory 服务器。

如何针对 Windows 2003 R2 / 2008 / 2008 R2 / 2012 AD 域对 RHEL 8 服务器进行身份验证。

如何将 CentOS 8 添加到 Windows 域控制器。

将 CentOS 8 添加到 Windows 域控制器的分步指南。

将 RHEL 8 加入 Active Directory 的步骤。

如何将 CentOS 8 加入 Windows Server 上的 Active Directory。

将 CentOS 8 加入到在 WIndows Server 2012 上运行的 Windows 域控制器的步骤。

将 linux 加入到 Windows 活动目录的步骤。

winbind 服务是 Samba 套件的一部分。 它使 Linux 服务器成为 Windows 域中的正式成员,并在 Linux 中使用 Windows 用户和组帐户。

实验室环境概述

为了演示本文将 CentOS 8 添加到 Windows 域控制器 (Active Directory),我们将使用安装CentOS 8的 Linux 服务器。

有一个IP 地址为 192.168.0.107 的 Microsoft Server 2012 R2 Active Directory 域控制器、IP 地址为 192.168.0.117 的 CentOS 8 主机。 所以本文需要一个预配置的 Windows Active Directory。

准备 Linux 客户端以加入 Windows Active Directory

要将 CentOS 8 添加到 Windows 域控制器,需要更改 DNS 设置,以便首先查询 Active Directory 域 DNS 服务器:

[root@centos-8 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search golinuxcloud.com
nameserver 192.168.0.107

此处 192.168.0.107 是Windows Active Directory 的 IP 地址,它也被配置为 DNS 服务器。

为了确保我们的服务器可以通过查询 DNS 服务器来解析主机名,可以使用 nslookup 命令。

[root@centos-8 ~]# nslookup golinuxcloud.com
Server:		192.168.0.107
Address:	192.168.0.107#53

Name:	golinuxcloud.com
Address: 192.168.0.107

安装 Winbind 软件包

要将CentOS 8 添加到Windows 域控制器,需要在客户端主机上安装所需的 samba 包

[root@centos-8 ~]# dnf install samba samba-client  samba-winbind samba-winbind-clients oddjob oddjob-mkhomedir

使用 smb.conf 配置 Winbind

通过将 [global] 部分下的现有内容替换为以下内容来配置 /etc/samba/smb.conf,以将 Linux 添加到 Windows 活动目录。 根据实际的环境修改realmworkgroup

还可以使用 Red Hat的AD集成助手来帮助生成最佳配置值,以连接到组织 Active Directory。

[global]
        workgroup = GOLINUXCLOUD
        realm = GOLINUXCLOUD.COM
        security = ads
        idmap config * : backend = autorid
        idmap config * : range = 100000-19999999
        idmap config * : rangesize = 1000000
        template homedir = /home/%D/%U
        template shell = /bin/bash
        winbind use default domain = false
        winbind offline logon = true
        log file = /var/log/samba/log.%m
        max log size = 50
        log level = 0

security=ads 描述 Active Directory 域中的成员资格。

参数idmap* winbind enum* 将 Windows 用户和组映射到 Unix 用户和组。

通常系统用户和组分配的 ID 范围从 0 到 999,本地用户和组分配的 ID 从 1000 开始。考虑到这一点,从 1000000 开始为域用户和组分配 ID 似乎很合理。我们还应该区分域用户和组以及成员服务器上存在的本地内置帐户,例如本地管理员、本地访客等。这两个组不能重叠,因此我们将1000000到19999999的范围分配给域内置用户和组帐户。

运行以下命令以验证是否可以解析标准 SRV 记录:

[root@centos8 ~]# host -t SRV _kerberos._udp.golinuxcloud.com.
_kerberos._udp.golinuxcloud.com has SRV record 0 100 88 win-71humtros3m.golinuxcloud.com.


[root@centos8 ~]# host -t SRV _ldap._tcp.golinuxcloud.com.
_ldap._tcp.golinuxcloud.com has SRV record 0 100 389 win-71humtros3m.golinuxcloud.com.

如果 winbind 服务处于运行状态,则停止它:

[root@centos8 ~]# systemctl stop winbind

将 CentOS 8 加入到 Windows 域控制器

通过在客户端主机上执行 net ads join -U Administrator 将 Linux 客户端加入 Windows Active Directory:

[root@stor106 ~]# net ads join -U Administrator
Enter Administrator's password:
Using short domain name -- GOLINUXCLOUD
Joined 'CENTOS8' to dns domain 'golinuxcloud.com'

使用 Samba Winbind 将 Linux 客户端加入 Windows AD 时,可能会收到以下错误。

Joined 'centos-8' to dns domain 'GOLINUXCLOUD.COM'
DNS Update for centos-8.golinuxcloud.com failed: ERROR_DNS_UPDATE_FAILED
DNS update failed: NT_STATUS_UNSUCCESSFUL
如何修复“DNS Update for DOMAIN failed。 ERROR_DNS_UPDATE_FAILED”?

可以选择在将 CentOS 8 添加到 Windows 域控制器时避免执行任何 DNS 更新,方法是使用

# net ads join -U Administrator --no-dns-updates  golinuxcloud.com

或者要修复上面观察到的 ERROR_DNS_UPDATE_FAILED 错误,请执行以下步骤

将以下信息添加到 /etc/hosts

# echo "127.0.0.1 `hostname` `hostname -a`" >> /etc/hosts

确保 DNS 服务器的 IP 地址在 /etc/resolv.conf 中。 IP 地址应该是您要更新新 DNS ‘A’ 记录的 DNS 服务器。

# cat /etc/resolv.conf
search golinuxcloud.com
nameserver 192.168.0.107

在 Windows 域控制器上,为服务器选择“DNS 管理器”。 在正向查找区域中选择服务器,然后右键单击以打开属性。 在 Windows DNS 服务器上选择“仅安全”或“不安全且安全”的动态更新。

Steps to add CentOS 8 to Windows Domain Controller (AD) (RHEL 8)

接下来重启 DNS 服务以激活更改并重新尝试将 CentOS 8 添加到 Windows 域控制器

[root@centos-8 ~]# net ads join -U Administrator golinuxcloud.com
Enter Administrator's password:
Using short domain name -- GOLINUXCLOUD
Joined 'centos-8' to dns domain 'GOLINUXCLOUD.COM'

验证 Linux 客户端和 Windows AD 之间的连接

可以使用 testparm 命令轻松检查服务器是否是域的成员。

[root@centos-8 ~]# testparm -s
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER


# Global parameters
[global]
        log file = /var/log/samba/log.%m
        max log size = 50
        realm = GOLINUXCLOUD.COM
        security = ADS
        template shell = /bin/bash
        winbind offline logon = Yes
        workgroup = GOLINUXCLOUD
        idmap config * : rangesize = 1000000
        idmap config * : range = 100000-19999999
        idmap config * : backend = autorid


[homes]
        browseable = No
        comment = Home Directories
        inherit acls = Yes
        read only = No
        valid users = %S %D%w%S


[printers]
        browseable = No
        comment = All Printers
        create mask = 0600
        path = /var/tmp
        printable = Yes


[print$]
        comment = Printer Drivers
        create mask = 0664
        directory mask = 0775
        force group = @printadmin
        path = /var/lib/samba/drivers
        write list = @printadmin root

成功将 Linux 服务器加入 Windows Active Directory 后,必须重启 Winbind 并启用该服务以在启动时自动启动:

[root@centos-8 ~]# systemctl enable winbind --now
Created symlink /etc/systemd/system/multi-user.target.wants/winbind.service → /usr/lib/systemd/system/winbind.service.

检查Winbind服务状态

[root@centos-8 ~]# systemctl status winbind
● winbind.service - Samba Winbind Daemon
   Loaded: loaded (/usr/lib/systemd/system/winbind.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2019-10-18 14:48:25 IST; 20s ago
     Docs: man:winbindd(8)
           man:samba(7)
           man:smb.conf(5)
 Main PID: 1756 (winbindd)
   Status: "winbindd: ready to serve connections..."
    Tasks: 2 (limit: 11506)
   Memory: 6.6M
   CGroup: /system.slice/winbind.service
           ├─1756 /usr/sbin/winbindd --foreground --no-process-group
           └─1758 /usr/sbin/winbindd --foreground --no-process-group

Oct 18 14:48:25 centos-8.golinuxcloud.com systemd[1]: Starting Samba Winbind Daemon...

客户端验证

将 CentOS 8 添加到 Windows 域控制器后,需要在客户端主机(即 CentOS 8)上运行一些检查,以确保它能够正确访问 Active Directory。

可以使用 wbinfo -t 测试一切是否正常工作。 该命令运行加密的 RPC 调用,这仅在服务器确实是域中的成员时才有可能:

[root@centos-8 ~]# wbinfo -t
checking the trust secret for domain GOLINUXCLOUD via RPC calls succeeded

列出 AD 用户。

[root@centos-8 ~]# wbinfo -u
GOLINUXCLOUD\administrator
GOLINUXCLOUD\guest
GOLINUXCLOUD\krbtgt

列出 AD 组。

[root@centos-8 ~]# wbinfo -g
GOLINUXCLOUD\winrmremotewmiusers__
GOLINUXCLOUD\domain computers
GOLINUXCLOUD\domain controllers
GOLINUXCLOUD\schema admins
GOLINUXCLOUD\enterprise admins
GOLINUXCLOUD\cert publishers
GOLINUXCLOUD\domain admins
GOLINUXCLOUD\domain users
GOLINUXCLOUD\domain guests
GOLINUXCLOUD\group policy creator owners
GOLINUXCLOUD\ras and ias servers
GOLINUXCLOUD\allowed rodc password replication group
GOLINUXCLOUD\denied rodc password replication group
GOLINUXCLOUD\read-only domain controllers
GOLINUXCLOUD\enterprise read-only domain controllers
GOLINUXCLOUD\cloneable domain controllers
GOLINUXCLOUD\protected users
GOLINUXCLOUD\dnsadmins
GOLINUXCLOUD\dnsupdateproxy

配置 NSS 和 PAM 堆栈以进行身份验证

执行以下命令配置 NSS 和 PAM 堆栈。 使用 with-mkhomedir 来确保活动目录用户在登录时自动创建主目录。

[root@centos8 ~]# authselect select winbind with-mkhomedir --force
Backup stored at /var/lib/authselect/backups/2021-03-03-19-16-20.jS4CgG
Profile "winbind" was selected.
The following nsswitch maps are overwritten by the profile:
- passwd
- group

Make sure that winbind service is configured and enabled. See winbind documentation for more information.

- with-mkhomedir is selected, make sure pam_oddjob_mkhomedir module
  is present and oddjobd service is enabled
  - systemctl enable oddjobd.service
  - systemctl start oddjobd.service

确保 /etc/nsswitch.conf 具有以下passwd 和group条目。 在此文件中,必须告诉 Linux 在尝试在 Linux 上进行本地身份验证之前它应该使用 Winbind。

passwd:     files winbind
group:      files winbind

启用并启动/重启oddjobd服务:

[root@centos8 ~]# systemctl enable oddjobd --now

测试解析 AD 用户和组以及用户的身份验证。

[root@centos8 ~]# getent passwd GOLINUXCLOUD\\administrator
GOLINUXCLOUD\administrator:*:1100500:1100513::/home/GOLINUXCLOUD/administrator:/bin/bash

[root@centos8 ~]# id GOLINUXCLOUD\\administrator
uid=1100500(GOLINUXCLOUD\administrator) gid=1100513(GOLINUXCLOUD\domain users) groups=1100513(GOLINUXCLOUD\domain users),1100500(GOLINUXCLOUD\administrator),1100572(GOLINUXCLOUD\denied rodc password replication group),1100518(GOLINUXCLOUD\schema admins),1100519(GOLINUXCLOUD\enterprise admins),1100520(GOLINUXCLOUD\group policy creator owners),1100512(GOLINUXCLOUD\domain admins),100001(BUILTIN\users),100000(BUILTIN\administrators)

在 Linux 客户端上以 Active Directory 用户身份登录

现在可以尝试在此 CentOS 8 客户端上以任何 Active Directory 用户身份登录。 不需要为域用户手动创建主目录,因为这将由oddjob-mkhomedir rpm 提供的 /usr/lib64/security/pam_oddjob_mkhomedir.so 模块处理。

[root@centos8 ~]# su - GOLINUXCLOUD\\Administrator
Creating home directory for GOLINUXCLOUD\administrator.
Last login: Thu Mar  4 00:46:12 IST 2021 on pts/0

[GOLINUXCLOUD\administrator@centos8 ~]$ pwd
/home/GOLINUXCLOUD/administrator

如您所见,我们的管理员用户的主目录是在第一次登录时自动创建的。

总结

Winbind 可以与不同的 idmap 后端 idmap_tdbidmap_ldapidmap_rididmap_sssidmap_ad 一起使用。 这些后端将帮助 Red Hat Enterprise Linux 系统找出 SID 到 uid/gid 的映射。 如果您使用的是 winbind,则需要为您的环境选择最合适的后端。 即,如果这是针对单个系统的,那么在多个系统中保持 uid/gid 信息相同并不重要。 默认的 tdb 后端可能是合适的。 如果需要 uid/gid 信息在许多系统中保持一致,则其它后端之一将更合适。 即:autoridrid

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值