Debian9にphpMyAdminをインストールして保護する方法
序章
多くのユーザーはMariaDBのようなデータベース管理システムの機能を必要としていますが、MariaDBプロンプトだけからシステムを操作することに抵抗を感じる場合があります。
phpMyAdmin は、ユーザーがWebインターフェイスを介してMariaDBと対話できるように作成されました。 このガイドでは、phpMyAdminをインストールして保護し、Debian9システムでデータベースを安全に管理できるようにする方法について説明します。
前提条件
このガイドを開始する前に、いくつかの基本的な手順を完了する必要があります。
まず、で説明されているように、サーバーにsudo
権限を持つ非root ユーザーと、ufw
で構成されたファイアウォールがあると想定します。 ] Debian9の初期サーバーセットアップガイド。
また、Debian 9サーバーへのLAMP(Linux、Apache、MariaDB、およびPHP)のインストールが完了していることを前提としています。 まだこれを行っていない場合は、 Debian9へのLAMPスタックのインストールに関するガイドに従ってこれを設定してください。
最後に、phpMyAdminなどのソフトウェアを使用する場合は、次のような重要なセキュリティ上の考慮事項があります。
- MariaDBインストールと直接通信します
- MariaDBクレデンシャルを使用して認証を処理します
- 任意のSQLクエリの結果を実行して返します
これらの理由と、攻撃の標的となることが多い広く展開されているPHPアプリケーションであるため、プレーンHTTP接続を介してリモートシステムでphpMyAdminを実行しないでください。 SSL / TLS証明書で構成された既存のドメインがない場合は、このガイドに従って、 Debian9でLet'sEncryptを使用してApacheを保護することができます。 これには、ドメイン名の登録、サーバーのDNSレコードの作成、およびApache仮想ホストの設定が必要になります。
これらの手順を完了すると、このガイドを開始する準備が整います。
ステップ1—phpMyAdminをインストールする
開始するには、デフォルトのDebianリポジトリからphpMyAdminをインストールします。
これは、サーバーのパッケージインデックスを更新し、apt
パッケージシステムを使用してファイルをプルダウンし、システムにインストールすることで実行されます。
sudo apt update sudo apt install phpmyadmin php-mbstring php-gettext
これにより、インストールを正しく構成するためにいくつかの質問が表示されます。
警告:プロンプトが表示されると、「apache2」が強調表示されますが、は選択されていません。 SPACE
を押してApacheを選択しない場合、インストーラーはインストール中に必要なファイルを移動しません。 SPACE
、TAB
、ENTER
の順に押して、Apacheを選択します。
- サーバーの選択には、
apache2
を選択します dbconfig-common
を使用してデータベースをセットアップするかどうかを尋ねられたら、Yes
を選択します- 次に、phpMyAdminのMySQLアプリケーションパスワードを選択して確認するように求められます
注: MariaDBはコミュニティで開発されたMySQLのフォークであり、2つのプログラムは密接に関連していますが、完全に互換性があるわけではありません。 phpMyAdminはMySQLデータベースを管理するために特別に設計されており、さまざまなダイアログボックスでMySQLを参照しますが、MariaDBのインストールはphpMyAdminで正しく機能しますのでご安心ください。
インストールプロセスにより、phpMyAdminApache構成ファイルが/etc/apache2/conf-enabled/
ディレクトリに追加され、そこで自動的に読み取られます。 あなたがする必要がある唯一のことは、非ASCII文字列を管理し、文字列を異なるエンコーディングに変換するために使用されるmbstring
PHP拡張機能を明示的に有効にすることです。 次のように入力してこれを行います。
sudo phpenmod mbstring
その後、変更が認識されるようにApacheを再起動します。
sudo systemctl restart apache2
これでphpMyAdminがインストールおよび構成されました。 ただし、ログインしてMariaDBデータベースの管理を開始する前に、MariaDBユーザーがプログラムとの対話に必要な特権を持っていることを確認する必要があります。
ステップ2—ユーザー認証と特権の調整
phpMyAdminをサーバーにインストールすると、プログラムの特定の基盤となるプロセスを実行するphpmyadmin
というデータベースユーザーが自動的に作成されました。 インストール時に設定した管理者パスワードでこのユーザーとしてログインするのではなく、別のアカウントを使用してログインすることをお勧めします。
Debianシステムへの新規インストールでは、 root MariaDBユーザーは、パスワードではなく、デフォルトでunix_socket
プラグインを使用して認証するように設定されています。 これにより、多くの場合、セキュリティと使いやすさが向上しますが、このユーザーを介して外部プログラム(phpMyAdminなど)の管理者権限を許可する必要がある場合は、事態が複雑になる可能性もあります。 サーバーはログローテーションやサーバーの起動と停止などのタスクにrootアカウントを使用するため、rootアカウントの認証の詳細を変更しないことをお勧めします。 phpMyAdminではユーザーがパスワードで認証する必要があるため、インターフェイスにアクセスするには、新しいMariaDBアカウントを作成する必要があります。
LAMPスタックのインストールの前提条件のチュートリアルに従い、手順2で説明したようにMariaDBユーザーアカウントを作成した場合は、セットアップ時に作成したパスワードを使用して、そのアカウントでphpMyAdminにログインできます。このリンクにアクセス:
https://your_domain_or_IP/phpmyadmin
MariaDBユーザーをまだ作成していない場合、または作成したがphpMyAdminを介してデータベースを管理する目的で別のユーザーを作成したい場合は、このセクションに進んでセットアップ方法を学習してください。
MariaDBシェルを開くことから始めます。
sudo mariadb
注: MariaDBサーバーの新しいユーザーアカウントを既に作成している場合と同様に、パスワード認証を有効にしている場合は、別のコマンドを使用してMariaDBシェルにアクセスする必要があります。 以下は、通常のユーザー権限でMariaDBクライアントを実行し、認証することによってのみデータベース内の管理者権限を取得します。
mariadb -u user -p
そこから、新しいユーザーを作成し、強力なパスワードを設定します。
CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
次に、新しいユーザーに適切な権限を付与します。 たとえば、次のコマンドを使用して、データベース内のすべてのテーブルにユーザー権限を付与し、ユーザー権限を追加、変更、および削除する権限を付与できます。
GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
その後、MariaDBシェルを終了します。
exit
これで、サーバーのドメイン名またはパブリックIPアドレスにアクセスし、続いて/phpmyadmin
にアクセスして、Webインターフェイスにアクセスできます。
https://your_domain_or_IP/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 AllowOverride All . . .
この行を追加したら、ファイルを保存して閉じます。
行った変更を実装するには、Apacheを再起動します。
sudo systemctl restart apache2
アプリケーションで.htaccess
の使用を有効にしたので、実際にセキュリティを実装するためにアプリケーションを作成する必要があります。
これを成功させるには、ファイルをアプリケーションディレクトリ内に作成する必要があります。 次のように入力して、必要なファイルを作成し、root権限でテキストエディタで開くことができます。
sudo nano /usr/share/phpmyadmin/.htaccess
このファイル内に、次の情報を入力します。
/usr/share/phpmyadmin/.htaccess
AuthType Basic AuthName "Restricted Files" AuthUserFile /etc/phpmyadmin/.htpasswd Require valid-user
これらの各行の意味は次のとおりです。
AuthType Basic
:この行は、実装している認証タイプを指定します。 このタイプは、パスワードファイルを使用してパスワード認証を実装します。AuthName
:認証ダイアログボックスのメッセージを設定します。 許可されていないユーザーが保護対象に関する情報を取得しないように、この汎用を維持する必要があります。AuthUserFile
:認証に使用するパスワードファイルの場所を設定します。 これは、提供されているディレクトリの外にある必要があります。 このファイルはまもなく作成されます。Require valid-user
:これは、認証されたユーザーのみにこのリソースへのアクセスを許可する必要があることを指定します。 これは、許可されていないユーザーの侵入を実際に阻止するものです。
終了したら、ファイルを保存して閉じます。
パスワードファイル用に選択した場所は/etc/phpmyadmin/.htpasswd
でした。 これで、このファイルを作成し、htpasswd
ユーティリティを使用して初期ユーザーに渡すことができます。
sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
作成するユーザーのパスワードを選択して確認するように求められます。 その後、入力したハッシュパスワードを使用してファイルが作成されます。
追加のユーザーを入力する場合は、次のように ' -c
フラグなしで入力する必要があります。
sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser
これで、phpMyAdminサブディレクトリにアクセスすると、設定した追加のアカウント名とパスワードの入力を求められます。
https://domain_name_or_IP/phpmyadmin
Apache認証を入力すると、通常のphpMyAdmin認証ページが表示され、MariaDBの資格情報を入力できます。 この設定により、セキュリティの層が追加されます。これは、phpMyAdminが過去に脆弱性に悩まされていたため、望ましいことです。
結論
これで、phpMyAdminが構成され、Debian9サーバーで使用できるようになります。 このインターフェースを使用すると、データベース、ユーザー、テーブルなどを簡単に作成し、構造やデータの削除や変更などの通常の操作を実行できます。