「phpMyAdminを動かす」の派生記事です。phpMyAdminをインストールしたディレクトリにDigest認証をかけます。
ページの目次
Digest認証について
ブラウザから見るとBasic認証と同様の認証方式だが、認証に使うユーザー名、パスワードをMD5形式でサーバに送り認証を行う形式。
通信経路の盗聴によってユーザー名とパスワードを盗まれにくくしている。(盗まれても解読しないと使えない)
httpd.confの編集
モジュールの有効化
「mod_auth_digest」、「mod_authn_file」、「mod_authz_user」が必要になるためモジュールの有効化を行います。
設定ファイルの「/etc/httpd/conf/httpd.conf」を編集します。
・・・(略)・・・ LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule auth_digest_module modules/mod_auth_digest.so ・・・・・・(1) LoadModule authn_file_module modules/mod_authn_file.so ・・・・・・ (2) ・・・(略)・・・ LoadModule authz_user_module modules/mod_authz_user.so ・・・・・・ (3)
(1)~(3) コメントアウト(先頭に#)が付いている場合は外します。
アクセス制御の追加
phpMyAdminがインストールされているディレクトリのアクセス制限の設定をファイルの末尾に追加します。
・・・(略)・・・ <Directory "/usr/share/phpMyAdmin"> Options none ・・・・・・ (4) AllowOverride AuthConfig ・・・・・・ (5) Order Allow,Deny ・・・・・・ (6) Allow from 192.168.1. </Directory>
(4) オプションは特に設定しません。
(5) .htaccessによって認証が使えるように設定。
(6) 内部からのアクセス以外は禁止(環境によって適宜変更してください)。
サーバーの再起動
設定ファイルの変更が完了した後、サーバーを再起動します。
# service httpd restart
制御ファイルの作成
認証に用いるユーザーとパスワードを格納したファイルの作成を行います。
# htdigest -c /usr/share/phpMyAdmin/.htdigest "phpMyAdmin Access" <ユーザー名> ・・・・・・ (7) Adding password for <ユーザー名> in realm phpMyAdmin Access. New password: <パスワードを入力> Re-type new password: <パスワードを再入力>
(7) “phpMyAdmin Access”と記載している部分はレルム(realm)でアクセス領域の事です。ここは何を記載しても構いませんが、次に出てくる「AuthName」の内容と一致している必要があります。
「.htaccess」を作成します。
# vi /usr/share/phpMyAdmin/.htaccess
以下ファイルの内容
AuthType Digest AuthName "phpMyAdmin Access" ・・・・・・ (8) AuthUserFile /usr/share/phpMyAdmin/.htdigest Require valid-user ・・・・・・ (9)
(8) htdigest によって作成した時に指定したレルムを指定します。
(9) 複数ユーザーでの管理を目的としていないため「valid-user」を指定しています。
複数ユーザーでの管理を行う場合は「Require user <ユーザー名1> <ユーザー名2>」と記載します。
動作確認
ブラウザからphpMyAdminへアクセスします。
google Chomeの場合以下のようなダイアログが表示されれば成功です。
先ほど設定したユーザー名とパスワードを使ってログインできるはずです。
躓いたところ
認証ダイアログが表示されない場合
phpMyAdminをyumでインストールするとディレクトリは「/usr/share/phpMyAdmin」になります。
そのためhttpd.conf に「<Directory “/usr/share/phpMyAdmin/”>~</Directory>」の中に「AllowOverride AuthConfig」を記載しているか確認してください。
ログインできない場合
私の場合はLoadModuleで「mod_authz_user」をコメントアウトしていたため、Digest認証を通らない状態になっていました。
/var/log/httpd/error_log に「Digest: invalid nonce xxxxxxxxxxx received – length is not 52」のようなログが出ていた場合は「httpd.conf」の設定を確認してみてください。
トラックバック & ピンバック