SQL Injections mit GreenSQL wirksam blocken

© Maksym Yemelyanov, 123RF

Sichere Bank

SQL Injections sind die häufigste Schwachstelle von Anwendungen, die übers Web der Öffentlichkeit zugänglich sind. GreenSQL ist ein wirksames Mittel dagegen, das als Firewall zwischen Datenbank und Anwendung verdächtige Queries ausfiltert.
Mit den Tipps und Workshops im ADMIN-Magazin 03/2013 sichern Administratoren ihre Webserver und Netze gegen Angriffe ab: gegen Abhören sensibler Informationen, ... (mehr)

Datenbanken zählen für die meisten Firmen zu den unternehmenskritischen Anwendungen. In ihnen sind oft Informationen über Kunden und Mitarbeiter gespeichert, also nichts, was unkontrolliert in die Wildnis entfleuchen sollte. Letzteres passiert leider immer wieder; selbst großen Firmen, die über viel Fachpersonal und eine ausgeklügelte IT-Infrastruktur verfügen. Kleine Unternehmen mit wenigen Mitarbeitern sind oft noch anfälliger, denn neben dem kostspieligen Rechnerpool fehlen auch die nötigen Fachkenntnisse.

Unterbesetzt

Gerade in kleinen und mittelständischen Unternehmen sind oft Server anzutreffen, auf denen Webanwendungen und Datenbankmanagementsysteme parallel laufen. Fehler in der Webanwendung können dazu führen, dass Server kompromittiert werden oder unberechtigte Personen mittels SQL Injections die Datenbank anzapfen; vor allem, wenn das Personal fehlt, um Sicherheitslücken zu erkennen und zeitnah zu stopfen. SQL-Proxies wie GreenSQL bieten zwar keinen Schutz gegen feindliche Übernahmen eines Servers, aber SQL Injections können sie wirksam unterbinden.

GreenSQL [1] wird seit 2009 von der GreenSQL LTD mit Sitz in Israel entwickelt. Bis zur Version 1.3 stand GreenSQL unter einer Open-Source-Lizenz [2]. 2012 erschien die Version 2 unter einer proprietären Lizenz mit einer kostenlosen Express-Variante, die bereits einen guten Basisschutz bietet. Die Firewall-Lösung ist in C++ implementiert. Am Beispiel eines Linux-Servers mit dem freien Bibliothekssystem Koha soll die Variante GreenSQL Security genauer betrachtet werden. Die Security-Variante bietet gegenüber Express zusätzlich eine Alarm- und Berichtsfunktion sowie Caching. Sie lässt sich zwei Wochen lang kostenlos testen.

GreenSQL wird zwischen Anwendung und Datenbankmanagementsystem geschaltet und fungiert als Reverse Proxy beziehungsweise Datenbank-Firewall. Die Sicherheitslösung läuft unter Linux und MS-Windows und kann die Datenbankmanagementsysteme PostgreSQL, MariaDB, MySQL und Microsoft SQL Server schützen.

Im Firewall-Modus werden nur erlaubte Anfragen an die Datenbank durchgereicht, unautorisierte Queries quittiert GreenSQL mit einer leeren Ergebnismenge. Die kostenpflichtigen Varianten Activity Monitoring und Data Masking überwachen auch, wer welche Anfragen an die Datenbank stellt oder maskieren bestimmte Daten, beispielsweise von Mitarbeitern oder Kunden. In der Regel sollten potenzielle Angreifer nicht bemerken, dass sie es mit einem Proxy anstelle des DBMS zu tun haben.

Inbetriebnahme

Im Idealfall verfügen Sie über drei Rechner: einen Webserver, einen dedizierten Server für GreenSQL und ein Datenbankserver. Es ist aber auch problemlos möglich, alle Anwendungen auf einem Rechner parallel laufen zu lassen.

Um GreenSQL zu installieren, laden Sie die Anwendung herunter, machen sie (unter Linux) mit »chmod 755 greensql.bin« ausführbar und stoßen die Installation mit »./greensql.bin« an. Der Installer legt nun Gruppe und Nutzer »greensql« an, verfrachtet alle Dateien nach »/opt« , erstellt ein Startskript und startet GreenSQL.

Anschließend ist die administrative Oberfläche im Webbrowser über »https://Server:5000/« erreichbar und verlangt nach einem Produktschlüssel. Ihn fordern Sie nach der für den Download nötigen Registrierung an. Wer GreenSQL nicht von der Herstellerseite hat, kann diesen Schritt jederzeit nachholen. Danach werden Anwender aufgefordert, das Admin-Passwort zu ändern, bevor Sie im Dashboard landen (Abbildung 1).

Abbildung 1: Das Dashboard von GreenSQL bietet einen umfassenden Überblick.

Als Erstes stellen Sie eine Verbindung zum Datenbank-System her, bevor Sie GreenSQL als Proxy aktiviren. Das geschieht unter dem Menüpunkt »Databases« . Bevor die Parameter gespeichert werden, können Sie mit einem Klick auf den Button »Check Connection« prüfen, ob die Datenbank erreichbar ist.

Im nächsten Schritt richten Sie einen Proxy ein, über den die zukünftige Kommunikation mit der Datenbank läuft. Er sitzt zwischen Anwendung und DBMS und prüft jede Anfrage, bevor er sie an die Datenbank weiterreicht oder verwirft. Der Proxy muss dabei auf einem anderen Port als die Datenbank lauschen. Sind bereits viele Webanwendungen installiert, wenn Sie GreenSQL in Betrieb nehmen, bietet es sich an, den Port der Datenbank für den Proxy zu übernehmen und stattdessen dem DBMS einen anderen Port zuzuweisen.

Die Datenbank, in der später die zu den Firewall-Regeln gehörigen Queries und andere Daten abgelegt werden, müssen Sie normalerweise nicht von Hand anlegen, da GreenSQL sie auch automatisch erstellt. Wer von Anfang an lieber eigene Namen vergeben möchte, darf das natürlich tun.

Sind die Datenbank verbunden und der Proxy erstellt, erfordern vielleicht noch die Datenbankanwendungen kleine Anpassungen, etwa, wenn der Proxy einen anderen Port als ehemals die Datenbank verwendet. Hier reicht es aus, in den Konfigurationsdateien der einzelnen Anwendungen Port und Server des DBMS zu ändern.

Vorsicht ist mit dem beliebten Localhost auf Linux-Systemen geboten, wenn Proxy und Anwendung parallel auf einem Server laufen. Hier werden oftmals Unix-Sockets eingesetzt, die GreenSQL nicht berücksichtigt. Dann fliegen die Queries unter dem GreenSQL-Radar und werden nicht geprüft. Ersetzt man »localhost« durch 127.0.0.1, sollte alles wie gewünscht funktionieren.

Während die erlaubten Queries bei selbst entwickelten Datenbankanwendungen prinzipiell bekannt sind, ist es bei erworbenen Anwendungen deutlich schwieriger, sich einen Überblick zu verschaffen. Eine Suche nach Schlüsselwörtern wäre zwar möglich, aber in der Praxis verteilen sich Queries oftmals über viele Dateien, werden dynamisch zusammengesetzt oder die Entwickler greifen auf Technologien wie Active Record oder PHP Data Objects zurück.

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019