MySQL: permettez l'accès à partir d'une adresse IP spécifique
Si vous devez permettre un accès à distance à votre serveur MySQL, une bonne pratique de sécurité consiste à ne permettre l'accès qu'à partir d'une ou plusieurs adresses IP spécifiques. De cette façon, vous n'exposez pas inutilement un vecteur d'attaque à l'ensemble de l'Internet.
Dans ce didacticiel, nous vous guiderons à travers les instructions étape par étape pour permettre des connexions distantes à un serveur MySQL à partir d'une adresse IP spécifique sur un système Linux. Ces instructions devraient fonctionner indépendamment de la distribution Linux que vous utilisez.
Dans ce tutoriel, vous apprendrez:
- Comment autoriser les connexions distantes à MySQL Server
- Comment permettre des connexions distantes à MySQL via le pare-feu système à partir de l'IP spécifique
- Comment créer ou modifier un utilisateur MySQL pour permettre des connexions distantes à partir de IP spécifique
MySQL: Autoriser l'accès à partir d'adresse IP spécifique Instructions étape par étape
Par défaut, le service MySQL est configuré pour accepter uniquement les connexions provenant du même ordinateur. En d'autres termes, l'adresse de liaison est définie sur l'adresse de bouclage locale . 127.0.0.1 . Avant de pouvoir accepter les connexions à partir de toute autre adresse IP, nous devrons modifier ce paramètre dans le fichier de configuration MySQL.
Par conséquent, l'autoriser les connexions distantes à votre base de données MySQL à partir d'une adresse IP spécifique est un processus en trois étapes.
Tout d'abord, nous devrons configurer le service MySQL pour être accessible à partir de machines distantes en configurant une adresse de liaison publique dans le fichier de configuration MySQL.
Deuxièmement, nous devrons autoriser l'accès à distance via notre pare-feu système. Par défaut, MySQL s'exécute sur le port 3306, de sorte que les connexions à ce port devront être autorisées à travers, et ce n'est pas un problème pour permettre uniquement les connexions à partir des adresses IP que nous spécifions.
Troisièmement, nous devrons créer un nouvel utilisateur ou modifier un existant pour le rendre accessible à partir d'une adresse IP spécifique.
Configurer l'adresse de liaison MySQL
Nous commencerons par ouvrir le fichier
/etc/mysql/mysql.cnf. Avec les autorisations racine, ouvrez ceci dans Nano ou votre éditeur de texte préféré.sudo nano /etc/mysql/mysql.cnfRecherchez le paramètre qui dit
bind-addresssous la section[mysqld]. Par défaut, cela doit actuellement être configuré dans l'adresse de bouclage127.0.0.1. Supprimez cette adresse et mettez l'adresse IP publique de votre serveur à sa place. Nous utiliserons simplement10.1.1.1pour l'exemple.[mysqld] bind-address = 10.1.1.1Si vous le souhaitez, vous pouvez à la place utiliser
0.0.0.0comme adresse de liaison, qui est un joker et devrait lier le service à toutes les interfaces accessibles. Ce n'est pas recommandé, mais peut être bon pour le dépannage si vous rencontrez des problèmes plus tard.[mysqld] bind-address = 0.0.0.0Après avoir apporté ce changement, enregistrez vos modifications dans le fichier et sortez-le. Ensuite, vous devrez redémarrer le service MySQL pour que les modifications prennent effet.
sudo systemctl restart mysqlSur certaines distros, le service peut être appelé
mysqldà la place:sudo systemctl restart mysqld
Autoriser l'accès à distance via un pare-feu
En supposant que vous utilisez le port 3306 pour votre serveur MySQL, nous devrons permettre cela via le pare-feu système. La commande que vous devez exécuter dépendra de la distribution que vous utilisez. Reportez-vous à la liste ci-dessous ou adaptez la commande au besoin pour adhérer à la syntaxe du pare-feu de votre propre système.
Dans les exemples ci-dessous, nous autorisons l'accès à distance à partir de l'adresse IP 10.150.1.1 . Déposez simplement votre propre adresse IP à cet endroit pour lequel vous souhaitez autoriser l'accès à distance.
Sur les systèmes Ubuntu et autres qui utilisent UFW (pare-feu simple):
sudo ufw allow from 10.150.1.1 to any port 3306
Sur Red Hat, Centos, Fedora et Systèmes dérivés qui utilisent le pare-feu:
sudo firewall-cmd --zone=public --add-source=10.150.1.1 --permanent
sudo firewall-cmd --zone=public --add-service=mysql --permanent
sudo firewall-cmd --reload
Et la bonne commande Old iptables qui devrait fonctionner sur n'importe quel système:
sudo iptables -A INPUT -p tcp -s 10.150.1.1 --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
Autoriser les connexions distantes à un utilisateur particulier à partir d'une adresse IP spécifique
Maintenant que le service MySQL peut accepter les connexions entrantes et que notre pare-feu permettra une IP spécifique, nous devons simplement configurer notre utilisateur pour accepter les connexions distantes de cette IP.
Dans ce tutoriel, nous avons vu comment permettre des connexions distantes au service MySQL à partir d'une IP spécifique sur un système Linux. Il s'agissait d'un processus en trois parties pour rendre le service accessible, permettant des connexions à partir de l'IP spécifique via le pare-feu et de la création d'un compte MySQL accessible. Étant donné que MySQL fonctionne essentiellement de la même manière dans toutes les distributions, ces étapes devraient être utilisables pour tout le monde.
