CentOS7サーバーにApacheを使用してphpMyAdminをインストールして保護する方法
序章
MySQLやMariaDBのようなリレーショナルデータベース管理システムは、Webサイトやアプリケーションのかなりの部分に必要です。 ただし、すべてのユーザーがコマンドラインからデータを管理できるとは限りません。
この問題を解決するために、phpMyAdminというプロジェクトが作成され、Webベースの管理インターフェイスの形式で代替手段が提供されました。 このガイドでは、CentOS7サーバーにphpMyAdmin構成をインストールして保護する方法を示します。 このセットアップは、世界で最も人気のあるWebサーバーであるApacheWebサーバー上に構築します。
前提条件
始める前に、解決する必要のあるいくつかの要件があります。
このシステムを構築するための強固な基盤を確保するには、CentOS7の初期サーバーセットアップガイドを実行する必要があります。 特に、これにより、管理コマンドのsudo
アクセス権を持つ非rootユーザーの設定について説明します。
このガイドを開始するために満たす必要のある2番目の前提条件は、CentOS 7サーバーにLAMP(Linux、Apache、MariaDB、およびPHP)スタックをインストールすることです。 これは、phpMyAdminインターフェイスを提供するために使用するプラットフォームです(MariaDBは、管理したいデータベース管理ソフトウェアでもあります)。 サーバーにLAMPをまだインストールしていない場合は、 CentOS7へのLAMPのインストールに関するチュートリアルに従ってください。
これらのガイドに従った後、サーバーが適切に機能している状態になったら、このページの残りの部分に進むことができます。
ステップ1—phpMyAdminをインストールします
LAMPプラットフォームがすでに配置されているので、phpMyAdminソフトウェアのインストールからすぐに始めることができます。 残念ながら、phpMyAdminはCentOS7のデフォルトリポジトリでは利用できません。
必要なパッケージを取得するには、システムにリポジトリを追加する必要があります。 EPELリポジトリ( E xtra P ackages for E integer L inux)には、探しているphpMyAdminパッケージを含む多くの追加パッケージが含まれていますにとって。
epel-release
と呼ばれる特別なパッケージをインストールすることにより、EPELリポジトリをサーバーで利用できるようにすることができます。 これにより、リポジトリリストが再構成され、EPELパッケージにアクセスできるようになります。
インストールするには、次のように入力します。
sudo yum install epel-release
EPELリポジトリが構成されたので、次のように入力して、yum
パッケージシステムを使用してphpMyAdminパッケージをインストールできます。
sudo yum install phpmyadmin
これでインストールが完了します。 インストールには、すでに配置されているApache構成ファイルが含まれていました。 インストールで正しく機能するように、これを少し変更する必要があります。
今すぐテキストエディタでファイルを開いて、いくつかの変更を加えます。
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
内部には、ディレクトリのアクセスポリシーを説明するための条件付きロジックを備えたディレクトリブロックがいくつかあります。 定義されている2つの異なるディレクトリがあり、これらの中で、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アドレスです。
Webブラウザで次のサイトのいずれかにアクセスすると、より優れたWebがIPアドレスをどのように認識するかを確認できます。
いくつかの異なるサイトを比較し、それらすべてが同じ価値を提供することを確認してください。 上記の構成ファイルでこの値を使用します。
ステップ2—phpMyAdminインスタンスを保護します
サーバーにインストールされているphpMyAdminインスタンスは、この時点で完全に使用できるはずです。 ただし、Webインターフェイスをインストールすることで、MySQLシステムを外の世界に公開しました。
付属の認証画面でも、これはかなり問題です。 phpMyAdminの人気と、phpMyAdminがアクセスを提供する大量のデータが組み合わされているため、このようなインストールは攻撃者の一般的な標的です。
インストールが標的にされて危険にさらされる可能性を減らすために、2つの簡単な戦略を実装します。 インターフェースの場所を/phpMyAdmin
から別の場所に変更して、自動化されたボットブルートフォース攻撃の一部を回避します。 また、phpMyAdminログイン画面に到達する前に通過する必要がある追加のWebサーバーレベルの認証ゲートウェイを作成します。
アプリケーションのアクセス場所の変更
Apache WebサーバーがphpMyAdminと連携するために、phpMyAdmin Apache構成ファイルは、エイリアスを使用してファイルのディレクトリの場所を指します。
phpMyAdminインターフェイスにアクセスできるURLを変更するには、エイリアスの名前を変更するだけです。 今すぐphpMyAdminApache構成ファイルを開きます。
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
ファイルの先頭に向かって、次のような2行が表示されます。
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin
これらの2行はエイリアスです。つまり、サイトのドメイン名またはIPアドレスにアクセスした後、/phpMyAdmin
または/phpmyadmin
のいずれかにアクセスすると、/usr/share/phpMyAdmin
でコンテンツが提供されます。 ]。
これらの特定のエイリアスはボットや悪意のあるユーザーの標的になっているため、無効にします。 代わりに、独自のエイリアスを決定する必要があります。 覚えやすいはずですが、推測するのは簡単ではありません。 URLの場所の目的を示すものであってはなりません。 この例では、/nothingtosee
を使用します。
意図した変更を適用するには、既存の行を削除またはコメントアウトして、独自の行を追加する必要があります。
# Alias /phpMyAdmin /usr/share/phpMyAdmin
# Alias /phpmyadmin /usr/share/phpMyAdmin
Alias /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構成ファイルを変更する必要があります。
テキストエディタでphpMyAdminApache設定ファイルをもう一度開きます。
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
/usr/share/phpMyAdmin
ディレクトリブロック内ですが、内部のブロックの外部に、オーバーライドディレクティブを追加する必要があります。 次のようになります。
. . .
<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 Basic
AuthName "Admin Login"
AuthUserFile /etc/httpd/pma_pass
Require valid-user
これらの各行の意味を見てみましょう。
- AuthType Basic :この行は、実装する認証タイプを指定します。 このタイプは、パスワードファイルを使用してパスワード認証を実装します。
- AuthName :認証ダイアログボックスのメッセージを設定します。 許可されていないユーザーが何が保護されているかについての知識を得られないように、この汎用性を維持する必要があります。
- AuthUserFile :認証に使用される実際のパスワードファイルの場所を設定します。 これは、提供されているディレクトリの外にある必要があります。 このファイルはすぐに作成します。
- Require valid-user :これは、認証されたユーザーのみにこのリソースへのアクセスを許可する必要があることを指定します。 これは、許可されていないユーザーの侵入を実際に阻止するものです。
この情報の入力が終了したら、ファイルを保存して閉じます。
認証用のパスワードファイルを作成する
.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コマンドプロンプトから利用できるほとんどの機能を公開します。 データベースとスキーマを表示し、クエリを実行し、新しいデータセットと構造を作成できます。