Database Firewalls: Introducción

Introducción
Hoy en día se pueden encontrar muchas técnicas para proteger las aplicaciones Web frente a ataques de Inyección SQL. Principalmente, saneando la entrada de texto que proviene del usuario (siempre se debe pensar que es malintencionado).

Pero, ¿qué podemos hacer si queremos tener un control sobre estos ataques? Ya sea para bloquearlos o simplemente avisarnos, podríamos pensar en implementar un WAF (Web Application Firewall) pero existen aplicaciones y dispositivos más específicos: los Database Firewalls.

Funcionamiento
Se podría decir que es similar a cualquier WAF/IPS. Emplea una serie de reglas que permiten identificar las consultas SQL malformadas/malintencionadas y evitar que se lleve a cabo el ataque. Por otro lado, existen en el mercado productos que controlan ataques como desbordamientos de buffer o denegaciones de servicio, entre otros.

Tal como se ha indicado, se hace uso de reglas basadas en expresiones regulares. En caso de coincidir los patrones, saltarán los avisos correspondientes y la consulta será bloqueada/descartada. De esta forma se consigue evitar que el ataque sea efectivo.

Además de las reglas mencionadas, existen distintos modos de filtrado/bloqueo de consultas:

  • Restrictivo, mediante una lista blanca donde se especifican las consultas legítimas.
  • Permisivo, mediante una lista negra, huelga decir que son las consultas a bloquear.
  • Análisis gramatical de las consultas SQL, con lo que se consigue identificar consultas (aunque fuesen legítimas) que pudieran ser aprovechadas, por supuesto, para inyectar código SQL.

Por último, mencionar que una de las características que se ofrece en estos productos es la de funcionar como proxy. Se almacenan en caché los resultados de las consultas y, de este modo, se reduce la carga a los SGBD y a las BBDD correspondientes.

Mercado y compatibilidades
En este punto, mucha gente se pregunta acerca de la compatibilidad de estos productos para ser usados con sus SGBD.

En el mercado existen multitud de fabricantes que ofrecen soluciones de seguridad para sus SGBD como pueden ser Oracle o Microsoft, entre otros. A continuación se va a nombrar, muy por encima, una solución alternativa.

Hace ya años que salió a la luz GreenSQL y continúa ofreciéndose de forma gratuita (GreenSQL Express). También existe la posibilidad de adquirir el producto de pago, GreenSQL Pro, donde además de un soporte nos ofrece más funcionalidades.

La versión gratuita está restringida a proteger sólo una BBDD y sólo protege frente a ataques de inyección SQL. Esto significa que no protege contra desbordamientos de buffer, escalada de privilegios, denegaciones de servicio…

Pero, ¿qué SGDB son compatibles con GreenSQL? A continuación os nombraré los distintos gestores con los que lo podemos usar:

  • Microsoft SQL Server
  • PostgreSQL
  • MySQL
  • Microsoft Azure SQL Database
  • Amazon RDS

Conclusiones
Personalmente pienso que es una solución a tener en cuenta. No sólo por el hecho de ir un paso más allá en la protección de la información almacenada, sino también por aligerar el uso del resto de dispositivos (WAF, IPS…), sobre todo si están sometidos a una alta carga de transacciones (recordad que los Database Firewall pueden funcionar como proxy).

Comments

  1. Muy interesante, Marcos.

    Ya que lo mencionas, ¿alguna recomendación para complementar a GreenSQL Express y poder controlar ataques DDos y desbordamientos de búfer?

    Saludos

  2. http://Marcos%20Sánchez says

    @Alejandro

    En primer lugar agradecerte el interés, voy a intentar aclarar tus dudas.

    Por un lado, para controlar (o intentarlo ;)) ataques DoS/DDoS se puede hacer uso del módulo de Apache “mod_evasive” y/o de productos WAF (open source o comerciales)

    Por otro lado, existen los productos IDS/WAF para detectar y/o bloquear ataques de tipo Desbordamiento del Búfer, entre otros. Por ejemplo, Snort.

    Un saludo.

Trackbacks

  1. […] Introducción Hoy en día se pueden encontrar muchas técnicas para proteger las aplicaciones Web frente a ataques de Inyección SQL. Principalmente, saneando la entrada de texto que proviene del usuar…  […]