CentOS 7サーバーでApacheを使用してphpMyAdminをインストールして保護する方法

前書き

MySQLやMariaDBなどのリレーショナルデータベース管理システムは、Webサイトとアプリケーションの大部分に必要です。 ただし、すべてのユーザーがコマンドラインからデータを管理することに抵抗があるわけではありません。

この問題を解決するために、phpMyAdminというプロジェクトが作成され、Webベースの管理インターフェースの形式で代替手段が提供されました。 このガイドでは、CentOS 7サーバーにphpMyAdmin構成をインストールして保護する方法を示します。 この設定は、世界で最も人気のあるWebサーバーであるApache Webサーバーの上に構築します。

前提条件

始める前に、解決する必要があるいくつかの要件があります。

このシステムを構築するための強固な基盤を確保するには、https://www.digitalocean.com/community/articles/initial-server-setup-with-centos-7 [初期サーバーセットアップガイドCentOS 7]。 とりわけ、これは管理コマンドの `+ sudo +`アクセスを持つ非rootユーザーを設定する手順を説明します。

このガイドを開始するために満たす必要がある2番目の前提条件は、CentOS 7サーバーにLAMP(Linux、Apache、MariaDB、およびPHP)スタックをインストールすることです。 これは、phpMyAdminインターフェースを提供するために使用するプラットフォームです(MariaDBは、管理したいデータベース管理ソフトウェアでもあります)。 サーバーにまだLAMPがインストールされていない場合は、https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-onのチュートリアルに従ってください。 -centos-7 [CentOS 7にLAMPをインストール]。

これらのガイドに従ってサーバーが適切に機能している状態になったら、このページの残りの部分から続行できます。

ステップ1-phpMyAdminのインストール

LAMPプラットフォームがすでに配置されているので、phpMyAdminソフトウェアのインストールからすぐに始めることができます。 残念ながら、phpMyAdminはCentOS 7のデフォルトリポジトリでは利用できません。

必要なパッケージを取得するには、システムに追加のリポジトリを追加する必要があります。 EPELリポジトリ(追加パッケージエンタープライズ 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

内部には、ディレクトリのアクセスポリシーを説明する条件付きロジックを備えたディレクトリブロックがいくつかあります。 定義されている2つの異なるディレクトリがあり、これらのディレクトリ内で、Apache 2.2とApache 2.4(実行中)の両方に有効な構成があります。

現在、このセットアップは、サーバー自体から作成されていない接続へのアクセスを拒否するように構成されています。 サーバーでリモートで作業しているため、いくつかの行を変更して、_home_接続のIPアドレスを指定する必要があります。

「+ Require ip 127.0.0.1+」または「+ Allow from 127.0.0.1+」と表示されている行を変更して、ホーム接続のIPアドレスを参照します。 ホーム接続のIPアドレスを見つけるのに支援が必要な場合は、次のセクションをご覧ください。 変更する必要があるファイルには4つの場所が必要です。

. . .
Require ip
. . .
Allow from
. . .
Require ip
. . .
Allow from
. . .

終了したら、Apache Webサーバーを再起動して、次のように入力して変更を実装します。

sudo systemctl restart httpd.service

これで、phpMyAdminインストールが動作可能になりました。 インターフェースにアクセスするには、ウェブブラウザでサーバーのドメイン名またはパブリックIPアドレスにアクセスし、その後に「+ / phpMyAdmin +」を入力します。

http:///phpMyAdmin

image:https://assets.digitalocean.com/articles/phpmyadmin_lamp_centos7/login.png [phpMyAdminログイン画面]

サインインするには、有効なMariaDBユーザーのユーザー名/パスワードのペアを使用します。 `+ root +`ユーザーとMariaDB管理パスワードは、始めるのに良い選択です。 その後、管理インターフェイスにアクセスできるようになります。

image:https://assets.digitalocean.com/articles/phpmyadmin_lamp_centos7/main_page.png [phpMyAdmin管理インターフェイス]

IPアドレスを見つける

上記の手順を完了するには、データベースへのアクセスに使用しているコンピューターのIPアドレスを知る必要があります。 これはセキュリティ上の予防措置であるため、権限のないユーザーはサーバーに接続できません。

注:これは、VPSのIPアドレスではなく、自宅または職場のコンピューターのIPアドレスです。

Webブラウザで次のいずれかのサイトにアクセスすると、より優れたWebがIPアドレスをどのように認識しているかを確認できます。

いくつかの異なるサイトを比較して、それらがすべて同じ価値を提供していることを確認してください。 上記の構成ファイルでこの値を使用します。

ステップ2-phpMyAdminインスタンスを保護する

サーバーにインストールされたphpMyAdminインスタンスは、この時点で完全に使用できるはずです。 ただし、Webインターフェイスをインストールすることで、MySQLシステムを外部に公開しました。

認証画面が含まれていても、これは非常に問題です。 phpMyAdminの人気は、アクセスを提供する大量のデータと組み合わされているため、このようなインストールは攻撃者の一般的な標的です。

2つの単純な戦略を実装して、インストールが標的になり、侵害される可能性を減らします。 自動化されたボットの総当たり攻撃のいくつかを回避するために、インターフェースの場所を `+ / 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/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 / /usr/share/phpMyAdmin

終了したら、ファイルを保存して閉じます。

変更を実装するには、Webサービスを再起動します。

sudo systemctl restart httpd.service

phpMyAdminインストールの以前の場所に移動すると、404エラーが表示されます:

http:///phpMyAdmin

image:https://assets.digitalocean.com/articles/phpmyadmin_lamp_centos7/404_error.png [phpMyAdmin 404エラー]

ただし、phpMyAdminインターフェイスは、選択した新しい場所で利用できます。

http:///nothingtosee

image:https://assets.digitalocean.com/articles/phpmyadmin_lamp_centos7/login.png [phpMyAdminログイン画面]

Webサーバー認証ゲートのセットアップ

インストールに必要な次の機能は、phpMyAdminログイン画面が表示される前にユーザーがパスする必要がある認証プロンプトです。

幸いなことに、Apacheを含むほとんどのWebサーバーはこの機能をネイティブに提供します。 許可ファイルを使用するには、Apache構成ファイルを変更するだけです。

テキストエディターでphpMyAdmin Apache構成ファイルを再度開きます。

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

`+ / usr / share / phpMyAdmin +`ディレクトリブロック内で、内部のブロックの外側に、オーバーライドディレクティブを追加する必要があります。 これは次のようになります。

. . .
<Directory /usr/share/phpMyAdmin/>

  <IfModule mod_authz_core.c>
  . . .
</Directory>
. . .

これにより、phpMyAdminディレクトリ自体にある「+ .htaccess +」というファイルに追加の設定の詳細を指定できます。 このファイルを使用して、パスワード認証をセットアップします。

完了したら、ファイルを保存して閉じます。

この変更を実装するには、Webサービスを再起動します。

sudo systemctl restart httpd.service

.htaccessファイルを作成する

設定にオーバーライドディレクティブがあるので、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

`+ -c +`フラグは、これが初期ファイルを作成することを示します。 ディレクトリの場所は、ファイルに使用されるパスとファイル名です。 ユーザー名は、追加する最初のユーザーです。 ユーザーのパスワードの入力と確認を求められます。

認証するユーザーを追加したい場合は、 `+ -c +`フラグなしで、新しいユーザー名で同じコマンドを再度呼び出すことができます:

sudo htpasswd /etc/httpd/pma_pass

パスワードファイルが作成されると、認証ゲートウェイが実装され、次回サイトにアクセスしたときにパスワードプロンプトが表示されます。

http:///nothingtosee

image:https://assets.digitalocean.com/articles/phpmyadmin_lamp_centos7/auth_gate.png [Apache認証ページ]

資格情報を入力すると、通常のphpMyAdminログインページが表示されます。 この追加の保護レイヤーは、追加のセキュリティ上の利点に加えて、MySQLログに認証試行をクリーンに保つのに役立ちます。

結論

これで、合理的に安全なWebインターフェイスからMySQLデータベースを管理できます。 このUIは、MySQLコマンドプロンプトから利用できるほとんどの機能を公開します。 データベースとスキーマを表示し、クエリを実行し、新しいデータセットと構造を作成できます。

Related