WordPressのセットアップやバックアップでMySQLの操作をするのにPhpMyAdminはとても便利ですね。ブラウザからサーバーのデータベースに簡単にアクセスできるということは、セキュリティがパスワードだけだと少し不安です。今回は、自宅のDebianサーバーで私が実施しているphpMyAdminの不正侵入対策を3つ紹介します。
前提として
- Debian Wheezy 7.7のインストール記事の通りインストールしている
- apache2+php5+mysql-server+phpmyadminの記事の通りにインストールしている
3つの対策ともすべて /etc/phpmyadmin/apache.conf の設定ファイルを書き換えるだけなので簡単です。
このページの目次
エイリアスの変更
これはDebianならではの対策です。
Debian標準でインストールしたphpmyadminは、HPのアップロードディレクトリではなく、/usr/share/phpmyadminに本体があります。ブラウザからphpmyadminにアクセスするときにアドレスを入れるのは、ただのエイリアス設定なのです。これを~/phpmyadmin/ から変更するだけで、かなりの効果があります。知らない人が、http://ホスト名/phpmyadminと入れてもログイン画面が出るってのを防ぐだけでも安心感が違います。
/etc/phpmyadmin/apache.conf の3行目を変更します。
例として、エイリアスを/testnameとした場合です。
Alias /phpmyadmin /usr/share/phpmyadmin
Alias /testname /usr/share/phpmyadmin
apache再起動後から有効になります
/etc/init.d/apache2 restart
これで、http://ホスト名/testname がphpmyadminだと知ってる人しかログイン画面に行けなくなります。
ローカルLAN内からのアクセスに限定する
自宅内や事務所内のサーバーと同じルーターに接続しているときだけ、phpmyadminにログインできるようにする方法です。
私の場合は、WordPressのバックアップを取るときくらいしかアクセスしないので、自宅内限定でも問題なしです。外からもアクセスが必要だという場合でも、VPN接続などと組み合わせればローカル限定でもいけるでしょうか。
/etc/phpmyadmin/apache.conf の8行目あたりに追記します。
ルーターのDHCPアドレスが192.168.22.*** の場合の例です。
# phpMyAdmin default Apache configuration Alias /testname /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php <IfModule mod_php5.c> AddType application/x-httpd-php .php
9-12行目に追加しています。
# phpMyAdmin default Apache configuration Alias /testname /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php #ローカルLAN接続に限定 Order Deny,Allow Deny from All Allow from 192.168.22. <IfModule mod_php5.c> AddType application/x-httpd-php .php
apache再起動後から有効になります
/etc/init.d/apache2 restart
動作確認は、自宅外からphpmyadminにアクセスできなければOKです。
SSL通信のみに限定する
https://~から始まるSSL通信に対応したサイト限定の対策です。
SSL通信ができるならphpMyAdminのログインも、https://~のアドレスでアクセスしたほうが安全です。まちがえてもhttp://のほうからアクセスできないように、SSL通信限定にする方法です。
/etc/phpmyadmin/apache.conf の8行目あたりに追記します。
# phpMyAdmin default Apache configuration Alias /testname /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php #ローカルLAN接続に限定 Order Deny,Allow Deny from All Allow from 192.168.22. <IfModule mod_php5.c> AddType application/x-httpd-php .php
9-10行目に追加しています。
# phpMyAdmin default Apache configuration Alias /testname /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php #SSL接続に限定 SSLRequireSSL #ローカルLAN接続に限定 Order Deny,Allow Deny from All Allow from 192.168.22. <IfModule mod_php5.c> AddType application/x-httpd-php .php
apache再起動後から有効になります
/etc/init.d/apache2 restart
すでにSSL通信対応ならば簡単ですね。ここのブログはサイト全体をSSL通信にしていますので、phpMyAdminでもSSL通信にしています。
最後にひとこと
Debianの標準で入るphpMyAdminでの方法ですが、他のLinuxでも設定方法が違うだけで基本的な方針は同じです。こうしてみるとDebianの初心者向けというか、親切さに関心します。