序章

多くのユーザーはMySQLのようなデータベースシステムの機能を必要としていますが、MySQLコマンドラインクライアントからのみシステムを操作するにはSQL言語に精通している必要があるため、一部のユーザーにとっては推奨されるインターフェイスではない場合があります。

phpMyAdmin は、ユーザーがPHP開発環境と並行して実行される直感的なWebインターフェイスを介してMySQLと対話できるように作成されました。 このガイドでは、Nginxサーバーの上にphpMyAdminをインストールする方法と、セキュリティを強化するためにサーバーを構成する方法について説明します。

注: phpMyAdminなどのソフトウェアを使用する場合、セキュリティ上の重要な考慮事項があります。phpMyAdminはデータベースサーバー上で実行され、データベースクレデンシャルを処理し、ユーザーがデータベースに対して任意のSQLクエリを簡単に実行できるようにするためです。 phpMyAdminは広く展開されているPHPアプリケーションであるため、攻撃の対象となることがよくあります。 十分な情報に基づいて決定できるように、このチュートリアルで実行できるいくつかのセキュリティ対策について説明します。

前提条件

このガイドを開始する前に、次のものを利用できるようにする必要があります。

  • LEMP(Linux、Nginx、MySQL、PHP)スタックを実行しているUbuntu 18.04サーバーは、 ufw、Ubuntu18.04初期サーバーセットアップガイドで説明されているように。 サーバーをまだセットアップしていない場合は、 Ubuntu18.04へのLEMPスタックのインストールに関するガイドに従うことができます。
  • 非rootユーザーとしてこのサーバーにアクセスするには sudo 特権。

phpMyAdminはMySQLクレデンシャルを使用して認証を処理するため、サーバーとクライアント間の暗号化されたトラフィックを有効にするためにSSL/TLS証明書をインストールすることを強くお勧めします。 有効な証明書で構成された既存のドメインがない場合は、 Ubuntu18.04でLet’sEncryptを使用してNginxを保護する方法に関するこのガイドに従うことができます。

警告:サーバーにSSL / TLS証明書がインストールされておらず、続行する場合は、このガイドの手順5で説明されているように、SSHトンネルを介したアクセスの強制を検討してください。

これらの前提条件を満たしたら、ガイドの残りの部分に進むことができます。

ステップ1—phpMyAdminをインストールする

最初に行う必要があるのは、LEMPサーバーにphpMyAdminをインストールすることです。 この目標を達成するために、デフォルトのUbuntuリポジトリを使用します。

サーバーのパッケージインデックスを次のように更新することから始めましょう。

  1. sudo apt update

これで、phpMyAdminを次のコマンドでインストールできます。

  1. sudo apt install phpmyadmin

インストールプロセス中に、構成するWebサーバー(ApacheまたはLighttpd)を選択するように求められます。 NginxをWebサーバーとして使用しているため、ここで選択するべきではありません。 プレス tab その後 OK 次のステップに進みます。

次に、使用するかどうかを確認するメッセージが表示されます dbconfig-common アプリケーションデータベースを構成するため。 選択する Yes. これにより、phpMyAdminの内部データベースと管理ユーザーが設定されます。 phpmyadminMySQLユーザーの新しいパスワードを定義するように求められます。 空白のままにして、phpMyAdminにランダムにパスワードを作成させることもできます。

これでインストールは終了です。 Nginx WebサーバーがphpMyAdminファイルを正しく検索して提供するには、インストールファイルからNginxのドキュメントルートディレクトリへのシンボリックリンクを作成する必要があります。

  1. sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

これで、phpMyAdminのインストールが機能します。 インターフェイスにアクセスするには、サーバーのドメイン名またはパブリックIPアドレスに移動し、その後に移動します /phpmyadmin Webブラウザで:

https://server_domain_or_IP/phpmyadmin

前述のように、phpMyAdminはMySQLクレデンシャルを使用して認証を処理します。つまり、コンソールまたはAPIを介してデータベースに接続するために通常使用するのと同じユーザー名とパスワードを使用する必要があります。 MySQLユーザーの作成についてサポートが必要な場合は、SQLデータベースの管理方法に関するこのガイドを確認してください。

注: root MySQLユーザーとしてphpMyAdminにログインすることは、重大なセキュリティリスクを伴うためお勧めできません。 このガイドの次のステップで、ルートログインを無効にする方法を説明します。

この時点で、phpMyAdminのインストールは完全に機能しているはずです。 ただし、Webインターフェイスをインストールすることで、MySQLデータベースサーバーを外部に公開しました。 phpMyAdminの人気と、phpMyAdminがアクセスを提供する可能性のある大量のデータのために、このようなインストールは攻撃の一般的なターゲットです。 このガイドの次のセクションでは、phpMyAdminのインストールをより安全にするためのいくつかの異なる方法を紹介します。

ステップ2—phpMyAdminのデフォルトの場所を変更する

phpMyAdminのインストールを保護するための最も基本的な方法の1つは、見つけにくくすることです。 ボットは、 phpmyadmin pma admin mysqlなどの一般的なパスをスキャンします。 インターフェイスのURLをから変更する /phpmyadmin 非標準の何かにすると、自動化されたスクリプトがphpMyAdminのインストールを見つけて、ブルートフォース攻撃を試みるのがはるかに難しくなります。

phpMyAdminのインストールで、を指すシンボリックリンクを作成しました /usr/share/phpmyadmin、実際のアプリケーションファイルが配置されている場所。 phpMyAdminのインターフェイスURLを変更するには、このシンボリックリンクの名前を変更します。

まず、Nginxドキュメントのルートディレクトリに移動し、そこに含まれるファイルを一覧表示して、行う変更をよりよく理解しましょう。

  1. cd /var/www/html/
  2. ls -l

次の出力が表示されます。

Output
total 8 -rw-r--r-- 1 root root 612 Apr 8 13:30 index.nginx-debian.html lrwxrwxrwx 1 root root 21 Apr 8 15:36 phpmyadmin -> /usr/share/phpmyadmin

出力は、というシンボリックリンクがあることを示しています phpmyadmin このディレクトリにあります。 このリンク名は任意の名前に変更できます。 これにより、phpMyAdminのアクセスURLが変更され、一般的なエンドポイント名を検索するようにハードコードされたボットからエンドポイントを隠すことができます。

エンドポイントの目的をわかりにくくする名前を選択してください。 このガイドでは、エンドポイントに名前を付けます /nothingtosee、ただし、は別の名前を選択する必要があります。 これを実現するために、リンクの名前を変更します。

  1. sudo mv phpmyadmin nothingtosee
  2. ls -l

上記のコマンドを実行すると、次の出力が表示されます。

Output
total 8 -rw-r--r-- 1 root root 612 Apr 8 13:30 index.nginx-debian.html lrwxrwxrwx 1 root root 21 Apr 8 15:36 nothingtosee -> /usr/share/phpmyadmin

これで、古いURLにアクセスすると、404エラーが発生します。

https://server_domain_or_IP/phpmyadmin

これで、phpMyAdminインターフェイスが、構成したばかりの新しいURLで使用できるようになります。

https://server_domain_or_IP/nothingtosee

サーバー上のphpMyAdminの実際の場所をわかりにくくすることで、自動スキャンや手動のブルートフォースの試みからインターフェイスを保護します。

ステップ3—ルートログインを無効にする

MySQLおよび通常のLinuxシステムでは、 root アカウントは、システムへの無制限のアクセス権を持つ特別な管理アカウントです。 特権アカウントであることに加えて、それは既知のログイン名であり、ブルートフォース攻撃の明らかな標的になります。 リスクを最小限に抑えるために、ユーザーrootからのログイン試行を拒否するようにphpMyAdminを構成します。 このように、ユーザー root に有効な資格情報を提供しても、「アクセスが拒否されました」というエラーが発生し、ログインが許可されません。

使用することを選択したため dbconfig-common phpMyAdmin設定を構成して保存するために、デフォルトの構成が現在データベースに保存されています。 新しいものを作成する必要があります config.inc.php カスタム設定を定義するファイル。

phpMyAdminのPHPファイルは内部にありますが /usr/share/phpmyadmin、アプリケーションは次の場所にある構成ファイルを使用します /etc/phpmyadmin. 内部に新しいカスタム設定ファイルを作成します /etc/phpmyadmin/conf.d、名前を付けます pma_secure.php:

  1. sudo nano /etc/phpmyadmin/conf.d/pma_secure.php

次の構成ファイルには、パスワードなしのログインを無効にするために必要な設定が含まれています(AllowNoPassword に設定 false)およびルートログイン(AllowRoot に設定 false):

/etc/phpmyadmin/conf.d/pma_secure.php
<?php

# PhpMyAdmin Settings
# This should be set to a random string of at least 32 chars
$cfg['blowfish_secret'] = '3!#32@3sa(+=_4?),5XP_:U%%8\34sdfSdg43yH#{o';

$i=0;
$i++;

$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['Servers'][$i]['AllowRoot'] = false;

?>

編集が完了したら、を押してファイルを保存します CTRL + X それから y 変更を確認し、 ENTER. 変更は自動的に適用されます。 ここでログインページをリロードしてrootとしてログインしようとすると、 AccessDeniedエラーが発生します。

phpMyAdminのインストールでルートログインが禁止されるようになりました。 このセキュリティ対策は、ブルートフォーススクリプトがサーバー上のrootデータベースパスワードを推測しようとするのをブロックします。 さらに、phpMyAdminのWebインターフェイスにアクセスするための特権の低いMySQLアカウントの使用を強制します。これは、それ自体が重要なセキュリティ慣行です。

##ステップ4—認証ゲートウェイの作成

phpMyAdminのインストールを通常とは異なる場所に隠すと、ネットワークをスキャンする一部の自動ボットを回避できる可能性がありますが、標的型攻撃に対しては役に立ちません。 アクセスが制限されたWebアプリケーションをより適切に保護するには、攻撃者がアプリケーションに到達する前に攻撃者を阻止する方が一般的に効果的です。 このようにすると、一般的なエクスプロイトやブルートフォース攻撃を使用してアクセス資格情報を推測することができなくなります。

phpMyAdminの特定のケースでは、ログインインターフェイスをロックしておくことがさらに重要です。 それを世界に公開し続けることで、攻撃者がデータベースのクレデンシャルを推測するためのブルートフォースプラットフォームを提供します。

phpMyAdminのインストールに認証のレイヤーを追加すると、セキュリティを強化できます。 ユーザーは、phpMyAdminログイン画面が表示される前に、HTTP認証プロンプトを通過する必要があります。 Nginxを含むほとんどのWebサーバーは、この機能をネイティブに提供します。

これを設定するには、最初に認証資格情報を保存するためのパスワードファイルを作成する必要があります。 Nginxでは、パスワードを使用して暗号化する必要があります crypt() 関数。 すでにサーバーにインストールされているはずのOpenSSLスイートには、この機能が含まれています。

暗号化されたパスワードを作成するには、次のように入力します。

  1. openssl passwd

使用するパスワードを入力して確認するように求められます。 ユーティリティは、次のような暗号化されたバージョンのパスワードを表示します。

Output
O5az.RSPzd.HE

この値をコピーします。これは、作成する認証ファイルに貼り付ける必要があるためです。

次に、認証ファイルを作成します。 このファイルを呼び出します pma_pass Nginx構成ディレクトリに配置します。

  1. sudo nano /etc/nginx/pma_pass

このファイルでは、使用するユーザー名を指定し、その後にコロン(:)、続いてから受け取ったパスワードの暗号化されたバージョン openssl passwd 効用。

ユーザーに名前を付けます sammy、ただし、別のユーザー名を選択する必要があります。 ファイルは次のようになります。

/ etc / nginx / pma_pass
sammy:O5az.RSPzd.HE

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

これで、Nginx構成ファイルを変更する準備が整いました。 このガイドでは、次の場所にある構成ファイルを使用します。 /etc/nginx/sites-available/example.com. phpMyAdminが現在ホストされているWebの場所に関連するNginx構成ファイルを使用する必要があります。 開始するには、テキストエディタでこのファイルを開きます。

  1. sudo nano /etc/nginx/sites-available/example.com

を見つけます server ブロック、および location / その中のセクション。 newを作成する必要があります location このブロック内のセクションは、サーバー上のphpMyAdminの現在のパスと一致します。 このガイドでは、Webルートに対するphpMyAdminの場所は次のとおりです。 /nothingtosee:

/ etc / nginx / sites-available / default
server {
	. . .

    	location / {
            	try_files $uri $uri/ =404;
    	}

    	location ^~ /nothingtosee/ {
            	# Settings for phpMyAdmin will go here
    	}

	. . .
}

このブロック内で、2つの異なるディレクティブを設定する必要があります。 auth_basic、認証プロンプトに表示されるメッセージを定義し、および auth_basic_user_file、作成したファイルを指します。

/ etc / nginx / sites-available / default
server {
	. . .

    	location ^~ /nothingtosee/ {
        	auth_basic "Admin Login";
        	auth_basic_user_file /etc/nginx/pma_pass;

    	}
	. . .
}

最後に、このブロックには ^~ 新しい場所の定義の前のセレクター。 これは、すべてをキャッチするために正規表現として通常定義されるPHPファイルのルールと一致する場合に、Nginxがアクセスルールをバイパスしないようにするためです。 .php ファイル。 Nginx構成ファイルでは、正規表現の定義は標準の場所の定義よりも優先されるため、使用しない場合は ^~ 場所の先頭にあるセレクターの場合でも、ユーザーは次の場所に移動して認証プロンプトをバイパスできます。 http://example.com/nothingtosee/index.php 彼らのブラウザで。

The ^~ 場所定義の先頭にあるセレクターは、この場所に一致するものが見つかったときに他の一致を無視するようにNginxに指示します。 これは、内のサブディレクトリまたはファイルが /nothingtosee/ このルールと一致します。 ただし、PHPファイルを解析するための定義は、 ^~ セレクターの使用法では、新しいPHPロケーションブロックを内部に含める必要があります /nothingtosee 意味。 これにより、この場所にあるPHPファイルが適切に解析されます。そうでない場合は、ダウンロードコンテンツとしてブラウザに送信されます。

これは、内部PHPロケーションブロックを追加した後の構成ファイルの外観です。

/ etc / nginx / sites-available / default
server {
	. . .

    	location ^~ /nothingtosee/ {
          auth_basic "Admin Login";
          auth_basic_user_file /etc/nginx/pma_pass;
    
          location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
          }

    	}
	. . .
}

nothingtosee を、phpMyAdminが見つかる実際のパスに置き換えることを忘れないでください。 PHP-FPMソケットファイルの場所も再確認する必要があります。これは、現在インストールされているPHPのバージョンによって異なります。 この例では、 php7.2-fpm.sock これは、デフォルトでUbuntu18.04にインストールされているバージョンであるPHP7.2で有効です。 apt リポジトリ。

完了したら、ファイルを保存して閉じます。 構成ファイルが有効かどうかを確認するには、次のコマンドを実行します。

  1. sudo nginx -t

次の出力が期待されます。

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

新しい認証ゲートをアクティブにするには、Webサーバーをリロードする必要があります。

  1. sudo systemctl reload nginx

これで、WebブラウザでphpMyAdmin URLにアクセスすると、追加したユーザー名とパスワードの入力を求められるはずです。 pma_pass ファイル:

https://server_domain_or_IP/nothingtosee

クレデンシャルを入力すると、標準のphpMyAdminログインページが表示されます。

注:ページの更新が機能しない場合、すでにphpMyAdminを使用している場合は、キャッシュをクリアするか、別のブラウザセッションを使用する必要があります。

このゲートウェイは、セキュリティの追加レイヤーを提供するだけでなく、MySQLログからスパム認証の試行を排除するのに役立ちます。

##ステップ5—暗号化されたトンネルを介したアクセスの設定(オプション)

セキュリティを強化するために、phpMyAdminのインストールを許可されたホストのみにロックダウンすることができます。 Nginx構成ファイルで許可されたホストをホワイトリストにすると、リストにないIPアドレスからのリクエストはすべて拒否されます。

一部のユースケースではこの機能だけで十分な場合もありますが、主にほとんどの人が静的IPアドレスからインターネットにアクセスしないため、これが常に最良の長期的なソリューションであるとは限りません。 インターネットプロバイダーから新しいIPアドレスを取得するとすぐに、Nginx構成ファイルを新しいIPアドレスで更新するまで、phpMyAdminインターフェイスにアクセスできなくなります。

より堅牢で長期的なソリューションとして、IPベースのアクセス制御を使用して、ユーザーが承認済みIPアドレスまたはSSHトンネリング経由のローカルホスト。 これを設定する方法については、以下のセクションで説明します。

IPベースのアクセス制御とSSHトンネリングを組み合わせると、暗号化されたトンネルを使用してユーザーとサーバー間に安全なチャネルを提供するだけでなく、パブリックインターネット(許可されたIPを除く)からのアクセスを完全にブロックするため、セキュリティが大幅に向上します。

NginxでのIPベースのアクセス制御の設定

Nginxでは、IPベースのアクセス制御を対応するで定義できます location ディレクティブを使用した、特定のサイトのブロック allowdeny. たとえば、特定のホストからのリクエストのみを許可する場合は、関連する内部に次の2行をこの順序で含める必要があります。 location 保護したいサイトのブロック:

allow hostname_or_IP;
deny all;

必要な数のホストを許可できます。含める必要があるのは1つだけです。 allow それぞれの内部の承認されたホスト/IPごとの行 location 保護しているサイトをブロックします。 ディレクティブは、一致するものが見つかるか、リクエストが最終的に拒否されるまで、リストされているのと同じ順序で評価されます。 deny all 指令。

ここで、ローカルホストまたは現在のIPアドレスからのリクエストのみを許可するようにNginxを構成します。 まず、ローカルマシンがインターネットへの接続に使用している現在のパブリックIPアドレスを知る必要があります。 この情報を取得するにはさまざまな方法があります。 簡単にするために、ipinfo.ioによって提供されるサービスを使用します。 ブラウザでURLhttps://ipinfo.io/ip を開くか、ローカルマシンから次のコマンドを実行できます。

  1. curl https://ipinfo.io/ip

次のように、出力として単純なIPアドレスを取得する必要があります。

Output
203.0.113.111

これが現在のpublicIPアドレスです。 phpMyAdminのロケーションブロックを構成して、ローカルホストに加えて、そのIPからのリクエストのみを許可します。 内部のphpMyAdminの構成ブロックをもう一度編集する必要があります /etc/nginx/sites-available/example.com.

選択したコマンドラインエディターを使用して、Nginx構成ファイルを開きます。

  1. sudo nano /etc/nginx/sites-available/example.com

現在の構成にはすでにアクセスルールがあるため、ディレクティブを使用してIPベースのアクセス制御と組み合わせる必要があります。 satisfy all. このようにして、セキュリティを強化するために現在のHTTP認証プロンプトを保持できます。

編集が完了した後のphpMyAdminNginx構成は次のようになります。

/etc/nginx/sites-available/example.com
server {
	. . .

	location ^~ /nothingtosee/ {
    	    satisfy all; #requires both conditions
   	 
    	    allow 203.0.113.111; #allow your IP
    	    allow 127.0.0.1; #allow localhost via SSH tunnels
    	    deny all; #deny all other sources
   	 
    	    auth_basic "Admin Login";
    	    auth_basic_user_file /etc/nginx/pma_pass;

    	    location ~ \.php {
        	  include snippets/fastcgi-php.conf;
        	  fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    	    }
	}

	. . .
}

nonethtosee を、phpMyAdminが見つかる実際のパスに置き換え、強調表示されたIPアドレスを現在のパブリックIPアドレスに置き換えることを忘れないでください。

完了したら、ファイルを保存して閉じます。 構成ファイルが有効かどうかを確認するには、次のコマンドを実行します。

  1. sudo nginx -t

次の出力が期待されます。

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

次に、Webサーバーをリロードして、変更を有効にします。

  1. sudo systemctl reload nginx

IPアドレスは許可されたホストとして明示的にリストされているため、アクセスが妨げられることはありません。 phpMyAdminインストールにアクセスしようとしている他のユーザーは、403エラー(禁止)を受け取るようになりました。

https://server_domain_or_IP/nothingtosee

次のセクションでは、SSHトンネリングを使用してローカルリクエストを介してWebサーバーにアクセスする方法を説明します。 このようにして、IPアドレスが変更された場合でも、phpMyAdminのインターフェイスにアクセスできます。

暗号化されたトンネルを介したphpMyAdminへのアクセス

SSHトンネリングは、暗号化されたチャネルを介してネットワークトラフィックをリダイレクトする方法として機能します。 を実行することによって ssh サーバーへのログインに使用するコマンドと同様のコマンドを使用すると、ローカルマシンとそのサーバーの間に安全な「トンネル」を作成できます。 特定のローカルポートに着信するすべてのトラフィックは、インターネットに接続する前に、暗号化されたトンネルを介してリダイレクトされ、リモートサーバーをプロキシとして使用できるようになりました。 これは、VPN(仮想プライベートネットワーク)を使用した場合に発生することと似ていますが、SSHトンネリングの設定ははるかに簡単です。

SSHトンネリングを使用して、phpMyAdminを実行しているリモートWebサーバーにリクエストをプロキシします。 ローカルマシンとphpMyAdminがインストールされているサーバーの間にトンネルを作成することで、ローカルリクエストをリモートウェブサーバーにリダイレクトできます。さらに重要なのは、トラフィックが暗号化され、リクエストが[X261Xから送信されたかのようにNginxに到達することです。 ]localhost。 このように、接続元のIPアドレスに関係なく、phpMyAdminのインターフェイスに安全にアクセスできます。

ローカルマシンとリモートWebサーバー間のトラフィックは暗号化されるため、これは、phpMyAdminを実行しているWebサーバーにSSL/TLS証明書をインストールできない状況での安全な代替手段です。

ローカルマシンから、phpMyAdminにアクセスする必要があるときはいつでも次のコマンドを実行します。

  1. ssh user@server_domain_or_IP -L 8000:localhost:80 -L 8443:localhost:443 -N

コマンドの各部分を調べてみましょう。

  • user :phpMyAdminが実行されているサーバーに接続するためのSSHユーザー
  • hostname_or_IP :phpMyAdminが実行されているSSHホスト
  • -L 8000:localhost:80はポート8000でHTTPトラフィックをリダイレクトします
  • -L 8443:localhost:443はポート8443でHTTPSトラフィックをリダイレクトします
  • -N :リモートコマンドを実行しない

注:このコマンドは、 CTRL+C、この場合、SSH接続を終了し、パケットリダイレクトを停止します。 このコマンドをバックグラウンドモードで実行する場合は、SSHオプションを使用できます -f.

次に、ブラウザに移動して、server_domain_or_IPを次のように置き換えます localhost:PORT、 どこ PORT どちらかです 8000 HTTPまたは 8443 HTTPSの場合:

http://localhost:8000/nothingtosee
https://localhost:443/nothingtosee

注: https を介してphpMyAdminにアクセスしている場合、SSL証明書のセキュリティを質問するアラートメッセージが表示される場合があります。 これは、使用しているドメイン名(localhost)が、証明書に登録されているアドレス(phpMyAdminが実際に提供されているドメイン)と一致しないために発生します。 続行しても安全です。

上のすべてのリクエスト localhost:8000 (HTTP)および localhost:8443 (HTTPS)は、安全なトンネルを介してリモートphpMyAdminアプリケーションにリダイレクトされています。 phpMyAdminへのパブリックアクセスを無効にすることでセキュリティを強化しただけでなく、暗号化されたトンネルを使用してデータを送受信することにより、ローカルコンピューターとリモートサーバー間のすべてのトラフィックを保護しました。

phpMyAdminインターフェイス(あなたを含む)にアクセスしたい人にSSHトンネリングの使用を強制したい場合は、Nginx構成ファイルから他の許可されたIPを削除して、そのままにしておくことができます。 127.0.0.1 その場所へのアクセスを許可された唯一のホストとして。 誰もphpMyAdminに直接リクエストを送信できないことを考えると、セットアップを簡素化するためにHTTP認証を削除しても安全です。 このようなシナリオでは、構成ファイルは次のようになります。

/etc/nginx/sites-available/example.com
server {
   . . .

   location ^~ /nothingtosee/ {

   	allow 127.0.0.1; #allow localhost only
   	deny all; #deny all other sources

   	location ~ \.php {
       	include snippets/fastcgi-php.conf;
       	fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
   	}
   }

   . . .
}

Nginxの構成をでリロードしたら sudo systemctl reload nginx、phpMyAdminのインストールはロックダウンされ、ユーザーはリダイレクトされたリクエストを介してphpMyAdminのインターフェイスにアクセスするためにSSHトンネルを使用する必要があります必要があります

結論

このチュートリアルでは、NginxをWebサーバーとして実行しているUbuntu18.04にphpMyAdminをインストールする方法を説明しました。 また、ルートログインの無効化、追加の認証レイヤーの作成、SSHトンネリングを使用したローカルリクエストのみによるphpMyAdminインストールへのアクセスなど、UbuntuでのphpMyAdminインストールを保護するための高度な方法についても説明しました。

このチュートリアルを完了すると、適度に安全なWebインターフェイスからMySQLデータベースを管理できるようになります。 このユーザーインターフェイスは、MySQLコマンドラインを介して利用可能な機能のほとんどを公開します。 データベースとスキーマを参照し、クエリを実行し、新しいデータセットと構造を作成できます。