.
WEB/DB 関連 => phpMyAdmin > 4.phpMyAdmin の Apache 公開ポリシーについて
Linux 活用ガイド:目次

サーバ構築ガイド

レンタル ガイド

ショップ 構築ガイド

情報漏洩対策

phpMyAdmin の Apache 公開ポリシーについて

phpMyAdmin に限らず、サーバ管理ツールやグループウェアなどの Web アプリケーションを利用する場合は、ツール側のセキュリティ対策は勿論ですが、Web サーバ側でも適切にセキュリティ対策(アクセス制限と監視) を行う必要があります。

phpMyAdmin の設置とは切り分けて考える必要があるため、ここでは例をあげて Apache Web サーバ側で適用するセキュリティ ポリシーについて考えます。

phpMyAdmin 設置ポリシー例

phpMyAdmin の設定は、config.inc.php を編集して行います。サーバ管理者が利用する phpMyAdmin と ローカルユーザに提供する phpMyAdmin それぞれに異なるセキュリティポリシーを適用したい場合は、異なるディレクトリで phpMyAdmin を設置します。

例えば、ドキュメントルート外にそれぞれの phpMyAdmin を配置し、

/data/local_user/phpMyAdmin
/data/admin/phpMyAdmin

Apache の /Alias/ 処理で

  • https://mydomain.net/admin/phpMyAdmin/
  • https://mydomain.net/local_user/phpMyAdmin/

で公開し、管理者用の https://mydomain.net/admin/phpMyAdmin/ はガチガチのポリシーで、 https://mydomain.net/local_user/phpMyAdmin/ は、利便性に配慮したポリシーでといった具合に。

  • 管理者 (MySQL)
    • root ユーザ、又は該当する権限を持つ MySQL ユーザは、MySQLユーザーの管理などの基本操作のみを行なうために設置する
  • 一般ユーザ (ローカル クライアント)
    • 上記、管理者から提供されたMySQLアカウントを使用し、ユーザが権限を持つデータベースを制御するための phpMyAdmin を、上記、管理者用の phpMyAdmin とは別に設置する。
    • 主にPHP開発に従事するローカルユーザに提供

管理者は ローカルユーザーに提供するデータベースやアカウントの追加などの保守をセキュリティレベルを引き上げる事で、インターネット側からも管理する事が可能になります。( SSHを開いてSQLコマンドを叩く必要がない )

MySQL サーバは、phpMyAdmin を設置する場所、つまり Web サーバとは別のサーバにする、開発用途は外部に公開されないファイアウォール内部に独自に設置するのが安全で普通です。ここで説明している内容は、外部から管理者が phpMyAdmin 経由でもメンテナンスが行えます。

MySQL 管理者用 phpMyAdmin .

外部(インターネット側)から、ssh を使用せずphpMyAdmin を利用して保守管理を行なうケースも想定しています。主に、MySQL アカウントの管理やバックアップ作業を行うために phpMyAdmin をセットアップします。

このケースでは高い安全性が求められるため、phpMyAdmin への接続は、SSL クライアント認証の利用を前堤とします。一般の MySQL ユーザーが利用する phpMyAdmin と別に Apache でセキュリティポリシーを設定する必要があるため、個別にインストールします。

Apache セキュリティポリシー

Webサーバ(Apache側)で求められるセキュリティポリシーの一例です。

  • SSLクライアント認証
    • WEBサーバは、利用者が接続する際、クライアント証明書の提示を求めます。有効な証明書を提示しなければ、SSL(https)セッションを確立出来ない仕組です。
  • SSL通信に強制的に限定する (非暗号化通信を禁止)
    • 通信経路が暗号化されない通常の http 接続を禁止し、https に限定します。.httaccess での制御ではなく、Apache のディレクティブ設定で行うようにします。例えば、このように
      (上記クライアント認証とセット)
  • 接続元IPの限定
    • 外部から接続できるIPアドレスが固定である場合、接続可能なIPアドレスを指定します。config.inc.php でも可能ですが、サーバ管理者が利用する用途ではApache 側で行う方が確実です。
  • ドキュメントルート下の公開ディレクティブに設置しない
    • 最も基本ですが、ドキュメントルート下に設置しないで、/Alias/ 処理により マッピングしてWebサーバで公開します。
  • http 認証の利用 (phpMyAdmin の認証方式)
    • phpMyAdmin の認証方式に、http を使用 します。ディレクトリに接続する際、Webサーバ側で認証を求めます。管理者は ブラウザ側で接続する際、ブラウザ側でパスワードを覚えさせず、※その都度パスワードを入力するようにします。
    • ※このディレクトリにアクセスするのは管理者のみなので、利用者に強制する必要がない
    • 一時的に ブラウザの Cookie にパスワードを記憶する Cookie 認証よりセキュリティ面で優れるからです。
    • 以前、Apache の Basic 認証 (.httaccess) と併用すると紹介していましたが間違いです。(誤動作の元になるそうです) <(_ _)>

ホスティングサービスなど不特定多数にサービスを提供する場合、Apache Web サーバの設定の一部を httaccess により利用者譲渡する場合がありますが、これは想定していません。サーバ管理者が Web サーバ側でセキュリティを高めるようにします。

一般ユーザー用 phpMyAdmin.

サーバ管理者がローカルユーザに提供する phpMyAdmin を設置します。 phpMyAdmin は、Cookie 認証を用いることで phpMyAdmin に MySQL サーバへのアクセスコードを指定する必要がなくなります。

また、Apache 側で LAN 内からの接続に限定するなどして上記、管理者用と異なりセキュリティレベルを引き下げて利便性を優先する事も可能になります。

Apache セキュリティポリシー

一般ユーザー用 phpMyAdmin のセキュリティポリシー例です。

  • SSL通信に限定
    • 通信経路が暗号化されない通常の http 接続を禁止し、https に限定します。 (外部ネットワークからの利用を想定する場合は、MySQLのSSL化は必要) MySQLとWebサーバが同一ホスト、又はLANで結ばれていれば特に必要なし(事情にあったポリシー必要)
  • 接続元IPの限定
    • このディレクトリへのアクセスは、外部から接続できないようにする必要があります。

ローカルユーザは、phpMyAdmin の公開ディレクトリへアクセスすると、ページ上で、MySQL のアカウント情報の入力を求められます。パスすると、その MySQL ユーザが持つ権限の範囲内でデータベースを制御する事が出来ます。

上記、管理者用の phpMyAdmin とは異なり外部から接続は出来ませんが、求められるのは MySQL アカウントのみなので利便性が高くなります。

アクセスログの監視

MySQLのログ監視とは別に Apache 側も phpMyAdmin に関するログは記録するようにしてください。phpMyAdmin に限った話ではありませんが、ブラウザ経由のシステム管理は、何日、誰がアクセスしたか管理者が把握できるようにしておきます。エラーログの監視も忘れずに。

位置行単位のログ監視、設定の自由度では、Swatch が便利です。

phpMyAdmin 導入


PHP に関する書籍案内


MySQL に関する書籍案内

bottom_mark
ページ最上部
ページ最上部 前のページ