GreenSQL : Firewall applicatif SQL pour bases MySQL

greensql

Ayant déjà eu a faire à des injections SQL, c’est quelque chose de très dérangeant…

GreenSQL est une solution libre sous licence GPL permettant de protéger vos bases de données MySQL des attaques de type « SQL Injection », « Cross-Site Scripting » et « Cross-Site Requests Forgeries ».

GreenSQL fonctionne en tant que proxy pour les requêtes SQL sur les bases de données MySQL. A noter qu’il est prévue de le faire fonctionner également sur les bases de données PostgreSQL selon la roadmap. Voici un post sur leur forum qui en parle avec pour titre : GreenSQL for PostgreSQL

Le fonctionnement est basé sur une évaluation des commandes SQL en utilisant une matrice de cotation des risques (ça me rappele spamassassin ça) ainsi que le blocage de commandes d’administration (DROP, CREATE, etc.)

GreenSQL fonctionne en mode reverse-proxy, c’est à dire, la requête SQL sera transmise à GreenSQL qui va l’analyser pour ensuite la transmettre à MySQL si bien sur, elle est acceptée.

Le schema ci-dessous explique son fonctionnement :

greensql-architecture.preview

GreenSQL écoute le port 3305 et réexpédie les requêtes vers le port 3306, port standard de MySQL

GreenSQL peut fonctionner sous différents modes :

  • Simulation (base de données IDS) – Ne fait que détecter mais ne bloque rien
  • Protection (base de données IPS)- Détecter et bloque les requêtes
  • Apprentissage
  • Protection contre les requêtes non recencées

Durant le mode simulation, GreenSQL en fait que logguer les requêtes SQL et envoie une notifications via la console d’administration les requêtes suspicieuse en consultant la matrice de cotation des risques pour en informer les administrateurs.

Durant le mode Protection, si une requête est considérée comme illégale suite à l’interrogation de son moteur heuristique, une whitelist est consultée.

Si celle-ci apparait dans la whitelist elle est envoyée au moteur MySQL.

Si la requête est considérée comme illégale, GreenSQL renvoie une réponse vide pour ne pas bloguer l’application sur le serveur Web.

Bien sur avec ce mode, il est possible d’avoir des faux-positifs…

Le mode apprentissage sert justement à corriger cette problèmatique en apprenant le type de requêtes possible, il faudra ensuite le repasser en mode protection contre les requêtes non-recencées.

Quand le mode de protection contre les requêtes non-recencées est activé, les requêtes qui n’ont pas été intégrée dans la whitelist sont automatiquement rejetées.

GreenSQL va alors calculer les risques que représente cette requête et remonter l’information à la console de management.

C’est le mode le plus rapide car il ne fait que calculer le risque que pour les nouvelles requêtes.

Voilà en gros le fonctionnement de GreenSQL qui me paraît vraiment être une solution très intéressante, même si le mieux est toujours de prévoir les risques dans le développement, mais bon…

Concernant les performances de l’application web, elle ne paraissent pas tant impactées que cela selon un test de performance effectuée avec l’utilisation de GreenSQL

Des packages sont fournit pour les distributions linux le plus courantes (CentOS, Debian, Fedora, Mandriva, RHEL 5, SLE 5, Opensuse, Ubuntu)

La dernière version, qui est la 1.1.0, vient de sortir le 19 octobre, voici l’annonce de cette sortie

Liens utiles :

Site Officiel de GreenSQL

Démonstration de GreenSQL

Author: Pierre-Yves Dubreucq

Passioné par les logiciels libres depuis 2001, je suis VP Bare Metal (Dedibox) chez Scaleway. Je tiens ce blog depuis 13 ans avec beaucoup moins d'assiduité malheureusement qu'à ses débuts, mais bon, le temps est une denrée rare.

Share This Post On

10 Comments

  1. Ahhhhhhhhhhhh je devais faire un article dessus (j’ai commencé d’ailleurs) !!! il est prévu depuis moult temps !!! voleur !! tu as un espion chez nous ? :p

    Post a Reply
  2. lol J’en suis désolé, mais rien ne t’empêche de le faire 😉 J’éditerais mon article pour faire un lien vers ton site avec plaisir 😉
    Je comptais faire un howto d’installation avec un petit test, enfin vraiment léger le test. C’était un test fonctionnel, je n’allais pas tenter non plus de passer au traves de GreenSQL.
    Je ne le fais pas si tu veux 😉 Ça ne me dérange pas… 😉
    Tiens moi informé 😉
    En même temps, il fallait bien que ça arrive à jour, on a un sujet assez proche, même si ces derniers temps, je poste un peu moins sur mon métier d’origine qu’est le système… 😉
    Passes une bonne soirée 😉
    Moi je vais me coucher…

    Post a Reply
  3. Ahh je ne connaissais pas du tout, ca m’a l’air pas mal comme concept. On aurait donc, en gros, plus trop à chercher a protéger son code, c’est le proxy qui s’en charge. J’irai regarder ca de plus près dès que j’aurais un peu de temps, merci de le l’avoir fait découvrir 😉

    Post a Reply
  4. Pour moi il faut toujours continuer à sécuriser son code, ça restera à mes yeux toujours le meilleurs moyen 😉
    Mais je pense que cette solution est un plus très intéressant 🙂

    Post a Reply
  5. tu es libre de faire ce que tu veux 🙂 j’avais qu’a le publier avant, en faites je l’ai pas publié parce que j’ai pas réussi a l’installer j’avais un bug et on a pas réussi a le réparer avec les mecs du forum de greensql.

    Post a Reply
  6. Sur centos avec un apache et un php compilé a la main je pense que ça doit venir de ça.

    Post a Reply
  7. A oui! Super cet article!
    Je ne le connaissais pas non plus 🙂 Merci beaucoup ! ça ira très bien dans ma DMZ 😉

    ++

    Post a Reply
  8. Bonjour à vous, svp un lien valide pour les packages sur ubuntu, aucun moyen de téléchargement sur le site officiel

    Post a Reply

Trackbacks/Pingbacks

  1. Tweets that mention GreenSQL : Firewall applicatif SQL pour bases MySQL | L'admin sous Linux - Blog Libre -- Topsy.com - [...] This post was mentioned on Twitter by pydubreucq, freeman. freeman said: Admin-Linux : GreenSQL : Firewall applicatif SQL pour…

Submit a Comment

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *