Postfix

SASL 接受“錯誤”密碼

  • January 9, 2014

我使用 Postfix 設置了一個郵件伺服器,並將其配置為使用 Cyrus SASL 來驗證我的使用者。它執行良好,直到我發現我可以使用比實際更短的密碼登錄。

例如密碼應該是uhuh1234h22我可以登錄:

uhuh1234
uhuh1234h
uhuh1234h2
uhuh1234h22

沒有更短的……

我用這個命令測試了它:

testsaslauthd -u USERNAME -p PASSWORD -s smtp -f /var/spool/postfix/var/run/saslauthd/mux

我的問題是為什麼會發生這種情況以及如何防止這種情況發生?

編輯

我在 /etc/pam.d/smtp 中的配置文件是:

auth    required   pam_mysql.so user=USR passwd=PASS host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1
account sufficient pam_mysql.so user=USR passwd=PASS host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1

問題在於您使用crypt. 從文件到 pam_mysql

crypt (0)

Specifies the method to encrypt the user's password:
0 (or "plain") = No encryption. Passwords stored in plaintext. HIGHLY DISCOURAGED. 
1 (or "Y") = Use crypt(3) function 
2 (or "mysql") = Use MySQL PASSWORD() function. It is possible that the encryption function used by pam-mysql is different from that of the MySQL server, as pam-mysql uses the function defined in MySQL's C-client API instead of using PASSWORD() SQL function in the query. 
3 (or "md5") = Use MySQL MD5() function

您的crypt參數設置為1表示使用該crypt功能。這就是正在crypt做的事情

通過取key 的前 8 個字元中每個字元的最低 7 位,得到一個 56 位的密鑰。

您應該使用其他儲存方案之一(最好是 2 或 3)以允許更長的密碼。

請注意,您可能還需要檢查 /etc/pam.d 中的其他服務定義,以確保您已涵蓋所有內容(如果您在同一主機上使用 Cyrus IMAP 伺服器使用 SASL 進行身份驗證,至少 /etc/pam .d/imap 將包含類似的記錄)

更改密碼加密方案時,您實際上也會失去所有儲存的密碼並需要重置它們。

引用自:https://serverfault.com/questions/566100