¿Qué tan probable es que un cliente (MySQL) pierda las credenciales cuando el túnel VPN no se configuró anteriormente?

0

Context

Trabajo en un caso muy común. Configuré dos servidores: un OpenVPN y un servidor MySQL (172.16.X.X) ocultos detrás de él. Asumamos que todo está perfectamente configurado y parcheado del lado del servidor.

Nota:

  • El servidor MySQL no tiene una interfaz de red pública
  • MySQL no tiene TLS configurado. No utiliza la autenticación PAM a través del complemento PAM. Acepta autenticaciones desde cualquier lugar.
  • Utiliza un NAT para acceder a Internet (NAT lo realiza el servidor OpenVPN).
  • OpenVPN empuja sus rutas (172.16.X.X) permitiendo a los clientes conectados encontrar el servidor MySQL.

En el lado del cliente (192.168.X.X), tengo varios usuarios que se conectarán al servidor MySQL a través de la VPN, utilizando su propio cliente local de OpenVPN. Con la suposición anterior, a menos que sea un tonto (lo cual es una posibilidad, dime), ningún atacante de MITM podría obtener la contraseña de MySQL.

Nota:

  • Los clientes no tienen una ruta preconfigurada para la red VPN distante (172.16.X.X).

Escenario probable

Imaginemos: como usuario, trato de conectar este servidor "oculto" de MySQL y falla, porque oops ... mi software openVPN no pudo iniciar el túnel sin previo aviso.

Ahora, una máquina malintencionada puede estar en algún lugar de la red local. La gente usa computadoras portátiles en cualquier lugar en estos días. Detecto mi miserable intento de conectar a un servidor MySQL (172.16.X.X) que no existe.

Preguntas

¿Algún software cliente de MySQL enviará credenciales de texto simple a la ruta predeterminada, incluso si no se encuentra un servidor MySQL?

¿Es posible que un atacante que conoce el servidor MySQL genuino (172.16.X.X) exista de suplantarlo configurando un servidor MySQL no autorizado en la red local (192.168.X.X)?

En caso afirmativo, ¿cómo puedo mitigar este escenario (sugerencia: con unos pocos recursos, trabajo para una empresa muy pequeña)?

¡Gracias por tu ayuda!

    
pregunta Gui-Don 23.11.2017 - 12:54
fuente

3 respuestas

3

Para responder a esta pregunta, primero debe comprender el saludo de mysql-na a través de la autenticación.

Si está utilizando el nombre de usuario predeterminado & autenticación de contraseña donde la contraseña se almacena como sha1(sha1(password) hash en mysql.users, la autenticación funciona de la siguiente manera (hay más pasos, pero para mantener esto breve es más o menos lo siguiente):

  1. El cliente se conecta al servidor
  2. El servidor envía el saludo, la versión y las capacidades compatibles del servidor, así como una SALT que se utilizará para la sesión
  3. El cliente solicita la autenticación para comenzar, luego envía SHA1(password) XOR(SALT + sha1(sha1(passsword)))

Por lo tanto, las credenciales iniciales no se envían de forma clara con este método, sin embargo, si se usa el complemento mysql_pam, ya que se pasan a PAM para completar la autenticación.

Sin embargo, si utiliza mysql-na, debe tener en cuenta que, si un adversario puede detectar un protocolo de enlace de autenticación de cliente-servidor, puede utilizar la vulnerabilidad de mysql-unsha ( enlace ) para obtener acceso sin saber la contraseña real.

Con esto aclarado, le haremos preguntas específicas

  • ¿Enviará algún software cliente de MySQL credenciales de texto simple a la ruta predeterminada?

Esto depende completamente de su configuración de mysql si está utilizando PAM para autenticarse, entonces es probable que vea las credenciales "en el cable", que al 100% vale la pena ejecutar una captura de paquetes en el servidor e inspeccionar el resultado. pcap con wireshark / tshark.

  • ¿Si existe la red en mi tabla de enrutamiento?

Según lo anterior, depende de su configuración de MySQL de forma predeterminada, no debería ver las credenciales en texto claro, pero esto no impide que los atacantes obtengan acceso a través de mysql-unsha.

  • ¿Si la IP que intento alcanzar existe localmente?

Aclare, ¿está hablando de la LAN de su máquina cliente VPN? esto depende de sus rutas y de si la VPN permite un túnel dividido.

  • ¿Si la IP que intento alcanzar existe localmente y ejecuta un servidor MySQL?

Una vez más, esto debe aclararse, es demasiado vago.

  • En caso afirmativo, ¿cómo puedo mitigar este escenario (sugerencia: con unos pocos recursos, trabajo para una empresa muy pequeña)?

Sus preguntas deben aclararse, en primer lugar, para que pueda comunicárselas a terceros de manera clara y coherente. Aquí encontrará lo que necesita.

Bajo la configuración predeterminada, MySQL usará Mysql-NA para la autenticación, que es el nombre de usuario y la contraseña, esto no está claro, ya que solo los hashes son intercambios SIN EMBARGO esto es vulnerable al ataque mysql-unsha como se describe por encima de lo cual podría permitir a un atacante autenticarse como un usuario que ha observado autenticar sin conocer la contraseña original solo el sha1(password) hash.

    
respondido por el Oneiroi 23.11.2017 - 14:41
fuente
1

MySQL está utilizando un protocolo en la parte superior de TCP para las conexiones entre sistemas remotos. Esto significa que una conexión TCP debe crearse correctamente antes de transferir cualquier dato, lo que incluye el envío de información de autenticación.

Esto significa que bajo el supuesto de que la base de datos solo es accesible por VPN y que nadie puede hacerse pasar por la base de datos, no se filtrarán las credenciales de esta manera.

Pero si no se sabe si esta suposición es cierta en su red. Si no es cierto, entonces las credenciales pueden ser filtradas. El riesgo de esto no se puede calcular sin saber más acerca de la configuración de su red y las medidas de seguridad, y también lo atractivo que es un objetivo, es decir, cuánto invertirá un atacante. Sin embargo, puede reducir el riesgo, por ejemplo, al conectarse a la base de datos con TLS además de usar una VPN.

    
respondido por el Steffen Ullrich 23.11.2017 - 13:38
fuente
1

Es muy poco probable, pero en algunos casos muy difíciles, alguien puede obtener sus credenciales. Posible, pero improbable.

  1. El atacante asume el control de su puerta de enlace

    Al controlar la puerta de enlace, puede interceptar cualquier intento de conexión y modificarlos.

  2. Tu túnel falla y tratas de conectarte

    El atacante ahora puede saber que tiene un servidor MySQL en algún lugar, y puede agregar una entrada de enrutamiento en la puerta de enlace que apunta a un servidor que controla, usando la misma IP.

  3. El atacante rastrea tu contraseña

    SI intenta conectarse nuevamente, Y la VPN está apagada, Y el atacante olfateó el último intento, Y el atacante tiene una entrada de enrutamiento en la puerta de enlace a un servidor que controla, Y está ejecutando un sniffer, luego puede obtener sus credenciales.

Muy poco probable, tomará mucha preparación, depende de la suerte (o falta de), requiere control de pasarela, pero es posible.

    
respondido por el ThoriumBR 23.11.2017 - 14:38
fuente

Lea otras preguntas en las etiquetas