Debian 11 に phpMyAdmin をインストールして保護する方法
このページでは
- 前提条件
- はじめに
- LAMP サーバーをインストール
- phpMyAdmin をインストールして構成する
- phpMyAdmin 管理ユーザーを作成する
- phpMyAdmin 用に Apache を構成する
- phpMyAdmin にアクセス
- 安全な phpMyAdmin
- phpMyAdmin を確認
- 結論
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 ブラウザーからデータベースの管理を開始できます。