MySQL Proxy

MySQL Proxy es un programa sencillo que se encuentra entre uno o mas clientes y el servidor MySQL que puede controlar, analizar o transformar su comunicación. Su flexibilidad permite una amplia variedad de usos, incluyendo el equilibrio de carga, conmutación por error, el análisis de consulta, filtrado de la consulta y modificación, y muchos más. Los clientes se conectan al proxy en lugar de conectar con el servidor. El proxy funciona como un intermediario entre el cliente y el servidor.

En su forma básica, el proxy es sólo una redirección. Se pone un cubo vacío desde el cliente (una consulta), lo lleva al servidor, llena el cubo con los datos, y se lo pasa al cliente.  Pero, dicha herramienta provee consigo una utilidad importante, el interprete LUA. Usando el lenguaje Lua, puede definir qué hacer con una consulta o un conjunto de resultados antes de retornar la respuesta consultada.

El paquete de distribución contiene un solo binario (y a partir de 0.5.1, también algunos ejemplos de scripts LUA). Inicialmente solo estaba disponible para sistemas operativos tipos unix y lunix, aunque ya se ha liberado la versión 0.8 para sistemas operativos Microsoft.

Alguna de sus características son:

  • Balanceo de carga : por ejemplo si queremos tirar de ciertas consultas mas lentas en otra maquina que tiene una replica de la base de datos.
  • Failover : supongamos que el servidor de base de datos “se cae”, podemos realizar unbackup al “vuelo” de las peticiones y almacenarlas para su posterior uso.
  • Analisis de peticiones : porque no analizar que tipo de peticiones se hacen comúnmente de una forma mas “transparente” sin necesidad de tocar nuestro servidor de producción, así como por ejemplo analizar tiempos de respuesta, realizar estadísticas generales, etc.
  • Filtrado de peticiones : Podemos crear un filtro de seguridad para ciertas peticiones que no deseamos; que por ejemplo ciertos hosts realicen hacia MySQL, o algún tipo de filtro de seguridad que examine peticiones potencialmente peligrosas (escape a la shell para ejecutar comandos, inserciones en ciertas tablas…)
  • Modificación : Al igual que el filtro anterior, podemos determinar que peticiones no queremos y por lo tanto modificarlas “al vuelo”.

El poder del proxy es su flexibilidad, según lo permitido por el interprete de Lua.
Puede interceptar la consulta antes de su llegada al servidor, y hacer todo lo imaginable con esta:

  • Pasar toda la data enviada sin modifcaciones o cambios
  • Corregir errores de ortografía
  • Filtro hacia fuera, es decir, eliminar por completo
  • Reescribir la consulta de acuerdo con algunas políticas establecidas
  • Agregar instrucciones olvidadas, etc.

Se puede interceptar el conjunto de resultados:

  • Hacer un Log de todas las consultas que recibe el Servidor
  • Denegar consultas peligrosas que puedan dañar nuestra base de datos
  • Generar Alias de comandos comunes por ejemplo SLE se podria convertir en SELECT
  • Balancear la carga entre varios servidores de MySQL en un esquema de Master/Slave
  • Dar prioridad a ciertas consultas para acelerar la respuesta del servidor

Inyecciones SQL

Como funcionan los ataques (inyecciones SQL) con el proxy MySQL:

En la imagen, el servidor recibe 3 consultas SQL, y porsupuesto retorna el resultado de estas 3 peticiones. Cuando ocurre una inyeccion SQL, la consulta es analizada y procesada por otra funcion del interprete del proxy (read)query_result) donde el programador puede asignar una excepcion a retornar de acuerdo al ID asignado a la respuesta retornada por el servidor.

Proceso realizado al recibir una inyeccion SQL.

El resultado retornado por la consulta realizada por un cliente es previamente analizada, todo este proceso es transparente para el cliente, pero todo los detalles realizados por el Proxy se muestran en la consola Proxy.

Referencias:

http://wiki.elhacker.net/bases-de-datos/mysql/introduccion/mysql-proxy

Anuncios

Acerca de tihuilo

Estudiante de Ing. en Sistemas y Computación
Esta entrada fue publicada en Bases de datos y etiquetada . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s