Postfix
SASL 接受“錯誤”密碼
我使用 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 將包含類似的記錄)
更改密碼加密方案時,您實際上也會失去所有儲存的密碼並需要重置它們。