Ubuntu 16.04 / phpMyAdmin / Comment le rendre accessible uniquement depuis des IP spécifiques
Pour restreindre les adresses IP pouvant accéder à phpMyAdmin dans Apache 2.4, utilisez Require ip dans les paramètres d'accès du répertoire phpMyAdmin. Spécifiez les adresses autorisées, vérifiez la syntaxe de la configuration, puis rechargez Apache. L'accès sera alors permis uniquement pour les adresses spécifiées sur les chemins où les paramètres sont appliqués.
Champ d'application et prérequis
Cet article utilise l'exemple de phpMyAdmin installé à partir du paquet sur Ubuntu, servi directement par Apache 2.4, où le répertoire /usr/share/phpmyadmin est utilisé dans sa configuration. La méthode d'installation, l'hôte virtuel, les alias et l'emplacement des fichiers de configuration varient en fonction de l'environnement. Ne pas appliquer cet exemple tel quel pour les configurations utilisant Nginx, des conteneurs ou des proxys séparés.
Le support de sécurité standard pour Ubuntu 16.04 LTS a pris fin en avril 2021 et le support Ubuntu Pro a pris fin en mai 2026. Vérifiez les conditions de support Legacy supplémentaire et prévoyez de migrer vers une version prise en charge. Vous pouvez consulter le calendrier détaillé à Ubuntu Security Maintenance Schedule.
Si les paramètres sont appliqués de manière incorrecte, même les administrateurs peuvent ne pas être en mesure d'accéder au système. Avant d'apporter des modifications, sécurisez l'accès à la console ou SSH au serveur, et vérifiez les adresses IP réelles des administrateurs autorisés à accéder ainsi que le chemin utilisé par phpMyAdmin. Lors de l'accès via Internet, il est généralement nécessaire d'utiliser l'IP publique vue par le serveur plutôt que l'IP privée du PC de gestion. L'adresse vue par le serveur peut varier en fonction de l'utilisation de VPN, de proxy, de NAT et d'IPv6.
Vérification et sauvegarde de la configuration actuelle d'Apache
Vérifiez les alias et les paramètres de répertoire de phpMyAdmin dans la version d'Apache et la configuration active. Si les fichiers suivants n'existent pas, localisez le fichier de configuration réel selon la méthode d'installation. Les résultats de recherche suivants peuvent inclure des paramètres qui ne sont pas actifs, donc vérifiez également les paramètres actifs et les hôtes virtuels.
apache2 -v
sudo apache2ctl -S
sudo grep -R -n -i phpmyadmin /etc/apache2/conf-enabled /etc/apache2/sites-enabled
Si la configuration du paquet existe dans /etc/apache2/conf-available/phpmyadmin.conf et que cette configuration est active, sauvegardez-la avant d'apporter des modifications. Si les fichiers de sauvegarde ci-dessous existent déjà, attribuez-leur un nom différent afin de ne pas les écraser.
sudo cp -a /etc/apache2/conf-available/phpmyadmin.conf /etc/apache2/conf-available/phpmyadmin.conf.before-ip-restriction
Ouvrez le fichier de configuration réel avec un éditeur de texte et trouvez la section <Directory /usr/share/phpmyadmin>. Par exemple, vous pouvez l'éditer avec la commande suivante.
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Définir les adresses IP autorisées
Après avoir vérifié les règles de permission d'accès dans la section du répertoire phpMyAdmin existante, définissez les règles d'approbation qui s'appliquent à cette section comme suit. Les adresses ci-dessous sont des exemples à titre explicatif, veillez donc à les remplacer par les adresses réelles de l'administrateur. Conservez le traitement PHP existant ou autres paramètres nécessaires dans la section originale.
<Directory /usr/share/phpmyadmin>
Require ip 192.0.2.10
</Directory>
Le bloc ci-dessus est un exemple montrant la partie contrôle d'accès. Ne supprimez pas toute la section de répertoire existante et ne la collez pas telle quelle. Si vous placez Require all granted et Require ip côte à côte dans la même section, l'accès peut être autorisé si l'un ou l'autre est permis, donc examinez les règles d'approbation existantes pour vous assurer que les restrictions prévues sont effectivement appliquées. D'autres sections Directory ou Location ou les paramètres d'authentification peuvent également affecter les résultats, donc vérifiez la configuration complète.
S'il y a plusieurs adresses, vous pouvez les lister séparées par des espaces. Par exemple, la règle suivante permet l'accès si elle correspond à l'une des deux adresses. Si vous spécifiez une plage de réseau, toute la plage sera autorisée, donc spécifiez uniquement la plage nécessaire. Les adresses IPv6 et la notation CIDR sont également prises en charge.
Require ip 192.0.2.10 198.51.100.25
Les directives Order, Deny et Allow sont une syntaxe héritée prise en charge pour la compatibilité avec Apache 2.4. Évitez de mélanger sans précaution les anciennes et nouvelles règles ; examinez la configuration existante et les autres exigences d'authentification avant de migrer vers la syntaxe actuelle. Consultez le guide Apache du contrôle d'accès et la documentation de Require ip pour les formats d'adresse et leur portée.
Vérification de syntaxe, application, et vérification de connexion
- Après avoir enregistré le fichier, vérifiez la syntaxe de l'ensemble de la configuration Apache avec la commande suivante. Si
Syntax OKn'apparaît pas, vérifiez et corrigez le fichier et la ligne de l'erreur. La vérification de syntaxe ne garantit pas que la politique d'accès fonctionnera comme prévu.
sudo apache2ctl configtest
- Si la vérification de la syntaxe est réussie, rechargez la configuration et vérifiez l'état du service. Le nom du service peut varier selon la distribution.
sudo systemctl reload apache2
sudo systemctl status apache2
- Accédez à phpMyAdmin depuis un réseau autorisé en utilisant son adresse existante. Si vous passez le contrôle d'accès, l'écran de connexion peut apparaître, mais une connexion séparée à la base de données est requise.
- Vérifiez la même adresse depuis un réseau séparé qui n'est pas inclus dans la liste autorisée. Si la règle Apache correspondante s'applique et qu'il n'y a pas d'autres erreurs,
403 Forbiddenest généralement affiché. Si une adresse autorisée est bloquée ou si une adresse non autorisée peut ouvrir la page, vérifiez les journaux du serveur, les sections de configuration applicables, le proxy et les adresses IP.
Environnement Proxy et Sécurité Supplémentaire
Si Apache est derrière un proxy inverse ou un équilibreur de charge, il peut voir l'IP du proxy au lieu de celle de l'utilisateur réel. Dans cet état, autoriser l'adresse du proxy peut donner accès à plus d'utilisateurs que prévu, donc soyez prudent. Pour utiliser l'adresse réelle du client, il est nécessaire de configurer uniquement des proxies de confiance. Ne faites pas aveuglément confiance aux en-têtes envoyés par des clients arbitraires ; après avoir consulté la documentation Apache mod_remoteip , configurez selon votre configuration réseau.
Les restrictions IP ne remplacent pas la connexion à phpMyAdmin ni la gestion des permissions de base de données. Utilisez HTTPS et limitez les permissions des comptes à l'étendue nécessaire. Si les IP publiques changent fréquemment dans votre environnement, plutôt que d'autoriser aveuglément une large plage d'adresses, envisagez des chemins d'accès tels que les VPN.
Problèmes de connexion et restauration des paramètres
Si l'accès est bloqué, vérifiez l'IP publique actuelle de l'administrateur, les routes IPv4 et IPv6, si le fichier de configuration est actif, et si des règles d'approbation d'autres zones sont appliquées. L'emplacement des journaux d'erreurs Apache dépend de la configuration, et dans l'installation par défaut d'Ubuntu, vous pouvez vérifier /var/log/apache2/error.log. Faites attention lors du partage des journaux, car ils peuvent contenir des informations sensibles.
Si vous devez revenir en arrière, comparez d'abord pour vous assurer que personne d'autre n'a modifié les fichiers depuis la sauvegarde, restaurez le fichier de sauvegarde à son chemin d'origine, puis exécutez une vérification de syntaxe et rechargez. Restaurer la configuration précédente peut permettre à nouveau l'accès précédemment autorisé, donc vérifiez la portée de l'accès après la restauration.
sudo cp -a /etc/apache2/conf-available/phpmyadmin.conf.before-ip-restriction /etc/apache2/conf-available/phpmyadmin.conf
sudo apache2ctl configtest && sudo systemctl reload apache2
Si une vérification de la syntaxe entraîne des erreurs, ne rechargez pas ; corrigez la configuration à la place. Vérifiez également que les restrictions de connexion et d'accès prévues sont maintenues dans les environnements autorisés et non autorisés.




