Ubuntu16.04にphpMyAdminをインストールして保護する方法
序章
多くのユーザーはMySQLのようなデータベース管理システムの機能を必要としていますが、MySQLプロンプトだけからシステムを操作することに抵抗を感じる場合があります。
phpMyAdmin は、ユーザーがWebインターフェイスを介してMySQLと対話できるように作成されました。 このガイドでは、phpMyAdminをインストールして保護し、Ubuntu16.04システムからデータベースを安全に管理できるようにする方法について説明します。
前提条件
このガイドを開始する前に、いくつかの基本的な手順を完了する必要があります。
まず、Ubuntu 16.04 の初期サーバーセットアップの手順1〜4で説明されているように、sudo権限を持つroot以外のユーザーを使用していると想定します。
また、Ubuntu 16.04サーバーへのLAMP(Linux、Apache、MySQL、およびPHP)のインストールが完了していることを前提としています。 これがまだ完了していない場合は、 Ubuntu16.04へのLAMPスタックのインストールに関するこのガイドに従うことができます。
最後に、phpMyAdminなどのソフトウェアを使用する場合は、次のような重要なセキュリティ上の考慮事項があります。
- MySQLインストールと直接通信します
- MySQLクレデンシャルを使用して認証を処理します
- 任意のSQLクエリの結果を実行して返します
これらの理由と、攻撃の標的となることが多い広く展開されているPHPアプリケーションであるため、プレーンHTTP接続を介してリモートシステムでphpMyAdminを実行しないでください。 SSL / TLS証明書で構成された既存のドメインがない場合は、 Ubuntu16.04でLet’sEncryptを使用してApacheを保護する方法に関するこのガイドに従うことができます。
これらの手順を完了すると、このガイドを開始する準備が整います。
ステップ1—phpMyAdminをインストールします
開始するには、デフォルトのUbuntuリポジトリからphpMyAdminをインストールします。
これを行うには、ローカルパッケージインデックスを更新してから、 apt
ファイルをプルダウンしてシステムにインストールするためのパッケージングシステム:
- sudo apt-get update
- sudo apt-get install phpmyadmin php-mbstring php-gettext
これにより、インストールを正しく構成するためにいくつかの質問が表示されます。
警告:最初のプロンプトが表示されると、apache2が強調表示されますが、は選択されていません。 スペースを押してApacheを選択しない場合、インストーラーはインストール中に必要なファイルを移動しません。 スペース、タブ、 Enter の順に押して、Apacheを選択します。
- サーバーの選択には、apache2を選択します。
- 使用するかどうか尋ねられたら、はいを選択します
dbconfig-common
データベースを設定します - データベース管理者のパスワードの入力を求められます
- 次に、パスワードを選択して確認するように求められます。
phpMyAdmin
アプリケーション自体
インストールプロセスでは、実際にphpMyAdminApache構成ファイルが /etc/apache2/conf-enabled/
ディレクトリ。自動的に読み取られます。
私たちがする必要がある唯一のことは、PHPを明示的に有効にすることです mcrypt
と mbstring
次のように入力することで実行できる拡張機能:
- sudo phpenmod mcrypt
- sudo phpenmod mbstring
その後、変更が認識されるようにするには、Apacheを再起動する必要があります。
- sudo systemctl restart apache2
これで、サーバーのドメイン名またはパブリックIPアドレスにアクセスしてからWebインターフェイスにアクセスできます。 /phpmyadmin
:
https://domain_name_or_IP/phpmyadmin
これで、を使用してインターフェイスにログインできます。 root
MySQLのインストール中に設定したユーザー名と管理者パスワード。
ログインすると、次のようなユーザーインターフェイスが表示されます。
ステップ2—phpMyAdminインスタンスを保護します
phpMyAdminインターフェイスをかなり簡単に起動して実行することができました。 ただし、まだ完了していません。 どこにでもあるため、phpMyAdminは攻撃者に人気のあるターゲットです。 不正アクセスを防ぐために、追加の手順を実行する必要があります。
これを行う最も簡単な方法の1つは、アプリケーション全体の前にゲートウェイを配置することです。 これは、Apacheの組み込みを使用して行うことができます .htaccess
認証および承認機能。
.htaccessオーバーライドを許可するようにApacheを設定する
まず、の使用を有効にする必要があります .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ファイルを作成する
これで有効になりました .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
:これは、認証されたユーザーのみにこのリソースへのアクセスを許可する必要があることを指定します。 これは、許可されていないユーザーの侵入を実際に阻止するものです。
終了したら、ファイルを保存して閉じます。
認証用の.htpasswdファイルを作成します
パスワードファイル用に選択した場所は「/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認証ページが表示され、他の資格情報を入力できます。 phpMyAdminは過去に脆弱性に悩まされていたため、これによりセキュリティの層が追加されます。
結論
これで、phpMyAdminが構成され、Ubuntu16.04サーバーで使用できるようになります。 このインターフェースを使用すると、データベース、ユーザー、テーブルなどを簡単に作成し、構造やデータの削除や変更などの通常の操作を実行できます。