将CentOS 8加入/添加到Windows域控制器(RHEL 8)的步骤
如何使用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