Changer le port d’écoute MySQL
Sommaire
I. Présentation
Dans ce tutoriel, nous allons apprendre à changer le port d'écoute du service MySQL. Il faut savoir que par défaut, MySQL ne permet pas l'écoute sur le réseau par son interface externe. Cela résulte en général d'une modification de la configuration du service MySQL. En local, le port d'écoute d'une application n'a que peut d'intérêt, c'est pourquoi je vous oriente vers ce tutoriel si vous désirez ouvrir votre service MySQL à l'extérieur.
La plupart du temps, le changement du port d'écoute d'un service se fait par souci de sécurité. De cette manière, un attaquant souhaitant effectuer une attaque sur notre entrée MySQL devra d'abord trouver son port d'écoute. Cela lui rend la tâche plus difficile, mais surtout plus longue.
II. Vérifier le port d'écoute
Nous allons dans un premier temps vérifier le port d'écoute de notre service MySQL pour vérifier qu'il écoute bien sur son port standard 3306. Nous allons pour cela utiliser l'outil "netstat" qui est présent nativement sur la plupart des distributions Linux (et même sous Windows ! 😉 ). Celui-ci va nous permettre de lister les ports ouverts sur notre serveur.
Une fois que votre service MySQL est démarré (ce que l'on peut vérifier avec "service mysqld status"), on pourra utiliser l'outil netstat avec la ligne de commande suivante :
netstat -petulan
Ici, nous aurons le résultat suivant :
Il faut ici chercher le port "3306", qui est présent en première ligne dans ma capture d'écran. On retrouvera de toute façon le port MySQL par le nom de son processus "mysqld" dans la dernière colonne :
Nous voyons donc que notre service MySQL écoute bien sur son port standard.
II. Change le port d'écoute
Nous allons maintenant modifier la configuration de notre service MySQL. On va pour cela modifier le fichier "/etc/mysql/my.cnf" pour y trouver la ligne "port = 3306" pour y mettre un autre numéro de port (au-dessus de 1024 bien entendu) :
Le numéro de port vous est ici libre. Il faut bien faire attention à modifier cette valeur dans la partie "[mysqld]" et non dans la partie "[client]" qui contient les paramètres à utiliser lorsque l'on souhaite se connecter à un service MySQL sur un autre serveur.
Une fois cette modification faite, nous allons redémarrer notre serveur MySQL pour que les changements soient pris en compte :
service mysql restart
Nous allons maintenant refaire une vérification sur les ports ouverts de notre serveur :
netstat -petulan
Nous voyons alors que le port ouvert du service MySQL n'apparait pas. Déjà à ce moment, la tâche de l'attaquant peut éventuellement être ralentie. Si l'attaquant est suffisamment patient, il pourra trouver ce port ouvert, mais mettra peut-être plus de temps à le trouver et à reconnaitre un service MySQL derrière.?
Le changement de port est donc bien effectif et c'est par ce numéro de port qu'il faudra maintenant passer pour communiquer avec notre service MySQL depuis l'extérieur. Notez bien que si vous avez des services externes au serveur et qu'ils communiquent avec ce service MySQL, il faudra leur indiquer quel port utiliser puisque ce ne sera plus le port standard.
IV. Connexion à distance à MySQL
Pour nous connecter en ligne de commande par exemple depuis un client sur notre serveur MySQL, il faudra utiliser l'option "-P" qui spécifie le port à utiliser si ce n'est pas le port standard :
mysql -u root -p -h < ip serveur > -P < numéro port >
Si l'option ne peut pas être spécifiée de cette manière, on peut aller également modifier la configuration dans le fichier "/etc/mysql/my.cnf" dans la partie "[client]". Alors, le port par défaut sera changé lors de la tentative de connexion à un serveur MySQL distant.