web-dev-qa-db-fra.com

N'est-il pas sûr d'ouvrir le port MySQL sur Internet?

Le consensus à ce sujet question de défaillance du serveur semble être que l'ouverture du port 3306 pour MySQL est plus dangereuse que l'utilisation d'un tunnel SSH pour accéder à MySQL.

Je pense qu'avec des informations d'identification solides, vous pouvez garder MySQL en sécurité, d'autant plus que la connexion peut être verrouillée sur certains hôtes de la table USERS.

Y a-t-il quelque chose à propos d'une connexion MySQL qui est plus précaire que SSH, ou existe-t-il un risque que les tentatives de connexion attaquant 3306 submergent la base de données?

16
Sean Fahey

S'il n'est pas nécessaire, il doit être fermé.

Vulnérabilités

Vous ne pouvez jamais être sûr qu'il n'y a pas de vulnérabilités dans MySQL lui-même. Voici un exemple pour une attaque DOS (et ce n'est pas la seule attaque possible ).

Autoriser l'accès à distance restreint non IP à MySQL

Autoriser l'accès à distance à MySQL n'est pas une vulnérabilité en soi, mais il existe des scénarios où il peut être utilisé en combinaison avec d'autres vulnérabilités.

Par exemple, supposons que le site expose un fichier de configuration: n'importe qui peut lire les informations d'identification de connexion à la base de données. Si un attaquant peut également se connecter à la base de données à distance, certaines ou toutes les données sont compromises (et d'autres attaques peuvent également être possibles, par exemple l'exécution de code si dans outfile est autorisée). Mais si la connexion à distance n'est pas possible, l'attaquant peut faire très peu avec ces informations (en supposant que le mot de passe n'est pas utilisé ailleurs - par exemple ssh - également).

Le fichier de configuration exposé n'est qu'un exemple. Pour un autre exemple, considérons l'injection SQL aveugle: la récupération du mot de passe de la base de données est relativement rapide, mais la récupération de la base de données entière prendrait beaucoup de demandes. Il serait donc très utile de pouvoir s'y connecter à distance.

Autoriser l'accès distant restreint par IP à MySQL

(Ceci n'est que spéculation) Il semble que vous pouvez vous connecter à MySQL en utilisant udp, donc l'usurpation d'adresse IP est possible. Je pourrais imaginer que toute attaque ne nécessitant pas de rétroaction directe (comme par exemple l'écriture de code dans un fichier via dans outfile) pourrait fonctionner de cette façon (à condition que les informations d'identification de la base de données soient acquises).

Cryptage

Il convient également de considérer que ssh est crypté par défaut, contrairement à MySQL (et la configuration ne semble pas trop facile). Cela signifie que la plupart des utilisateurs utiliseront une connexion non sécurisée si un accès direct à MySQL est fourni.

17
tim

L'ouverture du port n'est pas intrinsèquement plus dangereuse que l'ouverture d'un port SSH.

Le problème est que tout programme d'application qui pourrait UTILISER le port pourrait être piraté, puis utilisé pour compromettre votre base de données. Tout ce qui s'exécute côté client ne doit pas être approuvé par nature.

0
ddyer