FreeRADIUS、PAM、GoogleAuthtenicatorをセットアップしました。 FreeRADIUSはPAMを呼び出し、PAMはGooglepam_google_authenticator.soライブラリを呼び出します。それはすべて正常に機能します。
ただし、必要なのはGoogleアプリからのOTPだけなので、これは実際には2要素認証ではありません。 2つの2FAを取得するには、ローカルのLinuxパスワードを使用します。これはRADIUSを介しているため、両方のパスワードを要求することはできず、それらを1つに組み合わせる必要があります。 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がユーザーからのパスワードをチェックして受け入れるが、とにかく失敗することがわかります。その2行目を削除するか、「auth」を「account」に変更すると(私が見つけた1つの提案)、authは機能しますが、ローカルパスワードは単に無視されます。
PAM構成に何かが欠けていますか?
たくさんのグーグルが私を 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構成はどのようになっていますか? 「必須」とは、スタックが最後まで処理されることを意味するため、afterpam_unixが壊れている可能性があります。
また、これら2つの要素を単独で処理する別の2要素認証バックエンドの使用を検討することもできます... https://www.howtoforge.com/two-factor-authentication-with-otp-using-privacyidea-および-freeradius-on-centos
この構成を試してください:
auth requisite pam_google_authenticator.so forward_pass auth十分なpam_unix.souse_first_pass
ただし、pam構成ファイル内のすべてのauth
エントリを確認せずに、判断するのは非常に困難です。
Pam設定ファイル全体を提供できますか? pam_unix.soの後にpam_deny.soを使用する場合は、構成を次のように変更する必要があります。
auth [success=1 default=ignore] pam_unix.so use_first_pass
モジュールが成功を返した場合、次の行をスキップする必要があることを指定します。
Authの構成全体:
auth requisite pam_google_authenticator.so forward_pass
auth [success=1 default=ignore] pam_unix.so use_first_pass
auth requisite pam_deny.so
auth required pam_permit.so
まず、pam_google_authenticatorモジュールがTOTPを抽出して検証します。
次に、pam_unixモジュールがパスワードを確認し、成功した場合は3行目をスキップします。