はじめに
MySQLやMariaDBのようなリレーショナルデータベース管理システムは、webサイトやアプリケーシ ただし、すべてのユーザーがコマンドラインからデータを管理して快適に感じるわけではありません。
この問題を解決するために、webベースの管理インターフェイスの形で代替手段を提供するためにphpMyAdminというプロジェクトが作成されました。 このガイドでは、CentOS7サーバーにphpMyAdmin設定をインストールして保護する方法を説明します。 この設定は、世界で最も人気のあるWebサーバーであるApache webサーバーの上に構築します。
前提条件
始める前に、いくつかの要件を解決する必要があります。
このシステムを構築するための強固な基盤があることを確認するには、CentOS7の初期サーバーセットアップガイドを実行する必要があります。 とりわけ、これは管理コマンドのsudo
アクセス権を持つ非rootユーザーを設定する方法を説明します。
このガイドを開始するために満たされなければならない第二の前提条件は、CENTOS7サーバーにLAMP(Linux、Apache、MariaDB、およびPHP)スタックをインストールすることです。 これは、phpMyAdminインターフェイスを提供するために使用するプラットフォームです(MariaDBは、管理したいデータベース管理ソフトウェアでもあります)。 サーバーにLAMPがまだインストールされていない場合は、CentOS7へのLAMPのインストールに関するチュートリアルに従ってください。
これらのガイドに従った後、サーバーが正常に機能している状態になっている場合は、このページの残りの部分に進むことができます。
ステップ1—phpMyAdminのインストール
LAMPプラットフォームがすでに整っているので、phpMyAdminソフトウェアのインストールからすぐに始めることができます。 残念ながら、phpMyAdminはCentOS7のデフォルトリポジトリでは利用できません。
必要なパッケージを取得するには、システムに追加のレポを追加する必要があります。 EPEL repo(Extra Packages for Enterprise Linux)には、探しているphpMyAdminパッケージを含む多くの追加パッケージが含まれています。
EPELリポジトリは、epel-release
という特別なパッケージをインストールすることで、サーバーで利用できるようにすることができます。 これにより、リポジトリリストが再構成され、EPELパッケージにアクセスできるようになります。
をインストールするには、次のように入力します:
sudo yum install epel-release
EPELレポが構成されたので、yum
パッケージシステムを使用してphpMyAdminパッケージをインストールするには、次のように入力します:
sudo yum install phpmyadmin
これでインストールが完了します。 インストールには、既に配置されているApache設定ファイルが含まれていました。 私たちは、それが私たちのインストールのために正しく動作するように取得するためにこれを少し変更する必要があります。
今すぐテキストエディタでファイルを開いて、いくつかの変更を加えることができます:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
内部には、ディレクトリのアクセスポリシーを説明するための条件付きロジックを持ついくつかのディレクトリブロックがあります。 定義されている二つの異なるディレクトリがあり、これらの中で、Apache2.2とApache2.4(私たちが実行している)の両方で有効な設定があります。
現在、この設定は、サーバー自体から行われていない接続へのアクセスを拒否するように構成されています。 私たちはリモートでサーバー上で作業しているので、私たちはあなたの家の接続のIPアドレスを指定するためにいくつかの行を変更する必要があ
Require ip 127.0.0.1
またはAllow from 127.0.0.1
と表示されている行を、ホーム接続のIPアドレスを参照するように変更します。 ホーム接続のIPアドレスを見つけるのに役立つ情報が必要な場合は、次のセクションを参照してください。 ファイル内には、変更する必要がある4つの場所があるはずです:
. . .Require ip your_workstation_IP_address. . .Allow from your_workstation_IP_address. . .Require ip your_workstation_IP_address. . .Allow from your_workstation_IP_address. . .
完了したら、Apache webサーバーを再起動して、次のように入力して変更を実装します:
sudo systemctl restart httpd.service
これで、phpMyAdminのインストールが動作します。 インターフェイスにアクセスするには、webブラウザで、サーバーのドメイン名またはパブリックIPアドレスの後に/phpMyAdmin
を移動します:
http://server_domain_or_IP/phpMyAdmin
サインインするには、有効なMariaDBユーザーのユーザー名とパスワードのペアを使用します。 開始するには、root
ユーザーとMariaDB管理パスワードを選択することをお勧めします。 その後、管理インターフェイスにアクセスできるようになります:
IPアドレスを見つける
上記の手順を完了するには、データベースにアクセスするために使用しているコンピュータのIPアド これは、権限のない人がサーバーに接続できないようにするためのセキュリティ予防措置です。
注:これはVPSのIPアドレスではなく、自宅または職場のコンピュータのIPアドレスです。
あなたのIPアドレスをgreater webがどのように認識しているかを知るには、webブラウザでこれらのサイトのいずれかを訪問してください:
- 私のIPアドレスは何ですか?
- 私のIPは何ですか?
- 私のIPアドレス
いくつかの異なるサイトを比較し、それらがすべてあなたに同じ値を与えることを確認してください。 上記の設定ファイルでこの値を使用します。
ステップ2—phpMyAdminインスタンスを保護する
サーバーにインストールされているphpMyAdminインスタンスは、この時点で完全に使用可能です。 しかし、webインターフェイスをインストールすることで、MySQLシステムを外の世界に公開しました。
付属の認証画面でも、これはかなりの問題です。 PhpMyAdminの人気とアクセスを提供する大量のデータとの組み合わせのために、これらのようなインストールは攻撃者にとって共通の標的です。
私たちは、インストールが標的とされ、危険にさらされる可能性を減らすために、二つの簡単な戦略を実装します。 自動化されたボットのブルートフォースの試みの一部を回避するために、インターフェイスの場所を/phpMyAdmin
から別のものに変更します。 また、phpMyAdminのログイン画面に到達する前に渡す必要がある追加のwebサーバーレベルの認証ゲートウェイも作成します。
アプリケーションのアクセス場所の変更
Apache webサーバーがphpMyAdminで動作するようにするために、phpMyAdmin Apache設定ファイルはエイリアスを使用してファイルのディレクト
phpMyAdminインターフェイスにアクセスできるURLを変更するには、エイリアスの名前を変更するだけです。 PhpMyAdmin Apache設定ファイルを今すぐ開きます:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
ファイルの先頭に向かって、次のような2行が表示されます:
Alias /phpMyAdmin /usr/share/phpMyAdminAlias /phpmyadmin /usr/share/phpMyAdmin
これらの2行はエイリアスであり、サイトのドメイン名またはIPアドレスに/phpMyAdmin
または/phpmyadmin
のいずれかが続く場合、/usr/share/phpMyAdmin
でコンテンツが配信されます。
これらの特定のエイリアスはボットや悪意のあるユーザーによって大きく標的にされているため、無効にしたいと考えています。 代わりに、私たちは自分の別名を決定する必要があります。 覚えやすいはずですが、推測するのは簡単ではありません。 URLの場所の目的を示すべきではありません。 私たちの場合は、/nothingtosee
とします。
意図した変更を適用するには、既存の行を削除するかコメントアウトし、独自の行を追加する必要があります:
# Alias /phpMyAdmin /usr/share/phpMyAdmin# Alias /phpmyadmin /usr/share/phpMyAdminAlias /nothingtosee /usr/share/phpMyAdmin
終了したら、ファイルを保存して閉じます。
変更を実装するには、webサービスを再起動します:
sudo systemctl restart httpd.service
これで、phpMyAdminインストールの前の場所に移動すると、404エラーが発生します:
http://server_domain_or_IP/phpMyAdmin
ただし、phpMyAdminインターフェイスは、選択した新しい場所で利用できます:
http://server_domain_or_IP/nothingtosee
Webサーバー認証ゲートの設定
インストールに必要な次の機能は、phpMyAdminログイン画面を見る前にユーザーが渡す必要がある認証プロンプトでした。
幸いなことに、Apacheを含むほとんどのwebサーバーはこの機能をネイティブに提供しています。 認証ファイルを使用するには、Apache設定ファイルを変更するだけです。
テキストエディタでphpMyAdmin Apache設定ファイルを再度開きます:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
/usr/share/phpMyAdmin
ディレクトリブロック内ですが、内部のブロックの外側には、overrideディレクティブを追加する必要があります。 これは次のようになります:
. . .<Directory /usr/share/phpMyAdmin/> AllowOverride All <IfModule mod_authz_core.c> . . .</Directory>. . .
これにより、phpMyAdminディレクトリ自体にある.htaccess
という名前のファイルで追加の設定の詳細を指定することができます。 このファイルを使用してパスワード認証を設定します。
終了したらファイルを保存して閉じます。
この変更を実装するには、webサービスを再起動します:
sudo systemctl restart httpd.service
を作成します。htaccessファイル
設定にoverrideディレクティブが指定されたので、Apacheは/usr/share/phpMyAdmin
ディレクトリ内で.htaccess
というファイルを探します。 見つかった場合は、以前の設定データを補うために中に含まれているディレクティブを使用します。
次のステップは、そのディレクトリ内に.htaccess
ファイルを作成することです。 テキストエディターを使用して、今すぐ実行してください:
sudo nano /usr/share/phpMyAdmin/.htaccess
このファイル内に、次の情報を入力する必要があります:
AuthType BasicAuthName "Admin Login"AuthUserFile /etc/httpd/pma_passRequire valid-user
これらの行のそれぞれが何を意味するのかを見てみましょう:
- AuthType Basic: この行では、実装する認証タイプを指定します。 このタイプでは、パスワードファイルを使用したパスワード認証が実装されます。
- AuthName:認証ダイアログボックスのメッセージを設定します。 許可されていないユーザーが何が保護されているかについての知識を得られないように、この汎用性を維持する必要があります。
- AuthUserFile:認証に使用される実際のパスワードファイルの場所を設定します。 これは、提供されているディレクトリの外にある必要があります。 このファイルをすぐに作成します。
- 有効なユーザーが必要です: これは、認証されたユーザーのみがこのリソースへのアクセス権を与えることを指定します。 これは、不正なユーザーが実際に入るのを止めるものです。
この情報の入力が終了したら、ファイルを保存して閉じます。
認証用のパスワードファイルの作成
.htaccess
ファイルでAuthUserFile
ディレクティブを使用してパスワードファイルの場所を指定したので、パスワードファイルを作成して設定する必要があります。
これはhtpasswd
というApacheユーティリティを使用することで実現できます。 ファイルを作成したい場所と、認証の詳細を入力したいユーザー名を渡してコマンドを呼び出します:
sudo htpasswd -c /etc/httpd/pma_pass username
-c
フラグは、初期ファイルを作成することを示します。 ディレクトリの場所は、ファイルに使用されるパスとファイル名です。 ユーザー名は、最初に追加したいユーザーです。 ユーザーのパスワードを入力して確認するように求められます。
認証するユーザーを追加したい場合は、-c
フラグを付けずに、新しいユーザー名で同じコマンドを再度呼び出すことができます:
sudo htpasswd /etc/httpd/pma_pass seconduser
パスワードファイルを作成すると、認証ゲートウェイが実装され、次回サイトにアクセスするときにパスワードプロンプトが表示されます:
http://server_domain_or_IP/nothingtosee
資格情報を入力すると、通常のphpMyAdminログインページに移動します。 この追加された保護層は、追加されたセキュリティ上の利点に加えて、MySQLログを認証試行のクリーンに保つのに役立ちます。
結論
合理的に安全なwebインターフェイスからMySQLデータベースを管理できるようになりました。 このUIは、MySQLコマンドプロンプトから利用可能なほとんどの機能を公開します。 データベースとスキーマの表示、クエリの実行、および新しいデータセットと構造の作成ができます。