Active-Directory
如何使用 security/sssd 將 Active Directory 與 FreeBSD 10.0 集成?
sssd
使用帶有 Kerberos TGT 的 AD 後端,從在 FreeBSD 10.0 中的 Windows Server 2012 R2 上執行的 Active Directory 對使用者進行身份驗證所需的步驟是什麼?
有一些棘手的考慮因素可以使一切開箱即用。FreeBSD 目前只支持
sssd
1.9.6 版本。所以不支持企業主體名稱。如果您的域具有不匹配的 UPN,它將無法登錄,因為在此過程中 Kerberos 身份驗證將失敗,即使 FreeBSD 支持帶有 Kerberos 的企業主體名稱,
sssd
也無法處理這種情況。因此,在您的實際版本中,
sssd
您的使用者主體名稱僅限於同一域名中,例如:Domain Name = example.com NetBIOS Name = EXAMPLE User Principal Name: username@example.com sAMAccountName: username
知道了這一點,我們可以描述在 FreeBSD 中從 AD 成功驗證使用者的步驟。
- 配置 Kerberos
創建
/etc/krb5.conf
具有以下內容的文件:[libdefaults] default_realm = EXAMPLE.COM dns_lookup_realm = true dns_lookup_kdc = true ticket_lifetime = 24h renew_lifetime = 7d forwardable = yes
2.安裝Samba 4.1並配置加入域
安裝 Samba 4.1:
$ pkg install samba41
創建
/usr/local/etc/smb4.conf
具有以下內容的文件:[global] security = ads realm = EXAMPLE.COM workgroup = EXAMPLE kerberos method = secrets and keytab client signing = yes client use spnego = yes log file = /var/log/samba/%m.log
索取管理員 Kerberos 票證:
$ kinit Administrator
然後加入域並創建一個keytab
$ net ads join createupn=host/server-hostname.example.com@EXAMPLE.COM -k $ net ads keytab create -k
- 安裝支持 Kerberos 的 sssd 包和 Cyrus SASL
安裝所需的軟體包:
$ pkg install sssd cyrus-sasl-gssapi
編輯文件
/usr/local/etc/sssd/sssd.conf
以匹配此設置:[sssd] config_file_version = 2 services = nss, pam domains = example.com [nss] [pam] [domain/example.com] # Uncomment if you need offline logins #cache_credentials = true id_provider = ad auth_provider = ad access_provider = ad chpass_provider = ad # Comment out if the users have the shell and home dir set on the AD side default_shell = /bin/tcsh fallback_homedir = /home/%u # Uncomment and adjust if the default principal SHORTNAME$@REALM is not available #ldap_sasl_mech = GSSAPI #ldap_sasl_authid = SERVER-HOSTNAME$@EXAMPLE.COM
- nsswitch.conf 中添加 sssd 支持
編輯文件
/etc/nsswitch.conf
以匹配此設置:group: files sss passwd: files sss
- 配置 PAM 以允許 sssd 身份驗證並處理主目錄創建
安裝用於創建主目錄的可選包:
$ pkg install pam_mkhomedir
修改必要的
PAM
領域以匹配此設置:auth sufficient /usr/local/lib/pam_sss.so account required /usr/local/lib/pam_sss.so ignore_unknown_user session required /usr/local/lib/pam_mkhomedir.so mode=0700 session optional /usr/local/lib/pam_sss.so password sufficient /usr/local/lib/pam_sss.so use_authtok
- 切換到啟用 SASL 的 OpenLDAP 客戶端
$ pkg remove -f openldap-client $ pkg install openldap-sasl-client
- 最後確認一切正常
$ getent passwd <username>