Roundcube/Dovecot を *効果的な* 2 要素認証用に設定する方法

Roundcube/Dovecot を *効果的な* 2 要素認証用に設定する方法

2 要素認証を提供する Roundcube プラグインがいくつかあります。ただし、現在私が見ている問題は、2 要素認証 (当然ですが) なしでも、IMAP/SMTP 経由でログインできるということです。2 要素認証は (事実上) ここでは役に立ちません。

私は、アプリケーション固有のパスワードを導入し、Google が 2 要素認証とそれをサポートしていないアプリケーションで行っているのと同様のことを行うことで、この問題を解決できると考えました。

ここで、各ユーザーに対して、Roundcube の Web インターフェイスへのログインに使用するパスワードとは異なる、アプリ固有のパスワードを Roundcube 用に自動的に生成できると考えました。その結果、ユーザーは引き続き独自のパスワード + 2 要素認証を使用して Roundcube にログインできますが、同じパスワードを IMAP/SMTP に直接使用することはできません。ただし、Web インターフェイスへのログインに使用するパスワードとは異なる IMAP パスワードを使用するように Roundcube を構成する方法が見つからないようです。

Roundcube と Dovecot は両方とも同じマシン上で実行されています。

ここで何か見落としているのでしょうか? 私がやっていることは理にかなっていますか? これは、私が試みている方法よりもエレガントな方法で解決できる問題のように思えますが、ここで何か見落としているのでしょうか? 私が本当に望んでいるのは、可能な限り 2 要素認証を使用し、それ以外の場所ではアプリケーション固有のパスワードを使用することです。

ありがとう!

答え1

さらにいろいろ試してみた結果、少なくともこの単純なケースでは、2 つの妥当な解決策/回避策が見つかりました。

オプション 1: allow_nets を使用する。 Dovecotでは、passdbによって返されるさまざまな追加フィールドが許可されており、その中には「allow_nets」(http://wiki2.dovecot.org/PasswordDatabase/ExtraFields/AllowNets)。Roundcube が使用するパスワードの allow_nets を 127.0.0.1 に設定すると、他のソースからのログイン試行はすべて失敗します。Roundcube が別のマシン上にある場合は、当然 IP を調整する必要があります。このアプローチの問題は、非静的 IP アドレスと、ユーザーが Roundcube と同じマシンで実行されているプロキシなどを介して 2 要素認証以外の方法でログインする場合です。

オプション 2: CheckPassword を使用してカスタム認証スクリプトを作成します。チェックパスワードドライバーの使用(http://wiki2.dovecot.org/AuthDatabase/CheckPassword) を使用すると、カスタム認証スクリプトを記述できます。そこでクライアント IP をチェックしたり、まったく別のことをしたりできます。ここで問題になる可能性があるのはパフォーマンスです。また、checkpassword はユーザー検索をサポートしていないため、ユーザー検索用に追加の構成が必要になる可能性があります。また、ユーザーが実際にどのようにログインしようとしているかを確認するという問題も残っています。

関連情報