2012-06-25 23 views
7

Mis usuarios están utilizando MS Access y el conector ODBC para conectarse a mi base de datos MySQL remota. Me pregunto qué tan seguro es esto, en el sentido de una posible divulgación de contraseña a terceros. ¿La autenticación del protocolo mysql es segura para espiar o incluso para ataques man-in-the-middle? Estaría muy contento con la seguridad contra el espionaje. Tenga en cuenta que mi preocupación es solo la autenticación, no estoy preocupado por la divulgación de datos.¿Qué tan segura es la autenticación en el protocolo mysql?

No responda que debería usar SSL. Sé que esto sería ideal, sin embargo, la configuración no parece muy simple. De todos modos, me gustaría saber cuál es el nivel de seguridad del protocolo simple mysql.

Respuesta

12

¿Qué es lo que quiere que sea "seguro para espiar o incluso ataques de hombre en el medio"? Tu contraseña o tus datos?

El título de su pregunta se refiere específicamente a la autenticación . MySQL hace un trabajo razonable para proteger su contraseña de los espías (no se envía texto sin formato, y el uso de un nonce derrota los ataques de repetición). Citando MySQL protocol internals:

MySQL 4.1 y posterior

Recuerde que las tiendas mysql.user.Password SHA1 (SHA1 (contraseña))

  • El servidor envía una cadena aleatoria (scramble) al cliente
  • el cliente calcula:
    • stage1_hash = SHA1 (contraseña), utilizando la contraseña que el usuario ha introducido . XOR
    • token = SHA1 (SHA1) stage1_hash (scramble +) stage1_hash
  • el cliente envía el token al servidor
  • el servidor calcula
    • stage1_hash'= símbolo XOR SHA1 (scramble + mysql.user.Password)
  • el servidor compara SHA1 (stage1_hash ') y mysql.user.Password
  • Si ar e lo mismo, la contraseña está bien.

(Nota SHA1 (A + B) es la SHA1 de la concatenación de A con B.)

Este protocolo corrige el defecto de la antigua, ni snooping en el alambre ni mysql. user.Password es suficiente para una conexión exitosa . Pero cuando uno tiene tanto mysql.user.Password como datos interceptados en el cable, tiene suficiente información para conectarse.

Sin embargo, las sesiones autenticadas continúan en texto plano: un oculista podrá ver todas las consultas y los resultados; y un MITM podría hacer modificaciones a la misma.Como se indica en the manual:

Por defecto, MySQL utiliza conexiones no cifradas entre el cliente y el servidor. Esto significa que alguien con acceso a la red podría mirar todo su tráfico y mirar los datos que se envían o reciben. Incluso podrían cambiar los datos mientras está en tránsito entre el cliente y el servidor.

Mientras que no le guste la respuesta, SSL es la herramienta diseñado para derrotar tanto espionaje de datos (de qué otra manera se pueden cifrar las comunicaciones?) Y los ataques MITM (¿Cómo puede cualquiera de las partes verificar que su par es quien cree que es?). De hecho, si el protocolo del cliente-servidor mysql solo derrota estas amenazas, entonces no habría ninguna razón para usar mysql sobre SSL (y por lo tanto, sería poco probable que sea una configuración compatible).

+0

* ¿Qué quiere decir con "seguro para espiar o incluso ataques de hombre en el medio" *: como dijo, el protocolo simple mysql no es seguro para MITM, mi preocupación ahora es solo si la autenticación es segura para espiar. Si alguien está escuchando a escondidas, ¿podrá entonces obtener suficiente información para autenticarse en el servidor mysql? No me importa si solo está mirando los datos ... ¡Gracias por tu respuesta! – TMS

+1

@Tomas: No, como mi respuesta dice, solo verá una forma encriptada de un hash de contraseña que no se puede reproducir debido al uso de un nonce. Sin embargo, si es capaz de manipular paquetes, podría secuestrar la sesión para realizar los comandos que desee. – eggyal

+0

Disculpe, no entendí lo que quería decir con "nonce". ¿Es una cadena aleatoria enviada por el servidor? – TMS

-3

Respuesta corta: Sí, el protocolo está a salvo de ataques Eavesdropping y MITM.

Solo si el atacante logra olfatear un intento de autenticación Y si el atacante conoce el contenido de mysql.user, puede autenticarse posteriormente contra el servidor. Por ejemplo, si está utilizando la misma contraseña en dos servidores diferentes de MySQL y el atacante accede a una de ellas, también puede conectarse al segundo servidor.

+0

¿Está seguro de que este protocolo está a salvo de MITM? Y no me doy cuenta de lo que querías decir con el segundo párrafo. Por supuesto, cuando el atacante olfatea la contraseña, puede conectarse con ella ... – TMS

Cuestiones relacionadas