Debian 9にphpMyAdminをインストールして保護する方法

前書き

多くのユーザーはMariaDBのようなデータベース管理システムの機能を必要としますが、MariaDBプロンプトだけでシステムとやり取りするのは気分が悪いかもしれません。

phpMyAdminは、ユーザーがWebインターフェースを介してMariaDBと対話できるように作成されました。 このガイドでは、phpMyAdminを安全に使用してDebian 9システム上のデータベースを管理できるように、phpMyAdminをインストールして保護する方法について説明します。

前提条件

このガイドを開始する前に、いくつかの基本的な手順を完了する必要があります。

最初に、https://www.digitalocean.com/で説明されているように、サーバーに「+ sudo 」権限を持つ非* root *ユーザーと、「 ufw +」で設定されたファイアウォールがあると仮定します。 community / tutorials / initial-server-setup-with-debian-9 [Debian 9の初期サーバー設定ガイド]。

また、Debian 9サーバーでLAMP(Linux、Apache、MariaDB、およびPHP)のインストールを完了したと想定します。 まだこれを行っていない場合は、https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mariadb-php-lamp-stack-debian9 [LAMPのインストール]のガイドに従ってください[Debian 9のスタック]で設定します。

最後に、phpMyAdminなどのソフトウェアを使用する際には、次の理由から重要なセキュリティ上の考慮事項があります。

  • MariaDBインストールと直接通信します

  • MariaDB資格情報を使用して認証を処理します

  • 任意のSQLクエリの結果を実行して返します

これらの理由により、また攻撃の対象となることが多い、広く配備されたPHPアプリケーションであるため、プレーンHTTP接続を介してリモートシステムでphpMyAdminを実行しないでください。 SSL / TLS証明書で構成された既存のドメインがない場合は、https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-でこのガイドに従うことができますencrypt-on-debian-9 [Debian 9でLet’s Encryptを使用してApacheを保護する]。 これには、https://www.digitalocean.com/community/tutorials/how-to-point-to-digitalocean-nameservers-from-common-domain-registrars [ドメイン名を登録]、https:// wwwが必要です。 .digitalocean.com / community / tutorials / an-introduction-to-digitalocean-dns [サーバーのDNSレコードを作成]、およびhttps://www.digitalocean.com/community/tutorials/how-to-install-the- apache-web-server-on-debian-9#step-5-%E2%80%94-setting-up-virtual-hosts-(推奨)[Apache仮想ホストのセットアップ]。

これらの手順を完了したら、このガイドを開始できます。

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

最初に、デフォルトのDebianリポジトリからphpMyAdminをインストールします。

これは、サーバーのパッケージインデックスを更新し、 `+ apt +`パッケージシステムを使用してファイルをプルダウンし、システムにインストールすることで実行されます。

sudo apt update
sudo apt install phpmyadmin php-mbstring php-gettext

インストールを正しく構成するために、いくつかの質問が表示されます。

  • サーバーを選択するには、「+ apache2 +」を選択します

  • データベースをセットアップするために「+ dbconfig-common 」を使用するかどうかを尋ねられたら、「 Yes +」を選択します

  • 次に、phpMyAdminのMySQLアプリケーションパスワードを選択して確認するように求められます。

インストールプロセスは、phpMyAdmin Apache設定ファイルを `+ / etc / apache2 / conf-enabled / `ディレクトリに追加し、そこで自動的に読み込まれます。 あなたがする必要があるのは、非ASCII文字列を管理し、文字列を異なるエンコーディングに変換するために使用されるPHP拡張モジュール ` mbstring +`を明示的に有効にすることだけです。 次のように入力してこれを行います。

sudo phpenmod mbstring

その後、変更が認識されるようにApacheを再起動します。

sudo systemctl restart apache2

phpMyAdminがインストールされ、構成されました。 ただし、ログインしてMariaDBデータベースの管理を開始する前に、MariaDBユーザーがプログラムとの対話に必要な特権を持っていることを確認する必要があります。

手順2-ユーザー認証と特権の調整

サーバーにphpMyAdminをインストールすると、プログラムの特定の基になるプロセスを実行する `+ phpmyadmin +`というデータベースユーザーが自動的に作成されます。 インストール中に設定した管理パスワードでこのユーザーとしてログインするのではなく、別のアカウントを使用してログインすることをお勧めします。

Debianシステムへの新規インストールでは、* root * MariaDBユーザーは、パスワードではなくデフォルトで `+ unix_socket +`プラグインを使用して認証するように設定されています。 これにより、多くの場合、セキュリティと使いやすさが向上しますが、このユーザーを介して外部プログラム(phpMyAdminなど)の管理者権限を許可する必要がある場合にも事態が複雑になります。 サーバーは、ログのローテーションやサーバーの起動と停止などのタスクに* root アカウントを使用するため、 root *アカウントの認証詳細を変更しないことをお勧めします。 phpMyAdminではユーザーがパスワードで認証する必要があるため、インターフェイスにアクセスするには新しいMariaDBアカウントを作成する必要があります。

https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mariadb-php-lamp-stack-debian9#step-2-%E2%80%の前提条件のチュートリアルに従った場合94-installing-mariadb [LAMPスタックのインストール]を実行し、ステップ2で説明したようにMariaDBユーザーアカウントを作成しました。次のリンクにアクセスして、セットアップ時に作成したパスワードを使用してそのアカウントでphpMyAdminにログインできます:

https:///phpmyadmin

MariaDBユーザーをまだ作成していない場合、またはphpMyAdminを使用してデータベースを管理するためだけに別のユーザーを作成したい場合は、このセクションに進んで設定方法を学習してください。

MariaDBシェルを開くことから始めます。

sudo mariadb

そこから、新しいユーザーを作成し、強力なパスワードを付与します。

CREATE USER ''@'localhost' IDENTIFIED BY '';

次に、新しいユーザーに適切な特権を付与します。 たとえば、次のコマンドを使用して、データベース内のすべてのテーブルにユーザー権限を付与し、ユーザー権限を追加、変更、削除する権限を付与できます。

GRANT ALL PRIVILEGES ON *.* TO ''@'localhost' WITH GRANT OPTION;

その後、MariaDBシェルを終了します。

exit

サーバーのドメイン名またはパブリックIPアドレスにアクセスし、その後に「+ / phpmyadmin +」を入力すると、ウェブインターフェースにアクセスできるようになります。

https:///phpmyadmin

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

設定したユーザー名とパスワードでインターフェイスにログインします。

ログインすると、次のようなユーザーインターフェースが表示されます。

image:https://assets.digitalocean.com/articles/phpmyadmin_deb9/deb9_phpmyadmin_ui.png [phpMyAdminユーザーインターフェイス]

phpMyAdminに接続して対話できるようになったので、あとはシステムのセキュリティを強化して攻撃者から保護するだけです。

ステップ3-phpMyAdminインスタンスの保護

遍在性があるため、phpMyAdminは攻撃者に人気のあるターゲットであり、不正アクセスを防ぐために細心の注意を払う必要があります。 これを行う最も簡単な方法の1つは、Apacheの組み込みの「+ .htaccess」認証および承認機能を使用して、アプリケーション全体の前にゲートウェイを配置することです。

これを行うには、まずApache設定ファイルを編集して、 `+ .htaccess +`ファイルオーバーライドの使用を有効にする必要があります。

Apache構成ディレクトリに配置されているリンクファイルを編集します。

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

次のように、設定ファイルの `+ <Directory / usr / share / phpmyadmin> `セクション内に ` AllowOverride All +`ディレクティブを追加します。

/etc/apache2/conf-available/phpmyadmin.conf

<Directory /usr/share/phpmyadmin>
   Options FollowSymLinks
   DirectoryIndex index.php

   . . .

この行を追加したら、ファイルを保存して閉じます。

行った変更を実装するには、Apacheを再起動します。

sudo systemctl restart apache2

アプリケーションで `+ .htaccess +`の使用を有効にしたので、実際に何らかのセキュリティを実装するために作成する必要があります。

これを成功させるには、アプリケーションディレクトリ内にファイルを作成する必要があります。 次のように入力して、必要なファイルを作成し、root権限でテキストエディターで開くことができます。

sudo nano /usr/share/phpmyadmin/.htaccess

このファイル内で、次の情報を入力します。

/usr/share/phpmyadmin/.htaccess

これらの各行の意味は次のとおりです。

  • + AuthType Basic +:この行は、実装する認証タイプを指定します。 このタイプは、パスワードファイルを使用してパスワード認証を実装します。

  • + AuthName +:これは、認証ダイアログボックスのメッセージを設定します。 権限のないユーザーが保護対象に関する情報を取得できないように、この汎用を保持する必要があります。

  • + AuthUserFile +:これは、認証に使用されるパスワードファイルの場所を設定します。 これは、提供されるディレクトリの外部にある必要があります。 このファイルはすぐに作成します。

  • + Require valid-user +:これは、認証されたユーザーのみにこのリソースへのアクセスを許可することを指定します。 これは、許可されていないユーザーの侵入を実際に阻止するものです。

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

パスワードファイル用に選択した場所は `+ / etc / phpmyadmin / .htpasswd `でした。 これで、このファイルを作成し、 ` htpasswd +`ユーティリティで初期ユーザーに渡すことができます:

sudo htpasswd -c /etc/phpmyadmin/.htpasswd

作成するユーザーのパスワードを選択して確認するように求められます。 その後、入力したハッシュされたパスワードでファイルが作成されます。

追加のユーザーを入力する場合は、次のように `+ -c +`フラグを*せずに入力する必要があります。

sudo htpasswd /etc/phpmyadmin/.htpasswd

これで、phpMyAdminサブディレクトリにアクセスすると、設定した追加のアカウント名とパスワードの入力を求められます。

https:///phpmyadmin

image:https://assets.digitalocean.com/articles/phpmyadmin_1404/apache_auth.png [phpMyAdmin apache password]

Apache認証を入力すると、通常のphpMyAdmin認証ページが表示され、MariaDB認証情報が入力されます。 このセットアップにより、セキュリティの追加レイヤーが追加されます。これは、phpMyAdminが過去に脆弱性に悩まされていたためです。

結論

これで、phpMyAdminが設定され、Debian 9サーバーで使用できるようになります。 このインターフェイスを使用すると、データベース、ユーザー、テーブルなどを簡単に作成し、構造やデータの削除や変更などの通常の操作を実行できます。

Related