CentOS7加入AD域(winbind)

2023-02-24 18:01:12

作者:獨筆孤行
官網:​​ ​http://anyamaze.com​​
公眾號:雲實戰

前言

AD域(Active Directory)是Windows伺服器的活動目錄,在目錄中可以收錄公司的電腦賬號,使用者賬號,組等資訊,以提供更好的安全性和更便捷的管理能力。域的最大好處之一就是其安全性 – 所有賬號不會在本地計算機認證,而是連線到域控制器尋求認證。

CentOS7加入AD域的方法很多,常用的有winbind和realm兩種。winbind是一種成熟的方案,相容多種作業系統版本,但設定步驟繁瑣複雜,且易出錯。realm是一種非常簡便的設定方案,在新版本系統中使用較多,在centos6和更低版本系統使用較少。

一、環境資訊

AD域資訊

域名:anyamaze.com

主機名:myad

IP : 192.168.111.137

系統版本:windows server 2016

linux使用者端資訊
主機名:mynode1.anyamaze.com

IP: 192.168.111.141

二、安裝過程

(一)AD域伺服器部署

1.部署windows Server2016作業系統

2.選擇「伺服器管理器—管理—新增角色和功能—基於角色或基於功能的安裝—Active Directory域服務」根據提示依次安裝

3.修改主機名,將伺服器提示為域控伺服器

(二)CentOS7加入域設定

1.安裝相關包

yum install -y samba samba-common samba-client samba-winbind* krb5-workstation ntp bind-utils

2.設定服務開機自啟動

systemctl enable smb
systemctl enable winbind

3.設定主機名

hostnamectl set-hostname mynode1.anyamaze.com

4.設定域名解析

192.168.111.137 myad myad.anyamaze.com
192.168.111.141 mynode1 mynode1.anyamaze.com

5.設定DNS解析

設定網路卡DNS解析,解析地址為AD域伺服器IP,如需其它DNS,可放在AD域伺服器IP之後

vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
...
DNS1=192.168.111.137

#重啟網路卡,使設定生效
systemctl restart network

檢查/etc/resolv.conf檔案內容

vim /etc/resolv.conf
search anyamaze.com
nameserver 192.168.111.137

需確保resolve.conf檔案DNS解析內容為AD域伺服器,如果需要其它DNS,可向後追加。

檢測解析是否生效

ping anyamaze.com
nslookup anyamaze.com

注意:確保ping的返回ip為AD域伺服器ip,確保nslookup解析域名的伺服器IP是AD域伺服器IP。如果ping不通域名或解析的地址不是AD域伺服器IP,需要檢查DNS是否正確,檢查AD域伺服器防火牆是否關閉。

6.修改組態檔

vi /etc/nsswitch.conf
...
passwd:     files winbind sss
shadow:     files winbind sss
group:      files winbind sss

設定內容加入winbind,且winbind在sss之前

7.修改/etc/krb5.conf

[libdefaults]
......
 default_realm = ANYAMAZE.COM
......
[realms]
ANYAMAZE.COM = {
   kdc = 192.168.111.137
 }
[domain_realm]
 anyamaze.com = ANYAMAZE.COM
 .anyamaze.com = ANYAMAZE.COM

8.修改/etc/samba/smb.conf

[global]
   workgroup = ANYAMAZE
   password server = myad.anyamaze.com
   realm = ANYAMAZE.COM
   security = ads
   idmap config * : range = 16777216-33554431
   template shell = /bin/bash
   kerberos method = secrets only
   winbind use default domain = false
   winbind offline logon = false
   encrypt passwords = yes
   winbind enum users = yes
   winbind enum groups = yes
   template homedir = /home/%U

global中必須保證以上引數內容設定正確,其它引數可保持預設設定。如果linux系統有圖形化介面,也可通過setup命令,完成步驟7和步驟8的設定內容,效果一樣。

檢查設定是否正確

testparm /etc/samba/smb.conf

9.編輯檔案/etc/pam.d/system-auth和/etc/pam.d/password-auth,尾部追加session required pam_mkhomedir.so 內容

vi /etc/pam.d/system-auth
......
session required pam_mkhomedir.so


vi /etc/pam.d/password-auth
......
session required pam_mkhomedir.so

10.加入AD域

net ads join -U administrator

輸入正確的administrator使用者密碼

11.重啟服務

systemctl restart smb
systemctl restart winbind

12.檢視是否加入域成功

wbinfo -t

返回結果為checking the trust secret for domain ANYAMAZE via RPC calls succeeded說明加入域成功

加入成功後,去AD域伺服器可查到到剛剛加入域的機器

13.常規域指令

# 檢視域資訊
net ads info
# 檢視域連線狀態
wbinfo -t
# 檢視域組
wbinfo -g
# 檢視域使用者
wbinfo -u
#檢視域使用者屬性id
id [email protected]

(三)常見報錯:

報錯內容1:

[root@mynode1 ~]# id user1
id: user1: no such user
[root@mynode1 ~]# id [email protected]
id: [email protected]: no such user

原因:1.通過wbinfo -t檢查是否加入域成功;2.AD域使用者沒有設定uid和gid,主組沒有設定gid,需要去AD域上進行設定

報錯內容2:

[root@mynode1 ~]# net ads join -U administrator
Enter administrator's password:
Using short domain name -- ANYAMAZE
Joined 'MYNODE1' to dns domain 'anyamaze.com'
No DNS domain configured for mynode1. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER

原因:DNS更新失敗,但不影響使用,可以加--no-dns-updates遮蔽,如:net ads join -U administrator --no-dns-updates。

關於原因官網 https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Domain_Member 有詳細解釋,但是按照官網的資訊調整hosts後,依然沒有達到效果。

報錯內容3:

[root@mynode1 ~]# wbinfo -t
could not obtain winbind interface details: WBC_ERR_WINBIND_NOT_AVAILABLE
could not obtain winbind domain name!
checking the trust secret for domain (null) via RPC calls failed
failed to call wbcCheckTrustCredentials: WBC_ERR_WINBIND_NOT_AVAILABLE
Could not check secret

原因:加入域失敗,按照操作步驟檢查dns解析以及相關設定過程

報錯內容4:

[root@mynode1 ~]# net ads leave -U administrator
Enter administrator's password:
kinit succeeded but ads_sasl_spnego_gensec_bind(KRB5) failed for ldap/myad.anyamaze.com with user[administrator] realm[ANYAMAZE.COM]: An invalid parameter was passed to a service or function.
Deleted account for 'MYNODE1' in realm 'ANYAMAZE.COM'

原因:linux和AD域伺服器時間相差較大,必須保證linux使用者端和AD域時間一致

參考連線:

https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Domain_Member

https://www.freesion.com/article/44621398696/

https://www.server-world.info/en/

更多諮詢,關注我們