ウェブサイト検索

Debian 11にphpMyAdminをインストールしてセキュリティを確保する方法


Debian 11にphpMyAdminをインストールしてセキュリティを確保する方法

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

この記事では、Debian 11 に phpMyAdmin データベース管理ツールをインストールし、安全にする方法を紹介します。

前提条件

  • Debian 11を実行しているサーバー。
  • サーバーにはルートパスワードが設定されています。

始めに

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

apt-get update -y

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

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

phpMyAdminはPHPベースのアプリケーションであり、ウェブサーバー上で動作します。そのため、サーバーに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をインストールして設定する

まず、以下のコマンドを使用して公式ウェブサイトから最新のバージョンの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;

次に、以下のコマンドを使用して管理者ユーザーにすべての権限を付与します:

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はインストールされ、設定されています。次に、ウェブブラウザを開き、URL http://your-server-ip/phpmyadmin を使用してphpMyAdminにアクセスしてください。phpMyAdminのログインページが表示されるはずです:

管理者のユーザー名とパスワードを入力し、進むボタンをクリックしてください。次のページにphpMyAdminのダッシュボードが表示されるはずです:

phpMyAdminを安全にする

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は追加の認証で保護されています。それを確認するには、ウェブブラウザを開き、URLhttp://your-server-ip/phpmyadminを使用してphpMyAdminにアクセスしてください。以下に示すように、追加のユーザー名とパスワードを求められます:

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

結論

おめでとうございます!Debian 11にphpMyAdminを正常にインストールしてセキュリティを確保しました。これで、phpMyAdminを探索し、ウェブブラウザからデータベースを管理することができます。

関連記事: