Debian9にphpMyAdminをインストールして保護する方法
序章
多くのユーザーはMariaDBのようなデータベース管理システムの機能を必要としていますが、MariaDBプロンプトだけからシステムを操作することに抵抗を感じる場合があります。
phpMyAdmin は、ユーザーがWebインターフェイスを介してMariaDBと対話できるように作成されました。 このガイドでは、phpMyAdminをインストールして保護し、Debian9システムでデータベースを安全に管理できるようにする方法について説明します。
前提条件
このガイドを開始する前に、いくつかの基本的な手順を完了する必要があります。
まず、サーバーにroot以外のユーザーがいると想定します。 sudo
特権、およびで構成されたファイアウォール 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
- 選択する
Yes
使用するかどうか尋ねられたときdbconfig-common
データベースを設定します - 次に、phpMyAdminのMySQLアプリケーションパスワードを選択して確認するように求められます
注: MariaDBはコミュニティで開発されたMySQLのフォークであり、2つのプログラムは密接に関連していますが、完全に互換性があるわけではありません。 phpMyAdminはMySQLデータベースを管理するために特別に設計されており、さまざまなダイアログボックスでMySQLを参照しますが、MariaDBのインストールはphpMyAdminで正しく機能しますのでご安心ください。
インストールプロセスにより、phpMyAdminApache構成ファイルが /etc/apache2/conf-enabled/
ディレクトリ。自動的に読み取られます。 あなたがする必要がある唯一のことは明示的に有効にすることです mbstring
非ASCII文字列を管理し、文字列を異なるエンコーディングに変換するために使用されるPHP拡張。 次のように入力してこれを行います。
- sudo phpenmod mbstring
その後、変更が認識されるようにApacheを再起動します。
- sudo systemctl restart apache2
これでphpMyAdminがインストールおよび構成されました。 ただし、ログインしてMariaDBデータベースの管理を開始する前に、MariaDBユーザーがプログラムとの対話に必要な特権を持っていることを確認する必要があります。
ステップ2—ユーザー認証と特権の調整
サーバーにphpMyAdminをインストールすると、次のデータベースユーザーが自動的に作成されます。 phpmyadmin
これは、プログラムの特定の基礎となるプロセスを実行します。 インストール時に設定した管理者パスワードでこのユーザーとしてログインするのではなく、別のアカウントを使用してログインすることをお勧めします。
Debianシステムへの新規インストールでは、 rootMariaDBユーザーは 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アドレスにアクセスし、続いてWebインターフェイスにアクセスできます。 /phpmyadmin
:
https://your_domain_or_IP/phpmyadmin
設定したユーザー名とパスワードを使用してインターフェイスにログインします。
ログインすると、次のようなユーザーインターフェイスが表示されます。
phpMyAdminに接続して操作できるようになったので、あとはシステムのセキュリティを強化して攻撃者からシステムを保護するだけです。
ステップ3—phpMyAdminインスタンスを保護する
phpMyAdminはどこにでもあるため、攻撃者に人気のあるターゲットであり、不正アクセスを防ぐために特別な注意を払う必要があります。 これを行う最も簡単な方法の1つは、Apacheの組み込みを使用して、アプリケーション全体の前にゲートウェイを配置することです。 .htaccess
認証および承認機能。
これを行うには、最初にの使用を有効にする必要があります .htaccess
Apache構成ファイルを編集してファイルをオーバーライドします。
Apache構成ディレクトリに配置されているリンクファイルを編集します。
- sudo nano /etc/apache2/conf-available/phpmyadmin.conf
追加します AllowOverride All
内のディレクティブ <Directory /usr/share/phpmyadmin>
次のような構成ファイルのセクション:
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
. . .
この行を追加したら、ファイルを保存して閉じます。
行った変更を実装するには、Apacheを再起動します。
- sudo systemctl restart apache2
これで有効になりました .htaccess
アプリケーションで使用する場合は、実際にセキュリティを実装するためにアプリケーションを作成する必要があります。
これを成功させるには、ファイルをアプリケーションディレクトリ内に作成する必要があります。 次のように入力して、必要なファイルを作成し、root権限でテキストエディタで開くことができます。
- sudo nano /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サーバーで使用できるようになります。 このインターフェースを使用すると、データベース、ユーザー、テーブルなどを簡単に作成し、構造やデータの削除や変更などの通常の操作を実行できます。