Référence des ports
Port 3306 (TCP) – MySQL / MariaDB
Écouteur par défaut des connexions aux bases relationnelles MySQL et MariaDB.
État par défaut
Les paquets modernes se lient à localhost (127.0.0.1) par défaut, mais de nombreux déploiements fixent bind-address à 0.0.0.0, exposant 3306 sur le réseau ou à Internet.
Attaques courantes
- Force brute et pulvérisation de mots de passe contre root et les comptes applicatifs
- Exploitation de mots de passe vides ou par défaut
- Abus de privilèges et exfiltration de données via FILE après connexion
- Injection SQL pivotant vers le moteur de base de données
Durcissement
- Lier à localhost ou à une interface privée ; ne jamais exposer 3306 à Internet
- Supprimer les comptes anonymes et à mot de passe vide (exécuter mysql_secure_installation)
- Imposer des mots de passe forts, le moindre privilège et des utilisateurs restreints par hôte
- Exiger TLS pour les connexions clientes et segmenter avec des pare-feu
- Maintenir MySQL/MariaDB à jour et surveiller les échecs de connexion
Commande nmap
nmap -p3306 --script mysql-info,mysql-empty-password <target>Remplacez <target> par l’hôte ou la plage que vous êtes autorisé à scanner.
Que tourne sur le port 3306 ?
Le port 3306 est l'écouteur TCP par défaut de MySQL et de son fork compatible MariaDB, deux des bases relationnelles les plus déployées. Les serveurs d'application et les clients d'administration se connectent via 3306 pour exécuter des requêtes SQL sur des schémas qui alimentent souvent des sites web, des produits SaaS et des applications internes.
Pourquoi c'est important pour la sécurité
MySQL et MariaDB stockent les données de très nombreuses applications ; 3306 est
donc une cible de choix. Le danger s'aggrave lorsque bind-address vaut
0.0.0.0, exposant la base à tout le réseau ou à Internet. Combiné à des
identifiants vides, par défaut ou faibles, cela mène directement au vol massif de
données et au rançonnage, un schéma répété sur des milliers de bases ouvertes
compromises.
Comment c'est attaqué
Les attaquants scannent les ports 3306 ouverts, puis lancent une force brute
ou testent les mots de passe vides/par défaut. Après authentification, un
compte aux privilèges étendus (ou doté du privilège FILE) peut vider des tables
et exfiltrer des données, et l'injection SQL dans les applications web peut
pivoter directement vers le moteur. Les bases compromises sont souvent effacées et
réclamées contre rançon.
Liste de durcissement
Liez MySQL à localhost ou à une interface privée et gardez 3306 hors d'Internet, derrière un pare-feu, un VPN ou un tunnel SSH. Exécutez mysql_secure_installation pour supprimer les comptes anonymes et à mot de passe vide, imposez des mots de passe forts et des droits restreints par hôte au moindre privilège, et exigez TLS. Appliquez les correctifs régulièrement et surveillez les échecs de connexion. Utilisez l'extrait nmap ci-dessus pour détecter les mots de passe vides et collecter des informations sur les hôtes que vous êtes autorisé à tester.
Ports liés
Questions fréquentes
- Est-il sûr d'exposer le port 3306 à Internet ?
- Non. Un MySQL exposé à Internet est constamment scanné et soumis à la force brute. Liez-le à localhost ou à un réseau privé et connectez-vous via un VPN, un tunnel SSH ou TLS.
- Pourquoi mon MySQL écoute-t-il sur 0.0.0.0 ?
- Parce que bind-address est réglé sur 0.0.0.0, souvent pour autoriser des serveurs d'application distants. Restreignez-le à une interface privée et limitez le port par pare-feu aux hôtes de confiance.