Centos

PAM、RADIUS、Google身份驗證器和兩因素身份驗證

  • May 26, 2018

我已經設置了 FreeRADIUS、PAM 和 Google Authtenicator。FreeRADIUS 呼叫 PAM,而後者又呼叫 Google pam_google_authenticator.so 庫。這一切都成功了。

但是,這並不是真正的 2 因素身份驗證,因為只需要來自 Google App 的 OTP。要獲得兩個 2FA,我想使用本地 Linux 密碼。由於這是通過 RADIUS 進行的,因此我無法提示輸入兩個密碼,需要將它們合併為一個。根據 Google Auth README 和我找到的各種部落格,我應該在 PAM 中執行此操作:

  auth requisite pam_google_authenticator.so forward_pass
  auth required pam_unix.so use_first_pass  

然後我可以將密碼和 OTP 放在同一個提示符下,例如 MyPass123456

但它永遠不會奏效。通過調試,我可以看到 pam_unix.so 檢查並接受使用者的密碼,但無論如何都會失敗。如果我刪除第二行,或者將“auth”更改為“account”(我發現的一個建議),auth 可以工作,但本地密碼會被忽略。

我的 PAM 配置中是否缺少某些內容?

很多Google搜尋將我帶到https://bugs.launchpad.net/percona-server/+bug/1274821,它描述了一個類似的問題。正如那裡記錄的那樣,這有效:

auth requisite pam_google_authenticator.so forward_pass
auth required pam_unix.so use_first_pass  
account required pam_unix.so audit
account required pam_permit.so

雖然為什麼這對我來說仍然是一個謎,因為 MySQL 問題是關於使用 PAM 作為非 root 使用者,並且我有 FreeRADIUS 設置以作為 root 使用者執行。

如果您將“auth”更改為“account”,則 pam_unix 不再用於身份驗證。

你是什​​麼意思

pam_unix.so 檢查並接受使用者的密碼,但無論如何都會失敗

您對該服務的 pam 配置如何?因為“必需”意味著堆棧被處理到最後,也許它pam_unix 之後中斷。

您可能還考慮使用另外兩個因素身份驗證後端,它自己處理這兩個因素…… https://www.howtoforge.com/two-factor-authentication-with-otp-using-privacyidea-and-freeradius-上centos

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