Linux

連接到 Active Directory(可能使用 winbind)

  • July 4, 2018

我試圖弄清楚如何將 Linux 環境身份驗證系統集成到 Windows server 2012,我找到了一種使用winbind.

我搜尋了Google,有幾個頁面介紹瞭如何從同步時間到配置一些配置文件。

我在 Linux 中設置主機名和主機,如下所示。

[/等/主機]
192.168.XXX.XX1 test1.example.com 範例 ## Windows IP
192.168.XXX.XX2 test1 ## Linux IP

[/etc/主機名]
測試1

我設置了一個具有以下屬性的 Active Directory,並且有兩個帳戶。

電腦名稱:TEST1
域名:example.com
帳戶 1:管理員
帳戶 2:測試人員 1

所以,我將Linux環境DNS設置為AD的IP地址。可以查看“resolv.conf”中的資訊。

[root ~]# nslookup example.com
伺服器:192.168.xxx.xx1
地址:192.168.xxx.xx1#53

名稱:example.com
地址:192.168.xxx.xxx

在“nsswitch.conf”中,我只在“文件”旁邊添加了“winbind”字樣。

密碼:文件 winbind
影子:文件 sss winbind
組:文件 winbind

在“krb5.conf”中,我更改了查找部分和預設領域。

[libdefaults]
dns_lookup_realm = 真
dns_lookup_kdc = 真
default_realm = 範例.COM
[領域]
DOMAIN.COM = {
kdc = example.com
admin_server = example.com
}
[domain_realm]
.domain.com = EXAMPLE.COM
domain.com = EXAMPLE.COM

最後,我設置了smb.conf. 但是,有很多不同的方法可以設置它,所以我不確定。剛剛選擇了其中一個 Google 頁面。

當我嘗試使用“管理員”ID 連接到 Windows Server 時,它顯示以下錯誤:

[root ~]# 網路廣告加入 -U 管理員
gse_get_client_auth_token:gss_init_sec_context 因 [未指定的 GSS 故障而失敗。次要程式碼可能會提供更多資訊:消息流已修改](2529638953)
kinit 成功,但 ads_sasl_spnego_gensec_bind(KRB5) 使用使用者 [Administrator] 領域 [EXAMPLE.COM] 的 ldap/test1.example.com 失敗:嘗試登錄無效。這可能是由於使用者名或身份驗證資訊錯誤造成的。
加入域失敗:連接AD失敗:嘗試登錄無效。這可能是由於使用者名或身份驗證資訊錯誤造成的。

我被困在這一步,我在Google中找不到解決方法。我需要編輯一些文件/etc/pam.d嗎?

使用工具’testparm’ aboutsmb.conf後,最後我找不到任何問題,但現在使用“net ads testjoin”時顯示以下消息。

ads_connect:目前沒有可用於服務登錄請求的登錄伺服器。

撤消所有更改並從 AD 中刪除電腦帳戶。取出winbind包裝。

安裝合適的軟體包選擇。在基於 Debian 的系統上,您可以使用apt-get install samba smbclient sssd realmd dnsutils policykit-1 packagekit sssd-tools sssd libnss-sss libpam-sss adcli.

sssd如果無法啟動,請不要擔心。它需要使用realm命令進行配置,我們稍後會解決這個問題。

確保您的本地基於 Linux 的系統在其 DNS 伺服器上有您的 DC。不要添加任何額外的 DNS 伺服器,除非它是您的 Active Directory 環境的一部分。如果您只是編輯/etc/resolv.conf並忽略“請勿編輯此文件”警告,您的更改可能會被覆蓋。此時,您的系統將無法對任何人進行身份驗證,甚至可能最終脫離域。(此時使用者往往會不高興。)

確保您的本地時間與 Active Directory 中的時間相匹配,因為 Kerberos 不會在大於約 5 分鐘(300 秒)的偏差下工作。

對於您的本地域contoso.com,以 root 身份執行這三個命令:

domain=contoso.com          # The FQDN itself. Not machine.FQDN
realm discover "$domain"    # If this fails, stop and recheck everything
realm join "$domain"        # [--user <ad_username>] [--computer-ou <ou>]

如果您需要為 提供一個 AD 帳戶名稱realm join,請使用realm join --user <ad_username> "$domain",其中<ad_username>表示不合格sAMAccountName。即使您不是域管理員,您自己的 AD 帳戶也應該為至少十個客戶端工作,但administrator如果您知道其密碼,這是一個有用的選擇。該--computer-ou選項允許您指定帳戶的初始 OU。除非您知道其正確值(不要猜測),否則請將此留空。

修復sssd.conf文件。ad_hostname對於某些版本來說,這是解決錯誤所必需的。LDAP 組嵌套級別允許sssd處理嵌套組的成員資格。

sed -i "/^ad_domain /s/$/\nad_hostname = $(hostname).$domain/" /etc/sssd/sssd.conf
( echo; echo 'ldap_group_nesting_level = 5'; echo 'ldap_use_tokengroups = false' ) >>/etc/sssd/sssd.conf
service sssd restart

引用自:https://unix.stackexchange.com/questions/451028