Webセキュリティの小部屋

Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから
公開日:2015年11月8日
最終更新日:2015年11月9日

phpMyAdmin に2段階認証を導入する方法(Google Authenticator 版)

はじめに

MySQL を GUI で管理するのに非常に便利なツールとして phpMyAdmin がありますが、phpMyAdmin はメジャーなこともあり、非常に攻撃を受けやすいツールでもあります。

通常は、IPアドレス でアクセス制限をかけて管理するのですが、自宅環境などで IPアドレスを固定できない場合は制限ができません。環境によっては SSL での暗号化もできない場合があると思います。

そこで何か安全な方法はないかと調べたところ、phpMyAdmin で 2段階認証を導入する方法がありましたのでご紹介します。

動作確認環境は以下のようになります。

  • PHP 5.6.15 (PHP >= 5.3.0でもいけそう)
  • MySQL 5.6.27
  • CentOS 7.1

2段階認証の方法

phpMyAdmin の2段階認証は、thecsea/twofactor-phpmyadmin というライブラリを使用します。このライブラリを使用すると、QR コードを表示し、Google Authenticator に登録すると、2段階認証を実現することができます(PHP >= 5.3.0)。

このライブラリだと、トークンを入力してからログインするという形になり、若干、違和感があるかもしれませんが、安全なトークンを利用しているので問題はありません。

2段階認証の設定

mod_rewrite の設定

.htaccess で設定ができるように、httpd.conf を編集します。

Apache を再起動します。

2段階認証の設定

まず、composerというツールをインストールします。

次に、以下のコマンドで thecsea/twofactor-phpmyadmin をインストールします。通常は、これでうまくいくようですが、私の環境ではうまくいきませんでした。このライブラリと phpMyAdmin のバージョンの組み合わせによってインストールが失敗するようです。

失敗した場合は、thecsea/twofactor-phpmyadmin のソースを git で持ってきてインストールします。

ここで、composer.json の内容が phpMyAdmin の最新バージョンを見るようになっているので、古いバージョンを見るように、composer.json の phpmyadmin/phpmyadmin を"dev-MAINT_4_4_15”に修正します。付けるラベルはこちらを参照してください。

インストールを実行します。

このライブラリは、 thecsea/twofactor-dir というライブラリを使用していますので、その設定を行います。

まず、インストール先のパーミッションをPHPから書き込み可能にします。

ブラウザで以下のアドレスにアクセスします(SSLが有効な場合)。

  • https://<サーバー名>/twofactor-phpmyadmin/vendor/thecsea/twofactor-dir/files/install.php

Pic01

テキストボックスにインストール先のフルパスを入力します。ここでは以下のように入力して、[Install] をクリックします。エラーが出なければ問題なく設定が終了しています。

次に以下のアドレスにアクセスし、QR コードを表示し、Google Authenticator に読み込ませます。この時点でサーバーの秘密鍵が作成されます。なお、サンプルでは表示していますが、QR コードと秘密鍵は絶対他の人に見せないでください。

  • https://<サーバー名>/twofactor-phpmyadmin/vendor/phpmyadmin/phpmyadmin/get_qr.php

Pic02

インストールが終了したので、パーミッションを戻しておきます。また、QR コードが表示されないようにパーミッションの設定しておきます。

以上で設定終了です。

実際の動作

以下のアドレスにアクセスすると、コードを求められるので、Google Authenticator で表示されるコードを入力します。

  • https://<サーバー名>/twofactor-phpmyadmin/vendor/phpmyadmin/phpmyadmin/

Pic03

Google Authenticator には、以下の様にコードが表示されます。正しいコードが入力されるとログイン画面が表示されます。なお、この2段階認証はブラウザを終了するまで有効です。

Ga

ログイン画面では、通常の MySQL の ID とパスワードの入力が求められます。

Pic04

ID とパスワードを正しく入力すると、phpMyAdmin の画面が表示されます。

Pic05

おわりに

phpMyAdmin に2段階認証を導入する方法を見てきましたが、いかがだったでしょうか。

まだ手作業が必要な部分がありますし、英語版しか提供されていないという懸念はありますが、攻撃を受けやすい phpMyAdmin に2段階認証を導入することはセキュリティレベルを大きく向上させますので、ぜひ導入をご検討ください。

また、phpMyAdmin を導入するサーバーには SSL 証明書の導入を強く推奨いたします。SSL 証明書の値段が高いというのであれば、現在、無料で SSL 証明書を提供している Let’s Encrypt というサービスがあるのでご利用をご検討ください。

なお、使用するライブラリの特性上、この方法で2段階認証を行う場合は、SSL 証明書による暗号化通信は必須になります。ご注意ください。


スポンサーリンク




カテゴリー:ブログ

Twitter でも、いろんな情報を発信しています。



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA