sssd 活動目錄密碼集成不起作用
我們正在使用下面的配置設置 sssd 以與活動目錄一起使用。
我們不使用屬性映射,因為我們想使用 AD ldap 對像中定義的屬性,例如自定義 uid、unixHomeDirectory 和公鑰等。
sssd.conf:
[sssd] domains = company.domain config_file_version = 2 services = nss, pam, sudo, ssh debug_level = 6 [domain/sew.online] ad_hostname = EXAMPLESERVER01 #This is templated using ansible ad_domain = company.domain krb5_realm = COMPANY.DOMAIN krb5_store_password_if_offline = true use_fully_qualified_names = false id_provider = ad auth_provider = ad access_provider = ad chpass_provider = ad lookup_family_order = ipv4_only cache_credentials = true dns_discovery_domain = {{ prod_domain_name }} create_homedir = true auto_private_groups = true ad_gpo_access_control = permissive ad_gpo_cache_timeout = 30 ad_site = SITENAME case_sensitive = false enumerate = false default_shell = /bin/bash ldap_schema = ad ldap_id_mapping = False ldap_user_shell = loginShell ldap_user_principal = samAccountName ldap_user_ssh_public_key = altSecurityIdentities ldap_user_home_directory = unixHomeDirectory fallback_homedir = /home/%u ldap_force_upper_case_realm = true ldap_purge_cache_timeout = 0 ldap_account_expire_policy = ad ldap_group_search_base = DN=etc... ldap_user_search_base = DN=etc... debug_level = 6 [nss] fallback_homedir = /home/%u reconnection_retries = 3 debug_level = 6 [pam] offline_credentials_expiration = 3 offline_failed_login_attempts = 10 offline_failed_login_delay = 30 pam_verbosity = 3 pam_id_timeout = 10 pam_pwd_expiration_warning = 30 reconnection_retries = 3 debug_level = 6
krb5.conf
[logging] default = FILE:/var/log/krb5libs.log [libdefaults] default_realm = COMPANY.DOMAIN ticket_lifetime = 1d renew_lifetime = 7d dns_lookup_realm = true dns_lookup_kdc = true rdns = false allow_weak_crypto = false permitted_enctypes = aes256-cts-hmac-sha1-96 default_tkt_enctypes = aes256-cts default_tgs_enctypes = aes256-cts kdc_timesync = 1 kdc_timeout = 3000 forwardable = true renewable = true proxiable = true udp_preference_limit = 1 rnds = false
這是各種 sssd 日誌文件的 pastebin: https ://pastebin.com/2P58uybg
日誌顯示已成功登錄(通過 sshd 和公鑰身份驗證)的域使用者嘗試執行
sudo bash
除密碼外,廣告集成按需要工作:
- 使用者可以使用他們的 sAMAccountName 登錄
- 如果我執行 id username 你可以從活動目錄中看到使用者名的組及其 gid
- 電腦對象(使用 adcli 添加)顯示在活動目錄中
- 電腦 SPN 似乎存在有效的 kerberos 票證
作為故障排除步驟,我在域控制器上配置了 LDAPS,並在 ubuntu 的 ca 儲存中添加了一個內部受信任的證書。
我已經瀏覽了 sudo 日誌(非常詳細),它顯示該組已成功匹配並允許使用者 sudo。
任何幫助表示讚賞。
編輯:
主機作業系統:Ubuntu 18.04
nsswitch.conf
# /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc-reference' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat systemd sss group: compat systemd sss shadow: compat sss gshadow: files hosts: files dns networks: files protocols: db files services: db files sss ethers: db files rpc: db files netgroup: nis sss sudoers: files sss
為 ansible 角色安裝的軟體包:
- adcli
- krb5-使用者
- 固態硬碟
- sssd工具
- sssd 廣告
- sssd-krb5
- python3-sss
- libpam-sss
- libnss-sss
- libsss-南
查看提供的配置 sssd 嘗試從 LDAP/AD 獲取 sudo 規則,但似乎沒有收到任何相應的條目。
13:38:35 [sssd[sudo]] [sudosrv_query_cache] (0x0200): Searching sysdb with [(&(objectClass=sudoRule)(|(sudoUser=ALL)(sudoUser=example_user@company.domain)(sudoUser=#1010101)(sudoUser=%example_leadership@company.domain)(sudoUser=%acl_win_admins@company.domain)(sudoUser=%example_team@company.domain)(sudoUser=%meta_managed_by_ansible@company.domain)(sudoUser=%example_web@company.domain)(sudoUser=%example_ols@company.domain)(sudoUser=%acl_jump_access@company.domain)))] 13:38:35 [sssd[sudo]] [sudosrv_fetch_rules] (0x0400): Returning 0 rules for [example_user@company.domain@company.domain]
Ubuntu sssd sudo 故障排除指南說明了一些關於如何驗證 sudo 規則查詢的提示。 https://docs.pagure.org/SSSD.sssd/users/sudo_troubleshooting.html#what-to-look-for-in-the-logs
看起來您的配置缺少用於配置 sudo 規則的 ldap 詳細資訊的相應部分。由於 sssd 版本 1.11.5 應該可以使用
sssd_provider = ad
.https://pagure.io/SSSD/sssd/issue/2256
最近的手冊頁狀態: https ://linux.die.net/man/5/sssd.conf
sudo_provider (string) Default: The value of "id_provider" is used if it is set. "none" disables SUDO explicitly.
如果您使用的 sssd 版本足夠新,則應將其配置為
sudo_provider=ad
.根據 Ubuntu sssd 1.16 版,當使用 ad 作為 sudo 提供程序時,這些選項似乎取自 sssd-ldap 選項: https ://github.com/SSSD/sssd/blob/sssd-1_16_4/src/providers/ad/ ad_sudo.c#L49
ad_options->id->sudorule_map = ldap_options->sudorule_map;
來自 sssd-sudo 手冊頁的 sudo 規則映射的 Thefore 文件應該適用:https ://linux.die.net/man/5/sssd-sudo
建議設置:
ldap_sudo_search_base =
根據您的需要。如果您想使用基於文件的 sudo 建議嘗試使用以下方法禁用提供程序:
sudo_provider=none
此外,最好在/etc/nssswitch.conf
添加/修改行時明確禁用 sssd 查找sudoers: files
。