ウェブサイト検索

Debian 11 に phpMyAdmin をインストールして保護する方法


このページでは

  1. 前提条件
  2. はじめに
  3. LAMP サーバーをインストール
  4. phpMyAdmin をインストールして構成する
  5. phpMyAdmin 管理ユーザーを作成する
  6. phpMyAdmin 用に Apache を構成する
  7. phpMyAdmin にアクセス
  8. 安全な phpMyAdmin
  9. phpMyAdmin を確認
  10. 結論

phpMyAdmin は、Web インターフェイスから MySQL および MariaDB データベースを管理するために使用される無料のオープンソースの Web ベースのアプリケーションです。コマンドライン インターフェイスからデータベースを作成および管理することは、初心者ユーザーにとって非常に困難です。 phpMyAdmin は、MySQL データベース、ユーザー アカウント、および権限を管理し、SQL ステートメントを実行し、Web ブラウザーを介してデータをインポートおよびエクスポートするための簡単な方法を提供します。

この投稿では、Debian 11 に phpMyAdmin データベース管理ツールをインストールして保護する方法を紹介します。

前提条件

  • Debian 11 を実行しているサーバー。
  • サーバーで root パスワードが設定されている。

入門

開始する前に、システム パッケージを最新バージョンに更新することをお勧めします。次のコマンドを使用して、すべてのパッケージを更新できます。

apt-get update -y

システムが更新されたら、次のステップに進むことができます。

LAMP サーバーをインストールする

phpMyAdmin は PHP ベースのアプリケーションであり、Web サーバー上で実行されます。そのため、LAMP サーバーをサーバーにインストールする必要があります。次のコマンドを使用してインストールできます。

apt-get install apache2 mariadb-server libapache2-mod-php php-cli php-mysql php-zip php-curl php-xml php-mbstring php-zip php-gd unzip -y

phpMyAdmin のインストールと設定

まず、次のコマンドを使用して、公式 Web サイトから最新バージョンの phpMyAdmin をダウンロードします。

wget https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.zip

ダウンロードが完了したら、次のコマンドでダウンロードしたファイルを解凍します。

unzip phpMyAdmin-5.1.1-all-languages.zip

次に、次のコマンドを使用して、抽出したディレクトリを /usr/share に移動します。

mv phpMyAdmin-5.1.1-all-languages /usr/share/phpmyadmin

次に、次のコマンドで必要なディレクトリを作成します。

mkdir -p /var/lib/phpmyadmin/tmp

次に、phpMyAdmin ディレクトリに適切な所有権を設定します。

chown -R www-data:www-data /var/lib/phpmyadmin

次に、phpMyAdmin サンプル構成ファイルをコピーします。

cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

次に、pwgen をインストールし、次のコマンドで秘密鍵を生成します。

apt-get install pwgen -y
pwgen -s 32 1

出力:

pau9t1SG6lmaeCFxKqeeaY5N4erIa25K

次に、config.inc.php ファイルを編集して構成します。

nano /usr/share/phpmyadmin/config.inc.php

秘密鍵を定義し、次の行のコメントを外します。

$cfg['blowfish_secret'] = 'pau9t1SG6lmaeCFxKqeeaY5N4erIa25K'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'password';

$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

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

phpMyAdmin 管理者ユーザーの作成

phpMyAdmin を介してデータベースを管理するための別のユーザーを作成することを常にお勧めします。

まず、次のコマンドを使用して phpMyAdmin テーブルを MariaDB データベースにインポートします。

mysql < /usr/share/phpmyadmin/sql/create_tables.sql

次に、次のコマンドを使用して MariaDB シェルに接続します。

mysql

接続したら、次のコマンドを使用して、必要なすべての権限を phpmyadmin データベースに付与します。

MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'password';

次に、次のコマンドで管理者ユーザーを作成します。

MariaDB [(none)]> CREATE USER myadmin;

次に、次のコマンドを使用して、すべての権限を admin ユーザーに付与します。

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'myadmin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

次に、特権をフラッシュし、次のコマンドを使用して MariaDB シェルを終了します。

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

完了したら、次のステップに進むことができます。

phpMyAdmin 用に Apache を構成する

次に、phpMyAdmin 用の Apache 仮想ホスト構成ファイルを作成する必要があります。次のコマンドを使用して作成できます。

nano /etc/apache2/conf-available/phpmyadmin.conf

次の行を追加します。

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php

    <IfModule mod_php5.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>
    <IfModule mod_php.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>

</Directory>

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authz_core.c>
        <IfModule mod_authn_file.c>
            AuthType Basic
            AuthName "phpMyAdmin Setup"
            AuthUserFile /etc/phpmyadmin/htpasswd.setup
        </IfModule>
        Require valid-user
    </IfModule>
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
    Require all denied
</Directory>

終了したらファイルを保存して閉じ、次のコマンドで phpMyAdmin 構成ファイルを有効にします。

a2enconf phpmyadmin.conf

次に、Apache サービスをリロードして変更を適用します。

systemctl reload apache2

次のコマンドを使用して、Apache サービスのステータスを確認できます。

systemctl status apache2

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

? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-08-17 10:16:28 UTC; 2s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 45027 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 45031 (apache2)
      Tasks: 6 (limit: 2341)
     Memory: 14.6M
        CPU: 89ms
     CGroup: /system.slice/apache2.service
             ??45031 /usr/sbin/apache2 -k start
             ??45032 /usr/sbin/apache2 -k start
             ??45033 /usr/sbin/apache2 -k start
             ??45034 /usr/sbin/apache2 -k start
             ??45035 /usr/sbin/apache2 -k start
             ??45036 /usr/sbin/apache2 -k start

Aug 17 10:16:28 debian systemd[1]: Starting The Apache HTTP Server...

phpMyAdmin にアクセスする

この時点で、phpMyAdmin がインストールされ、構成されています。ここで、Web ブラウザーを開き、URL http://your-server-ip/phpmyadmin を使用して phpMyAdmin にアクセスします。 phpMyAdmin ログイン ページが表示されます。

管理者のユーザー名とパスワードを入力し、[Go] ボタンをクリックします。次のページに phpMyAdmin ダッシュボードが表示されます。

安全なphpMyAdmin

2 要素認証で phpMyAdmin を保護することをお勧めします。これは、.htaccess 認証および承認機能を使用して行うことができます。

まず、phpMyAdmin 構成ファイルを編集します。

nano /etc/apache2/conf-available/phpmyadmin.conf

次のサーバー ブロックに「AllowOverride All」行を追加します。

<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride All

    <IfModule mod_php5.c>

終了したらファイルを保存して閉じ、Apache サービスを再起動します。

systemctl restart apache2

次に、.htaccess ファイルを作成し、Apache 認証タイプを定義します。

nano /usr/share/phpmyadmin/.htaccess

次の行を追加します。

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /usr/share/phpmyadmin/.htpasswd
Require valid-user

ファイルを保存して閉じ、次のコマンドでユーザーを作成します。

htpasswd -c /usr/share/phpmyadmin/.htpasswd secureuser

以下に示すように、パスワードを設定するように求められます。

New password: 
Re-type new password: 
Adding password for user secureuser

phpMyAdmin を確認する

この時点で、phpMyAdmin は追加の認証によって保護されます。確認するには、Web ブラウザーを開き、URL http://your-server-ip/phpmyadmin を使用して phpMyAdmin にアクセスします。以下に示すように、追加のユーザー名とパスワードを求められます。

ユーザー名とパスワードを入力すると、通常の phpMyAdmin ログイン ページにリダイレクトされます。

結論

おめでとう! Debian 11 に phpMyAdmin を正常にインストールして保護しました。これで、phpMyAdmin を探索し、Web ブラウザーからデータベースの管理を開始できます。