Recherche de site Web

Comment installer et sécuriser la dernière version de phpMyAdmin sur Debian 12


Comment installer et sécuriser la dernière version de phpMyAdmin sur Debian 12

Ce tutoriel existe pour ces versions de système d'exploitation

  • Debian 12 (Bookworm)
  • Debian 11 (Bullseye)

Sur cette page

  1. Conditions préalables
  2. Commencer
  3. Installer le serveur LAMP
  4. Installer et configurer phpMyAdmin
  5. Créer un utilisateur administrateur phpMyAdmin
  6. Configurer Apache pour phpMyAdmin
  7. Accéder à phpMyAdmin
  8. Sécuriser phpMyAdmin
  9. Vérifier phpMyAdmin
  10. Conclusion

phpMyAdmin est un outil d'administration gratuit basé sur le web utilisé pour gérer les bases de données MySQL et MariaDB, largement utilisé dans les systèmes Debian Linux. Il fournit une interface conviviale pour interagir avec les bases de données, permettant aux utilisateurs d'exécuter des requêtes SQL, de gérer des tables de base de données, d'importer et d'exporter des données, et de configurer divers paramètres de base de données sans avoir besoin d'utiliser la ligne de commande. Sur Debian Linux, phpMyAdmin est souvent installé en même temps qu'une pile LAMP (Linux, Apache, MySQL/MariaDB, PHP), facilitant ainsi la gestion des opérations de base de données de manière plus visuelle et organisée.

Dans ce tutoriel, je vais vous montrer comment installer et sécuriser l'outil d'administration de base de données phpMyAdmin sur Debian 12.

Conditions préalables

  • Un serveur fonctionnant sous Debian 12.
  • Un mot de passe root est configuré sur le serveur.

Commencer

Avant de commencer, il est conseillé de mettre à jour vos paquets système vers la dernière version. Vous pouvez mettre à jour tous les paquets en utilisant la commande suivante :

apt update -y

Une fois que votre système est mis à jour, vous pouvez passer à l'étape suivante.

Installer le serveur LAMP

phpMyAdmin est une application basée sur PHP qui fonctionne sur un serveur web. Vous devrez donc installer le serveur LAMP sur votre serveur. Vous pouvez l'installer en utilisant la commande suivante :

apt 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

Une fois tous les paquets installés, vous pouvez passer à l'étape suivante.

Installer et configurer phpMyAdmin

Tout d'abord, téléchargez la dernière version de phpMyAdmin depuis leur site officiel en utilisant la commande suivante :

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

Une fois le téléchargement terminé, décompressez le fichier téléchargé avec la commande suivante :

unzip phpMyAdmin-5.2.1-all-languages.zip

Ensuite, déplacez le répertoire extrait vers /usr/share avec la commande suivante :

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

Ensuite, créez le répertoire requis avec la commande suivante :

mkdir -p /var/lib/phpmyadmin/tmp

Ensuite, définissez les droits de propriété appropriés pour le répertoire phpMyAdmin :

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

Ensuite, copiez le fichier de configuration exemple de phpMyAdmin :

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

Ensuite, installez pwgen et générez une clé secrète avec la commande suivante :

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

Sortie :

pau9t1SG6lmaeCFxKqeeaY5N4erIa25K

Ensuite, éditez le fichier config.inc.php et configurez-le :

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

Définissez votre clé secrète et décommentez les lignes suivantes :

$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';

Enregistrez et fermez le fichier lorsque vous avez terminé.

Créer un utilisateur administrateur phpMyAdmin

Il est toujours recommandé de créer un utilisateur séparé pour gérer la base de données via phpMyAdmin.

Tout d'abord, importez les tables phpMyAdmin dans la base de données MariaDB en utilisant la commande suivante :

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

Ensuite, connectez-vous au shell MariaDB avec la commande suivante :

mysql

Une fois que vous êtes connecté, accordez tous les privilèges nécessaires à la base de données phpmyadmin avec la commande suivante :

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

Ensuite, créez un utilisateur administrateur avec la commande suivante :

MariaDB [(none)]> CREATE USER myadmin;

Ensuite, accordez tous les privilèges à l'utilisateur administrateur avec la commande suivante :

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

Ensuite, rechargez les privilèges et quittez le shell MariaDB en utilisant la commande suivante :

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

Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.

Configurer Apache pour phpMyAdmin

Ensuite, vous devez créer un fichier de configuration d'hôte virtuel Apache pour phpMyAdmin. Vous pouvez le créer en utilisant la commande suivante :

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

Ajoutez les lignes suivantes :

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>

Enregistrez et fermez le fichier lorsque vous avez terminé, puis activez le fichier de configuration phpMyAdmin avec la commande suivante :

a2enconf phpmyadmin.conf

Ensuite, rechargez le service Apache pour appliquer les changements :

systemctl reload apache2

Vous pouvez vérifier l'état du service Apache en utilisant la commande suivante :

systemctl status apache2

Vous devriez voir la sortie suivante :

? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2024-08-25 11:28:21 UTC; 5s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 23021 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 23031 (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

Sun 25 11:28:21 debian systemd[1]: Starting The Apache HTTP Server...

Accéder à phpMyAdmin

À ce stade, phpMyAdmin est installé et configuré. Maintenant, ouvrez votre navigateur web et accédez à phpMyAdmin en utilisant l'URL http://your-server-ip/phpmyadmin. Vous devriez voir la page de connexion de phpMyAdmin :

Fournissez votre nom d'utilisateur administrateur, votre mot de passe et cliquez sur le bouton Go. Vous devriez voir le tableau de bord phpMyAdmin sur la page suivante :

Sécuriser phpMyAdmin

Il est judicieux de sécuriser le phpMyAdmin avec une authentification à deux facteurs. Vous pouvez le faire en utilisant les fonctionnalités d'authentification et d'autorisation de .htaccess.

Tout d'abord, modifiez le fichier de configuration phpMyAdmin :

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

Ajoutez la ligne "AllowOverride All" dans le bloc serveur suivant :

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

    <IfModule mod_php5.c>

Enregistrez et fermez le fichier lorsque vous avez terminé, puis redémarrez le service Apache :

systemctl restart apache2

Ensuite, créez un fichier .htaccess et définissez le type d'authentification Apache :

nano /usr/share/phpmyadmin/.htaccess

Ajoutez les lignes suivantes :

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

Enregistrez et fermez le fichier, puis créez un utilisateur avec la commande suivante :

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

Vous serez invité à définir un mot de passe comme indiqué ci-dessous :

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

Vérifier phpMyAdmin

À ce stade, phpMyAdmin est sécurisé avec une authentification supplémentaire. Pour le vérifier, ouvrez votre navigateur web et accédez à phpMyAdmin en utilisant l'URL http://your-server-ip/phpmyadmin. On vous demandera le nom d'utilisateur et le mot de passe supplémentaires comme indiqué ci-dessous :

Après avoir fourni votre nom d'utilisateur et votre mot de passe, vous serez redirigé vers la page de connexion phpMyAdmin habituelle.

Conclusion

Félicitations ! Vous avez installé et sécurisé avec succès phpMyAdmin sur Debian 12. Vous pouvez maintenant explorer phpMyAdmin et gérer votre base de données depuis le navigateur.