¿Qué tan malo es configurar la dirección de enlace de MySQL a 0.0.0.0?

35

Estoy tratando de permitir que un servidor remoto acceda a una instancia de MySQL que actualmente comparte un servidor Linux con una aplicación web. De acuerdo con la documentación, la única forma en que esto sería posible (a menos que no lo entienda correctamente) es si la directiva bind-address se establece en 0.0.0.0 , lo que da como resultado que MySQL permita el acceso desde cualquier IP que pueda producir un usuario válido.

Entonces, dos preguntas:

  1. ¿Qué tan perjudicial sería esto para la seguridad?
  2. ¿Existe un mejor enfoque para permitir la interacción tanto local como remota con MySQL?
jonathanatx
fuente

Respuestas:

36

Creo que está malentendiendo un poco la configuración de la dirección de enlace . Estas son las direcciones locales que MySQL escuchará en busca de conexiones. El valor predeterminado es 0.0.0.0, que es todas las interfaces. Esta configuración no restringe qué IP pueden acceder al servidor, a menos que haya especificado 127.0.0.1 solo para localhost.

Si necesita restringir ciertos usuarios de direcciones IP específicas, utilice crear / otorgar usuario de esta maneraCREATE USER 'bobdole'@'192.168.10.221';

Doug Luxem
fuente
+1 pero solo una nota de que la dirección de escucha predeterminada varía según cómo esté instalado MySQL.
John Gardeniers
Gracias Doug, creo que el valor predeterminado en este caso era mi host local, pero es bueno saber que los usuarios de una base de datos en particular todavía están restringidos por IP.
jonathanatx
@jonathanatx La dirección de enlace predeterminada de MySQL (en 5.6 y hasta donde yo sé) es 0.0.0.0. Aunque, creo que para muchas instalaciones, solo el enlace local es la mejor opción. No abras la puerta si no quieres que nadie la cruce.
ebyrob
1

a. Es malo. Aunque podría restringir el acceso de los usuarios por ip en cada base de datos, creo que es más seguro que todas las conexiones entren localmente. En mis servidores, permito que MySQL solo acepte conexiones locales, 127.0.0.1 como es la configuración predeterminada. Para acceder a la base de datos de forma remota, todo lo que necesita hacer es crear un túnel ssh antes de conectarse a la base de datos y luego conectarse localmente. Si está codificando con php, es bastante fácil hacer esto. Si está utilizando una aplicación de escritorio, es fácil hacerlo en Linux (busque el túnel ssh), en Windows normalmente uso un programa como Putty para hacer el túnel para mí.

Jayson Just
fuente
77
Eso es bastante loco. La forma estándar de hacerlo es crear usuarios a los que solo se pueda acceder desde ciertos nombres de host o IP. Obligar a cada servidor web a hacer un túnel SSH a una base de datos es mucho más trabajo del que se necesita hacer.
TheLQ
3
Su servidor web y servidor de base de datos no siempre son el mismo dispositivo. No permita que las conexiones entren desde Internet, sin duda ... pero hay formas seguras de diseñar soluciones con acceso a la red MySQL.
Shane Madden
1
Para una configuración pequeña (una base de datos, una www), puede hacer un túnel ssh. Para una configuración real, sus VPN y firewalls lo protegerían, por lo tanto, se abriría a través de 0.0.0.0 para permitir el acceso remoto.
Sonia Hamilton
2
Para todos los que piensan que la idea del túnel SSH es una locura, considere que la mayor parte del tráfico de MySQL está en claro. Si por alguna razón tiene que conectarse a través de una red no confiable (es decir, Internet), considere SSH o hacerlo a través de una VPN. Enciende Wireshark o algún otro sniffer de paquetes si quieres ver de qué estoy hablando.
Brad
2
@Brad MySQL admite cifrado, por lo que esto no es correcto.
Marti Markov