web-dev-qa-db-fra.com

Quelle est la gravité de la définition de l'adresse de liaison de MySQL sur 0.0.0.0?

J'essaie d'autoriser un serveur distant à accéder à une instance MySQL qui partage actuellement un serveur Linux avec une application Web. Selon la documentation la seule façon possible (à moins que je ne comprenne pas correctement) est que la directive bind-address soit définie sur 0.0.0.0 , ce qui fait que MySQL autorise l'accès à partir de n'importe quelle IP pouvant produire un utilisateur valide.

Donc, deux questions:

  1. dans quelle mesure cela serait-il préjudiciable à la sécurité?
  2. existe-t-il une meilleure approche pour permettre une interaction à la fois locale et distante avec MySQL?
35
jonathanatx

Je pense que vous comprenez mal le réglage bind-address. Ce sont les adresses locales que MySQL écoutera pour les connexions. La valeur par défaut est 0.0.0.0 qui correspond à toutes les interfaces. Ce paramètre ne limite pas les adresses IP qui peuvent accéder au serveur, sauf si vous avez spécifié 127.0.0.1 pour localhost uniquement.

Si vous devez restreindre certains utilisateurs de des adresses IP spécifiques, utilisez create/grant user comme ceci CREATE USER 'bobdole'@'192.168.10.221';

36
Doug Luxem

une. C'est mauvais. Même si vous pouvez restreindre l'accès des utilisateurs par ip sur chaque base de données, je pense qu'il est plus sûr que toutes les connexions arrivent localement. Sur mes serveurs, j'autorise MySQL à n'accepter que les connexions locales, 127.0.0.1 comme c'est la configuration par défaut. Pour accéder à la base de données à distance, il vous suffit de créer un tunnel ssh avant de vous connecter à la base de données, puis de vous connecter localement. Si vous codez avec php, c'est assez facile à faire. Si vous utilisez une application de bureau, il est facile de le faire sous Linux (recherchez tunnel ssh), Sous Windows, j'utilise normalement un programme comme PuTTY pour créer le tunnel pour moi.

1
Jayson Just