web-dev-qa-db-ja.com

MySQLバックエンドを備えたPostfix + Dovecot:md5-hashed passwords and CRAM-MD5 auth

私の質問

データベースでMD5パスワードからCRAM-MD5パスワードに切り替えることのリスクは何ですか。特に次の点を考慮し、既存のインストールで(プレーンテキストのパスワードを知っている場合)どのようにアプローチするのですか?

CRAM-MD5(に切り替え)で、

  1. 暗号化/検証のために、PostfixAdminはユーザー作成時およびパスワード変更時に外部ツール(_doveadm pw_)に戻る必要があります、したがって、クリアテキストのパスワードは、少なくともすぐにプロセスリストに表示されます1
  2. 私はおそらく新しい依存関係を導入しています(まったく同じツール)
  3. 他の(サードパーティの)ツールがそれを処理できるかどうかわからない

項目2は、Dovecotを置き換える予定がないため、大したことではないかもしれません(たとえ、移行パスが十分に文書化されているとしても)。項目3は大したことではありませんまだ(私はそのようなツールを知らないので)。舞台裏には、IIRCが再びDovecotの助けを借りて仕事のこの部分を行うSASLもあります(Postfix構成の_smtpd_sasl_type=dovecot_など)。しかし、それは私が何かを逃したかもしれません–それはもっとトラブルか、別のオプションです。

ヒントはありますか?何をお勧めしますか(完全に異なる設定は別として)?

TL; DR(背景)

私は、Dovecot、Postfix、PostfixAdmin、Sieve、いくつかの追加コンポーネントを使用して、新しいメールサーバーのセットアップの最中です-すべてバックエンドとしてMySQLに接続されています( このドイツ語のチュートリアル に続く)。これまでのところすべてが稼働していますが、IMAP認証にPLAINとLOGINしか提供されていないことに気付きました。 ローカル接続(同じマシン上のRoundcube Webメーラーなど)やその他の「暗号化された接続」(HTTPS/IMAPS/POP3S/SMTPS)にとっては大したことではありませんが、私は一部のユーザーは代わりに暗号化されていない接続を使用するのではないかと心配しています。これは完全に無効にしたくありません(必要になる場合があります)。

そこで、DovecotでCRAM-MD5とDIGEST-MD5を有効にしました。もちろん機能しませんでした。PostfixAdminは内部MD5プロシージャを使用してデータベースにパスワードを保存するため、Dovecotはパスワードを照合できません( 私の回答はこちら) 詳細)。これは基本的に3つのオプションを残しますが、そのうちの1つはそのようなものではありません。

  • そのままにしておく(上記のリスクがある)
  • データベースでプレーンテキストのパスワードに切り替える(痛い、いや、しない)
  • データベースのCRAM-MD5パスワードへの切り替え

更新

「参加者」の調査から、可能性の比較を次に示します。

 PwdStore MD5 PwdStore CRAM-DM5 
 Webmail(Roundcube)
 
クライアント/サーバーHTTPSのみ(HTTP要求はアップグレードされるため、PLAIN = OK)
 IMAP PLAIN PLAIN/CRAM-MD5(内部)²
 SMTP PLAIN PLAIN/CRAM-MD5(内部)²
 
ネイティブクライアント(Postfix/Dovecotに接続)
 
IMAP³PLAIN/ LOGIN PLAIN/LOGIN/CRAM-MD5 
SMTP³PLAIN/ LOGIN PLAIN/LOGIN/CRAM-MD5 
POP3³PLAIN/ LOGIN PLAIN/LOGIN/CRAM- MD5 
 IMAPS PLAIN/LOGIN PLAIN/LOGIN/CRAM-MD5 
 SMTPS PLAIN/LOGIN PLAIN/LOGIN/CRAM-MD5 
 POP3S PLAIN/LOGIN PLAIN/LOGIN/CRAM-MD5 
 
 PostfixAdmin 
 MD5(内部)CRAM-MD5(dovecotadm経由)の作成/更新⁴

1:ソースを確認したところ、928行目の_postfixadmin/functions.inc.php_で次のことがわかりました。
_Use proc_open call to avoid safe_mode problems and to prevent showing plain password in process table_
したがって、この反論は失敗するようです。

2:_roundcube/program/lib/Roundcube/rcube_imap_generic.php_ 90ff、function authenticate()

3:PLAIN/LOGINは通常、暗号化されていない接続では無効になります

4:おそらく Roundcubeのコードを使用して書き直された 、両方ともPHP –ただしPostfixAdmin

2
Izzy

答えが得られなかったので、私は自分で実験し、最終的に切り替えを行いました–それはスムーズに進みました。利点は、最初に述べたように、暗号化されていないトランスポートでの認証に少なくともCRAM-MD5が利用可能であり、暗号化されたトランスポートが利用できない場合(そう、そうなります)に加えて、CRAM-MD5をすでに使用しているユーザーにとって古いサーバーからの移行がスムーズになることです。それとは別に、副作用は見られませんでしたまだ –それらが現れるまでには少し時間がかかるかもしれませんが:)


したがって、興味のある方のために、実行する手順は次のとおりです。

  • Dovecot:default_pass_scheme(または使用している対応するファイル)でMD5-CRYPTCRAM-MD5から/etc/dovecot/dovecot-mysql.confに変更し、cram-md5auth_mechanisms/etc/dovecot/dovecot.confに追加します。
  • Postfix:私の場合、PostfixはSASL(smtpd_sasl_type=dovecot)を介した認証にDovecotを使用します-したがって、ここでは何もしません
  • PostfixAdmin:
    • 最初にPostfixAdminWebIFにログインし、ログインしたままにします。そうしないと、構成が変更された後はログインできなくなります:)
    • config.inc.phpの変更:$CONF['encrypt'] = 'md5crypt';$CONF['encrypt'] = 'dovecot:CRAM-MD5';に変更する必要があります。 $CONF['dovecotpw'] = "/usr/sbin/doveadm pw";も確認してください。 Debian Wheezyでは、doveadm/usr/binに存在するため、この設定を調整する必要があります
    • 次に、PostfixAdmin WebIf(まだログインしている場所)に移動して、ユーザーパスワードを更新します。[仮想リスト]に移動し、[メールボックス]までスクロールして、各メールボックスの[編集]リンクをクリックすると、「新しい」が保存されます。パスワード」(これは、パスワードを知っているか、「いくつかの」パスワードを設定して後で更新する必要があることを意味します。私の知る限り、既存のパスワードを「変換」する方法はありません)。
      「管理者リスト」を介して管理者にも同じことを繰り返します-そうしないと、彼ら/あなたは再びログインできなくなります
  • メールサービスを再開します。基本的には、Dovecotと、おそらくPostfixを再起動するだけで十分です。

完了。これで、すべてがまだ機能しているかどうかを確認できます。私の場合は次のとおりでした。Roundcubeは引き続きPLAINを認証でき、リモートクライアントはCRAM-MD5を使用できるようになりました。ケースは解決しました。

3
Izzy