将CentOS 8加入/添加到Windows域控制器(RHEL 8)的步骤

时间:2020-01-09 10:41:06  来源:igfitidea点击:

如何使用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)的过程,我们将使用在Linux Server虚拟化环境中安装的Oracle VirtualBox中运行的虚拟机。

我们有一个IP地址为192.168.0.101的Microsoft Server 2012R2 Active Directory域控制器,IP地址为192.168.0.115的CentOS 8主机和IP地址为192.168.0.106的RHEL 8. 在本文中,我仅介绍在客户端将CentOS 8添加到Windows Domain Controller的部分。
因此,本文需要预配置的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 theitroad.com
nameserver 192.168.0.101

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

为了确保我们的服务器可以通过查询DNS服务器或者内部/etc/hosts文件来解析主机名,我们可以使用getent命令。

[root@centos-8 ~]# getent hosts theitroad.com
192.168.0.101   theitroad.com
10.0.2.13       theitroad.com

安装Samba软件包

说明:

在RHEL系统上,我们必须具有RHN的活动订阅,或者我们可以配置本地脱机存储库,通过该本地脱机存储库,yum或者" dnf"程序包管理器可以安装提供的rpm及其依赖项。

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

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

通过在[global]部分下添加以下内容来配置/etc/samba/smb.conf,以将Linux添加到Windows活动目录中。
根据环境修改领域和工作组值。

[global]
        kerberos method = secrets and keytab
        realm = theitroad.COM
        security = ADS
        template shell = /bin/bash
        winbind enum groups = Yes
        winbind enum users = Yes
        winbind separator = +
        workgroup = theitroad
        idmap config * : rangesize = 1000000
        idmap config * : range = 1000000-19999999
        idmap config * : backend = autorid

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

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

对于winbind分隔符,我们应该选择一个与Unix兼容的字符,通常为" +",以将域与用户名分开,例如在" EXAMPLE + wob"中。

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

将CentOS 8加入/添加到Windows域控制器

通过在客户端主机上执行net,我们将Linux客户端与Windows Active Directory结合在一起:

[root@centos-8 ~]# net ads join -U Administrator  theitroad.com
Enter Administrator's password:
Using short domain name -- theitroad
Joined 'centos-8' to dns domain 'theitroad.COM'
DNS Update for centos-8.theitroad.com failed: ERROR_DNS_UPDATE_FAILED
DNS update failed: NT_STATUS_UNSUCCESSFUL

如我们所见,其中我们可以成功地将CentOS 8添加到Windows域控制器,但是几乎没有与DNS相关的错误消息。

如何修复" ERROR_DNS_UPDATE_FAILED"?

我们可以选择避免在将CentOS 8添加到Windows Domain Controller时进行任何DNS更新。

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

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

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

# echo "192.168.0.115   centos-8.theitroad.com centos-8" >> /etc/hosts

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

# cat /etc/resolv.conf
search theitroad.com
nameserver 192.168.0.101

在Windows DNS服务器上选择"仅安全"或者"不安全"的动态更新。

接下来,我们可以重新尝试将CentOS 8添加到Windows域控制器

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

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

[root@centos-8 ~]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
'winbind separator = +' might cause problems with group membership.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions
# Global parameters
[global]
        kerberos method = secrets and keytab
        printcap name = cups
        realm = theitroad.COM
        security = ADS
        template shell = /bin/bash
        winbind enum groups = Yes
        winbind enum users = Yes
        winbind separator = +
        workgroup = theitroad
        idmap config * : range = 1000000-19999999
        idmap config * : rangesize = 1000000
        idmap config * : backend = autorid
        cups options = raw

[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.theitroad.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 theitroad via RPC calls succeeded

列出AD用户。

[root@centos-8 ~]# wbinfo -u
theitroad+administrator
theitroad+guest
theitroad+krbtgt

列出AD组。

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

运行authselect列出可用的配置文件

# authselect list 
- nis            Enable NIS for system authentication
- sssd           Enable SSSD for system authentication (also for local users only)
- winbind        Enable winbind for system authentication

选择winbind配置文件,这里我们使用了--force来覆盖某些系统文件

[root@centos-8 ~]# authselect select winbind --force
Backup stored at /var/lib/authselect/backups/2019-10-18-09-21-15.ah1i42
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.

但是在覆盖之前,将备份原始文件,就我而言,我们可以在以下位置找到原始文件

[root@centos-8 ~]# ls -l /var/lib/authselect/backups/2019-10-18-09-21-15.ah1i42/
total 24
-rw-r--r--. 1 root root  701 Oct 18 14:51 fingerprint-auth
-rw-r--r--. 1 root root 1516 Oct 18 14:51 nsswitch.conf
-rw-r--r--. 1 root root  760 Oct 18 14:51 password-auth
-rw-r--r--. 1 root root  398 Oct 18 14:51 postlogin
-rw-r--r--. 1 root root  743 Oct 18 14:51 smartcard-auth
-rw-r--r--. 1 root root  760 Oct 18 14:51 system-auth

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

passwd:     files winbind systemd
group:      files winbind systemd

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

[root@centos-8 ~]# getent passwd theitroad+Administrator
theitroad+administrator:*:2000500:2000513::/home/theitroad/administrator:/bin/bash
[root@centos-8 ~]# id theitroad+Administrator
uid=2000500(theitroad+administrator) gid=2000513(theitroad+domain users) groups=2000513(theitroad+domain users),2000500(theitroad+administrator),2000572(theitroad+denied rodc password replication group),2000518(theitroad+schema admins),2000519(theitroad+enterprise admins),2000520(theitroad+group policy creator owners),2000512(theitroad+domain admins)

从Kerberos获取TGT

要从Kerberos获取TGT,我们可以使用kinit命令。
该实用程序包含在krb5-workstation软件包中。

[root@centos-8 ~]# yum -y install krb5-workstation

用yum安装它之后,我们可以获得带有kinit的TGT:

[root@centos-8 ~]# kinit [email protected]
Password for [email protected]:

我们还可以使用klist列出票证。

[root@centos-8 ~]# klist
Ticket cache: KCM:0
Default principal: [email protected]
Valid starting       Expires              Service principal
10/19/2019 04:12:40  10/19/2019 14:12:40  krbtgt/[email protected]
        renew until 10/26/2019 04:12:37