PHP前書き多くのユーザーはMySQLのようなデータベースシステムの機能を必要としますが、MySQLコマンドラインクライアントからのみシステムと対話するには、SQL言語に精通している必要があります。phpMyAdminは、ユーザーがPHP開発環境と並行して実行される直感的なWebインターフェースを介してMySQLと対話できるように作成されました。このガイドでは、Nginxサーバーの上にphpMyAdminをインストールする方法と、セキュリティを強化するためにサーバーを構成する方法について説明します。前提条件このガイドを開始する前に、次のものが必要です。9の初期サーバーセットアップガイド]。サーバーをまだセットアップしていない場合は、https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-onのガイドに従ってください。9へのLEMPスタックのインストール]。+`権限を持つ通常のユーザーとしてこのサーバーにアクセスします。TLS証明書をインストールして、サーバーとクライアント間の暗号化されたトラフィックを有効にすることを強くお勧めします。有効な証明書で構成された既存のドメインがない場合は、https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encryptのガイドに従ってください。Encryptを使用してNginxを保護する方法]。これらの前提条件を満たしたら、残りのガイドに進むことができます。ステップ1-phpMyAdminのインストール最初に行う必要があるのは、phpMyAdminをLEMPサーバーにインストールすることです。この目標を達成するために、デフォルトのDebianリポジトリを使用します。phpmyadminインストールプロセス中に、設定するWebサーバー(Apache_または_Lighthttp)を選択するよう求められます。NginxをWebサーバーとして使用しているため、ここでは選択しないでください。OK」を押して、次のステップに進みます。」を使用するかどうかを尋ねられます。「+はい」を選択します。これにより、phpMyAdminの内部データベースと管理ユーザーが設定されます。MySQLユーザーの新しいパスワードを定義するように求められます。空白のままにして、phpMyAdminでランダムにパスワードを作成することもできます。これでインストールが完了します。WebサーバーがphpMyAdminファイルを正しく検索して提供するには、インストールファイルからNginxのドキュメントルートディレクトリへのシンボリックリンクを作成する必要があります。/var/www/html/phpmyadminこれで、phpMyAdminインストールが動作可能になりました。[phpMyAdminログイン画面]前述のように、phpMyAdminはMySQL資格情報を使用して認証を処理します。通常はコンソールまたはAPIを介してデータベースに接続するために使用するのと同じユーザー名とパスワードを使用する必要があります。[管理方法SQLデータベース]。この時点で、phpMyAdminのインストールは完全に機能するはずです。ウェブインターフェースをインストールすることで、MySQLデータベースサーバーを外部に公開しました。phpMyAdminは人気があり、アクセスできる大量のデータがあるため、このようなインストールは一般的な攻撃の標的です。このガイドの以下のセクションでは、phpMyAdminのインストールをより安全にするためのいくつかの方法を紹介します。ステップ2-phpMyAdminのデフォルトの場所を変更するphpMyAdminインストールを保護する最も基本的な方法の1つは、見つけにくくすることです。mysql」などの一般的なパスをスキャンします。+」から非標準のものに変更すると、自動化されたスクリプトがphpMyAdminのインストールを見つけてブルートフォース攻撃を試みるのが非常に難しくなります。+`を指すシンボリックリンクを作成しました。phpMyAdminのインターフェースURLを変更するには、このシンボリックリンクの名前を変更します。Nginxドキュメントのルートディレクトリに移動し、そこに含まれるファイルを一覧表示して、変更の内容を把握します。-l次の出力が表示されます。+`というシンボリックリンクがあることを示しています。このリンク名は自由に変更できます。これにより、phpMyAdminアクセスURLが変更され、一般的なエンドポイント名を検索するためにハードコードされたボットからエンドポイントを不明瞭にすることができます。エンドポイントの目的をわかりにくくする名前を選択してください。+」という名前を付けますが、別の名前を選択する必要があります。これを実現するために、リンクの名前を変更します。-l上記のコマンドを実行すると、次の出力が表示されます。404エラー]phpMyAdminインターフェースは、設定したばかりの新しいURLで利用可能になります。[phpMyAdminログイン画面]サーバー上のphpMyAdminの実際の場所を難読化することで、自動化されたスキャンや手動の総当たり攻撃からインターフェイスを保護します。アカウントは、システムへの無制限のアクセス権を持つ特別な管理アカウントです。特権アカウントであることに加えて、それは既知のログイン名であるため、ブルートフォース攻撃の明らかな標的になります。ログイン試行を拒否するようにphpMyAdminを構成します。*に有効な資格情報を提供しても、「アクセス拒否」エラーが表示され、ログインが許可されません。」を使用することを選択したため、デフォルトの構成は現在データベースに保存されています。config.inc.php`ファイルを作成する必要があります。`にある設定ファイルを使用します。+`という名前を付けます。+`に設定)を無効にするために必要な設定が含まれています。ENTER」を押してファイルを保存します。変更は自動的に適用されます。*エラーが表示されます。[アクセス拒否]phpMyAdminインストールでのルートログインは禁止されています。このセキュリティ対策は、ブルートフォーススクリプトがサーバー上の_root_データベースパスワードを推測しようとするのをブロックします。phpMyAdminのウェブインターフェースにアクセスするために、権限の低いMySQLアカウントの使用を強制します。これは、それ自体が重要なセキュリティ慣行です。ステップ4-認証ゲートウェイの作成phpMyAdminインストールを通常とは異なる場所に非表示にすると、ネットワークをスキャンする一部の自動化されたボットを回避できますが、標的型攻撃に対しては役に立ちません。アクセスが制限されているWebアプリケーションをより適切に保護するには、通常、攻撃者がアプリケーションに到達する前に攻撃者を阻止する方が効果的です。この方法では、一般的なエクスプロイトやブルートフォース攻撃を使用してアクセス資格情報を推測できなくなります。phpMyAdminの特定のケースでは、ログインインターフェイスをロックしておくことがさらに重要です。世界中に公開することで、攻撃者がデータベース認証情報を推測するためのブルートフォースプラットフォームを提供します。phpMyAdminインストールに追加の認証レイヤーを追加すると、セキュリティを強化できます。ユーザーは、phpMyAdminログイン画面が表示される前に、HTTP認証プロンプトを通過する必要があります。Nginxを含むほとんどのWebサーバーは、この機能をネイティブで提供します。これを設定するには、最初に認証資格情報を保存するパスワードファイルを作成する必要があります。crypt()+`関数を使用してパスワードを暗号化する必要があります。サーバーにインストール済みのOpenSSLスイートには、この機能が含まれています。暗号化されたパスワードを作成するには、次を入力します。passwd使用するパスワードの入力と確認を求められます。ユーティリティは、次のようなパスワードの暗号化されたバージョンを表示します。Outputこの値をコピーします。作成する認証ファイルに貼り付ける必要があります。次に、認証ファイルを作成します。+」と呼び、Nginx構成ディレクトリに配置します。+`ユーティリティから受け取ったパスワードの暗号化バージョンを指定します。+」という名前を付けますが、別のユーザー名を選択する必要があります。ファイルは次のようになります。pma_pass:完了したら、ファイルを保存して閉じます。これで、Nginx構成ファイルを変更する準備が整いました。+」にある設定ファイルを使用します。phpMyAdminが現在ホストされているWebロケーションに関連するNginx構成ファイルを使用する必要があります。テキストエディタでこのファイルを開き、開始します。`セクションを見つけます。n`セクションを作成する必要があります。.}このブロック内で、2つの異なるディレクティブを設定する必要があります。これは、設定ファイルが完了したときにどのように見えるかです。.}完了したら、ファイルを保存して閉じます。構成ファイルが有効かどうかを確認するには、次を実行できます。-t次の出力が期待されます。successful新しい認証ゲートをアクティブにするには、Webサーバーをリロードする必要があります。+`ファイルに追加したユーザー名とパスワードの入力を求められます。[Nginx認証ページ]資格情報を入力すると、標準のphpMyAdminログインページが表示されます。セキュリティの追加レイヤーを提供することに加えて、このゲートウェイは、MySQLログをスパム認証の試行から保護します。ステップ5-暗号化されたトンネルを介したアクセスのセットアップ(オプション)セキュリティを強化するために、phpMyAdminインストールを許可されたホストのみにロックダウンすることができます。Nginx構成ファイルで許可ホストを_ホワイトリスト_できます。これにより、リストにないIPアドレスからの要求は拒否されます。一部のユースケースではこの機能だけで十分な場合もありますが、主にほとんどの人が静的IPアドレスからインターネットにアクセスしないという事実により、常に最良の長期ソリューションとは限りません。インターネットプロバイダーから新しいIPアドレスを取得すると、Nginx構成ファイルを新しいIPアドレスで更新するまで、phpMyAdminインターフェースにアクセスできなくなります。localhostからアクセスする場合にのみphpMyAdminインターフェイスにアクセスできるセットアップを作成できます。これを設定する方法については、以下のセクションで説明します。IPベースのアクセス制御とSSHトンネリングを組み合わせると、暗号化されたトンネルを使用してユーザーとサーバー間に安全なチャネルを提供することに加えて、パブリックインターネット(承認されたIPを除く)からのアクセスを完全にブロックするため、セキュリティが大幅に向上します。」ブロックでIPベースのアクセス制御を定義できます。+」ブロック内に次の2行をこの順序で含める必要があります。all;必要な数のホストを許可できます。」行を含めるだけで済みます。+`ディレクティブによりリクエストが最終的に拒否されるまで、リストされているのと同じ順序で評価されます。localhostまたは現在のIPアドレスからのリクエストのみを許可するようにNginxを設定します。ローカルマシンがインターネットへの接続に使用している現在のパブリックIPアドレスを知る必要があります。この情報を取得するにはさまざまな方法があります。[ipinfo.io]によって提供されるサービスを使用します。https://ipinfo.io/ipを開くか、*ローカルマシン*から次のコマンドを実行します。https://ipinfo.io/ip次のように、出力として単純なIPアドレスを取得する必要があります。localhostに加えて、そのIPからのリクエストのみを許可するようにphpMyAdminのロケーションブロックを設定します。+`内のphpMyAdminの設定ブロックをもう一度編集する必要があります。選択したコマンドラインエディターを使用してNginx構成ファイルを開きます。+`ディレクティブを使用してIPベースのアクセス制御とそれを組み合わせる必要があります。これにより、現在のHTTP認証プロンプトを保持してセキュリティを強化できます。Nginxの構成の様子です。.}phpMyAdminが見つかる実際のパスと、強調表示されているIPアドレスを現在のパブリックIPアドレスに置き換えてください。完了したら、ファイルを保存して閉じます。構成ファイルが有効かどうかを確認するには、次を実行できます。-t次の出力が期待されます。successful次に、変更を有効にするためにWebサーバーをリロードします。nginxIPアドレスは承認済みホストとして明示的にリストされているため、アクセスを妨げないでください。error]次のセクションでは、SSHトンネリングを使用してローカルリクエストを介してWebサーバーにアクセスする方法について説明します。これにより、IPアドレスが変更された場合でも、phpMyAdminのインターフェースにアクセスできます。暗号化されたトンネルを介したphpMyAdminへのアクセスSSHトンネリングは、暗号化されたチャネルを介してネットワークトラフィックをリダイレクトする方法として機能します。+」コマンドを実行することにより、ローカルマシンとそのサーバーの間に安全な「トンネル」を作成できます。特定のローカルポートに着信するすべてのトラフィックは、暗号化されたトンネルを介してリダイレクトされ、インターネットに到達する前にプロキシとしてリモートサーバーを使用できるようになりました。Network)を使用する場合と同様ですが、SSHトンネリングの設定ははるかに簡単です。SSHトンネリングを使用して、phpMyAdminを実行しているリモートWebサーバーにリクエストをプロキシします。ローカルマシンとphpMyAdminがインストールされているサーバーの間にトンネルを作成することで、ローカルリクエストをリモートWebサーバーにリダイレクトできます。重要なことは、トラフィックが暗号化され、リクエストが_localhost_から来るようにNginxに到達することです。これにより、接続元のIPアドレスに関係なく、phpMyAdminのインターフェースに安全にアクセスできます。TLS証明書をインストールできない場合の安全な代替手段です。*ローカルマシン*から、phpMyAdminへのアクセスが必要な場合は常にこのコマンドを実行します。-Nコマンドの各部分を調べてみましょう。localhost:PORT」に置き換えます。+(HTTPS)に対するすべてのリクエストは、安全なトンネルを介してリモートphpMyAdminアプリケーションにリダイレクトされます。phpMyAdminへのパブリックアクセスを無効にしてセキュリティを強化しただけでなく、暗号化されたトンネルを使用してデータを送受信することにより、ローカルコンピューターとリモートサーバー間のすべてのトラフィックを保護しました。+`を残して、Nginx設定ファイルから他の許可されたIPを削除することでそれを行うことができます。その場所にアクセスできる唯一のホストとして。誰もphpMyAdminに直接リクエストを送信できないことを考慮すると、セットアップを簡素化するためにHTTP認証を削除しても安全です。このようなシナリオでは、構成ファイルは次のようになります。+」でNginxの設定をリロードすると、phpMyAdminのインストールがロックダウンされ、リダイレクトされたリクエストを介してphpMyAdminのインターフェースにアクセスするために、ユーザーはSSHトンネルを使用する必要があります。18.04にphpMyAdminをインストールする方法を見ました。ルートログインの無効化、認証の追加レイヤーの作成、SSHトンネリングを使用したローカルリクエストのみによるphpMyAdminインストールへのアクセスなど、UbuntuでphpMyAdminインストールを保護する高度な方法についても説明しました。このチュートリアルを完了すると、適度に安全なWebインターフェイスからMySQLデータベースを管理できるようになります。このユーザーインターフェイスは、MySQLコマンドラインを介して利用可能な機能のほとんどを公開します。データベースとスキーマを参照し、クエリを実行し、新しいデータセットと構造を作成できます。