web-dev-qa-db-ja.com

PAM、RADIUS、Google認証システムおよび2要素認証

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構成に何かが欠けていますか?

3
Jeff Leyser

たくさんのグーグルが私を 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として実行するように設定しています。

1
Jeff Leyser

「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

0
cornelinux

この構成を試してください:

 auth requisite pam_google_authenticator.so forward_pass 
 auth十分なpam_unix.souse_first_pass 

ただし、pam構成ファイル内のすべてのauthエントリを確認せずに、判断するのは非常に困難です。

0
mricon

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行目をスキップします。

0