Centos

如何在 CentOS 7 上清除使用者記憶體的 Active Directory 密碼?

  • September 5, 2018

我在公司筆記型電腦上安裝了 CentOS 7,並將其配置為向公司 AD 伺服器進行身份驗證,如下所示:

  • 安裝包:
yum install sssd realmd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients policycoreutils-python
  • 將 AD 伺服器添加到/etc/hosts.
  • 加入領域:
realm join --user=tech adserver.example.com
realm permit -g activedirectorygroup@domain
  • 更改use_fully_qualified_namesFalse和。fallback_homedir_ /home/%u_/etc/sssd/sssd.conf
  • 重啟守護程序:
systemctl restart sssd && systemctl daemon-reload
  • 設置 ITGROUP 以便能夠使用 sudo:
echo "%ITGROUP  ALL=(ALL)  ALL" > /etc/sudoers.d/ITGROUP

一切都執行良好。…直到我在 Windows 10 PC 上更改了密碼。事實上,CentOS 盒子讓我,只是用密碼。我做了一堆Google搜尋並嘗試了一堆東西(例如,,sss_cache -Ekdestroy -A,但我似乎無法刷新記憶體,所以我可以使用我的密碼。

那麼,如何在 CentOS 7 上清除使用者記憶體的 Active Directory 密碼?有沒有辦法讓“普通”使用者自己做到這一點(如果我們想把它推廣到其他系統)?

更新:

我嘗試了一些建議,但筆記型電腦不會忘記舊憑據。我最終將 PC 從領域中刪除並重新添加。我確實將它添加到我的 sssd.conf 中:

[sssd]
...
account_cache_expiration = 2
cached_auth_timeout = 3600
refresh_expired_interval = 4050

[pam]
reconnection_retries = 3
offline_credentials_expiration = 2

登錄似乎正在記憶體 AD 的東西,但它Authenticated with cached credentials, your cached password will expire at:現在告訴我什麼時候登錄或 sudo。我希望下次我的密碼到期並更改它時,該系統會辨識它。僅供參考,我的整個配置是:

[sssd]
domains = adserver.example.com
config_file_version = 2
services = nss, pam

[domain/adserver.example.com]
ad_domain = adserver.example.com
krb5_realm = adserver.example.com
realmd_tags = manages-system joined-with-samba 
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = False
fallback_homedir = /home/%u
access_provider = simple
simple_allow_groups = activedirectorygroup@adserver.example.com
account_cache_expiration = 2
cached_auth_timeout = 3600
refresh_expired_interval = 4050

[pam]
reconnection_retries = 3
offline_credentials_expiration = 2

更新#2:

我已經使用這個配置有一段時間了。我已經增加了account_cache_expirationand offline_credentials_expirationfrom 2to 4,但它執行得很好,我們已經開始在我們的伺服器上使用這個設置。

那麼,如何在 CentOS 7 上清除使用者記憶體的 Active Directory 密碼?

通常sss_cache應該是告訴 sssd 重新檢索它可能已經記憶體的對象的正確方法。但是如果無法從 AD 中檢索到任何內容,afaik sssd 確實會再次使用記憶體的對象。

您應該始終能夠通過設置來重置記憶體的憑據

[domain/your-domain.tld]
...
cache_credentials = False

在 /etc/sssd/sssd.conf 中,重新啟動 sssd 服務並重新驗證您的使用者。這樣,您應該能夠確定 SSSD/AD 上的身份驗證是否有效。要檢查完整設置是否使用目前設置(不使用任何記憶體),實際刪除所有記憶體總是一件好事。請參閱底部的資訊,了解如何最有效地做到這一點。

有沒有辦法讓“普通”使用者自己做到這一點(如果我們想把它推廣到其他系統)?

我不知道如何安全地實施。恕我直言,這不是你想要的。但無論如何,它不應該是必要的。SSSD 應始終根據某些條件重新評估其記憶體的憑據。

大多數情況下,最好設置以下內容以在幾天后強制重新評估,並實際注意環境是否出現問題

[pam]
...
offline_credentials_expiration

預設offline_credentials_expiration設置為0(無限制)


大多數時候,當我想確定沒有更多記憶體在使用時,我會執行以下操作

systemctl stop sssd
rm /var/lib/sssd/db/*
systemctl start sssd

這可能會導致 sssd 設置無法正常工作(但前提是其設置有問題,因為所有 sssd 保存的數據都可以簡單地從 AD 中重新檢索)。

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