Movatterモバイル変換


[0]ホーム

URL:


BLOGTIMES

cles::blog

平常心是道
« :: »
2014/05/27

CentOS 6 + Postfix + MySQL + postfixadmin + Dovecot をインストール(その2)

  postfix  systemmanagemant  dovecot 
このエントリーをはてなブックマークに追加

今日は電車に閉じ込められてしまったので、電車の中でセットアップを続行します。。。

postfixadmin は便利なのですが、認証として CRAM-MD5 を有効にしようとすると原理上パスワードは平文保存が必須になります。そうすると、ちょっとしたデータベースメンテナンスの時に平文のパスワードが見えてしまうという問題があります。気にしなければよいという話もありますが、やはりパスワードが見えてしまうのはイヤなので気持ちの問題かもしれませんが、AES を使ってパスワードを暗号化することにしました。

AES は対称暗号なので、MD5 などのハッシュと違って平文に戻すことができます。しかも MySQL にはビルトインでAES_ENCRYPT() / AES_DECRYPT()*1 という関数があるので、DB のレイヤーで透過的に暗号化・復号化を行うことができます。

実際に MySQL のコンソールで試すとこんな感じになります。
TO_BASE64() / FROM_BASE64()*2を使っているのは、AES_ENCRYPT() の戻り値がバイナリなので、文字列としてパスワードをフィールドに格納できるようにするためです。

mysql> SELECT TO_BASE64(AES_ENCRYPT('clear_text','####AES_PASS####'));+---------------------------------------------------------+| TO_BASE64(AES_ENCRYPT('clear_text','####AES_PASS####')) |+---------------------------------------------------------+| o7qqc0S6WgIfxewcrjlKTA== |+---------------------------------------------------------+1 row in set (0.00 sec)mysql> SELECT AES_DECRYPT(FROM_BASE64('o7qqc0S6WgIfxewcrjlKTA=='),'####AES_PASS####');+-------------------------------------------------------------------------+| AES_DECRYPT(FROM_BASE64('o7qqc0S6WgIfxewcrjlKTA=='),'####AES_PASS####') |+-------------------------------------------------------------------------+| clear_text |+-------------------------------------------------------------------------+1 row in set (0.00 sec)

以下、作業メモ。

設定ファイルの書き換え

config.inc.php に mysql_aes という設定と、AES のパスワードの設定部分を追加します。
####AES_PASS#### の部分は使用時にランダムな文字列に書き換えてください。

--- config.inc.php.org 2013-12-26 23:35:02.000000000 +0900+++ config.inc.php 2014-05-27 23:07:23.889109336 +0900@@ -132,7 +132,9 @@ // authlib = support for courier-authlib style passwords // dovecot:CRYPT-METHOD = use dovecotpw -s 'CRYPT-METHOD'. Example: dovecot:CRAM-MD5 // (WARNING: don't use dovecot:* methods that include the username in the hash - you won't be able to login to PostfixAdmin in this case)-$CONF['encrypt'] = 'md5crypt';+$CONF['encrypt'] = 'mysql_aes';+$CONF['encrypt_aes'] = '####AES_PASS####'; // In what flavor should courier-authlib style passwords be encrypted? // md5 = {md5} + base64 encoded md5 hash

暗号化部分の追加

postfixadmin は md5crypt などのハッシュ化パスワードでも同じアルゴリズムが使えるように、プログラム中には「平文→暗号文」という処理しかありません。このため、暗号化の部分に手を入れてやるだけでパスワードの AES 化を行うことができます。そんなわけで、下記のような簡単なパッチで対応させることができました。

--- functions.inc.php.org 2014-05-07 04:46:27.000000000 +0900+++ functions.inc.php 2014-05-27 23:03:11.919101547 +0900@@ -886,6 +886,13 @@ $l = db_row($res["result"]); $password = $l[0]; }++ elseif ($CONF['encrypt'] == 'mysql_aes') {+ $pw = escape_string($pw);+ $res=db_query("SELECT TO_BASE64(AES_ENCRYPT('".$pw."','".$CONF['encrypt_aes']."'));");+ $l = db_row($res["result"]);+ $password = $l[0];+ } elseif ($CONF['encrypt'] == 'authlib') { $flavor = $CONF['authlib_default_flavor'];

後は Dovecot で認証するときに SQL でパスワードが平文で取り出されるようにしてあげれば OK なはずです。
その3に続きます。


byhsur at 23:26[5年前][4年前][3年前][2年前][1年前][1年後][2年後][3年後][4年後][5年後] |
こんな記事もあります 「復号化 MySQL 平文
任天堂が WEP の Wi-Fi 機器に対して使用中止を呼びかけ
Oracle のクリティカルパッチアップデートに注意(2022 年 1 月)
L0phtCrack が OSS に
docker-compose.yml で $ を使いたい
GitHub にそっくりなセルフホストできる Git サービス Gitea
Docker で gitbucket + MySQL サーバを立ててみた
CentOS の後継は Rocky Linux ?
php + MariaDB で Malformed communication packet というエラーが出るときは
mysql2 をスレッドセーフに
gem mysql から mysql2 に移行してみる
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/6750
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL:Yahoo! JAPAN IDでログイン

« :: »
Copyright © 2004-2023 by CLES All Rights Reserved.
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 .アーロンチェアのポスチャーフィットを修理(99668)
2 .年次の人間ドックへ(99083)
3 .福岡銀がデマの投稿者への刑事告訴を検討中(99072)
4 .三菱鉛筆がラミーを買収(98682)
5 .2023 年分の確定申告完了!(1つめ)(98651)
最新のエントリ
cles::blogについて
誰が書いてる?
最近行った場所
サイトポリシー
タグ一覧
検索ワードランキング

Referrers

    Powered by CLES
    Nucleus CMS v3.31SP3/w memcached
    21375053(W:5678 Y:1545 T:0872)
    cles::blogのはてなブックマーク数
    benchmark


    [8]ページ先頭

    ©2009-2025 Movatter.jp