如何查看 ldap 密碼儲存策略
如何檢查密碼如何儲存在本地執行的 OpenLDAP 伺服器中?我更喜歡某種查詢來說明使用的配置。或者,訪問儲存的密碼以查看它們是否已加密也是可以接受的。僅檢查配置文件是不夠的。
我已經使用 ldapsearch 列出了使用者及其密碼
ldapsearch -x -b ou=people -H ldap://127.0.0.1 -D cn=admin -w <password>
並且密碼沒有以明文形式列出,但這是否真的確認它們沒有以明文形式儲存,或者 ldapsearch 在返回結果之前對其進行加密?
我已經列出了使用者及其密碼
ldapsearch
,並且密碼沒有以明文形式列出,但這是否真的確認它們不是以明文形式儲存的?是的,不,也許。
我認為
ldapsearch
,例如,密碼策略覆蓋不會用搜尋響應中的加密或散列版本替換儲存的明文密碼。明文密碼的加密/散列僅在設置/更新密碼時發生。我認為在這方面你可以相信你所看到的ldapsearch
。但兩者都
ldapsearch
以base64 編碼格式slapcat
顯示userPassword
。屬性名稱後的雙冒號::
用於指示該值是 base64 編碼的。userPassword:: c2VjcmV0LXBhc3N3b3JkCg== userPassword:: e1NTSEF9RGtNVHdCbCthLzNEUVR4Q1lFQXBkVXROWEdnZFVhYzMK
如果密碼是散列或明文,則在解碼該 base64 字元串之前,您實際上不會知道。如果您只找到以下形式的密碼
{hash prefix}salt/value
:userPassword: {SSHA}DkMTwBl+a/3DQTxCYEApdUtNXGgdUac3 userPassword: {SSHA}d0Q0626PSH9VUld7yWpR0k6BlpQmtczb userPassword: {CRYPT}$1$czBJdDqS$TmkzUAb836oMxg/BmIwN.1 userPassword: {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ== userPassword: {SMD5}4QWGWZpj9GCmfuqEvm8HtZhZS6E=
那你很好。沒有這種前綴的密碼是純文字。
僅檢查配置文件是不夠的。
確實。當密碼散列/加密被啟用/更改時,現有的明文密碼和使用不同算法加密的現有密碼都不會被轉換。
據我所知,在更改預設密碼策略後,現有的明文和使用其他算法散列的密碼也不會停止工作,每當發出身份驗證請求時,ldap 守護程序都會簡單地遍歷所有支持的機制。
要檢查 OpenLDAP 中實際儲存數據的內容,最簡單的方法可能是將數據庫導出為可讀的 LDIF 格式,使用
slapcat
; 從該 LDIF 中提取所有 userPassword 屬性值,並對它們進行 base64 解碼。