GreenSQL: besserer Schutz für MySQL-Datenbanken

(http://www.zdnet.de/magazin/41003635/greensql-besserer-schutz-fuer-mysql-datenbanken.htm)

von Vincent Danen, 5. Mai 2009

GreenSQL ist ein MySQL-Proxy, der zwischen Datenbankserver und Webserver geschaltet wird. Dort prüft er alle Abfragen auf ihre Sicherheit und leitet sie erst dann weiter. ZDNet erklärt die Datenbank-Firewall und zeigt, wie sie installiert wird.

Viele Angriffe auf Webseiten oder Webanwendungen stehen in direktem Zusammenhang mit sogenannten SQL-Injection-Lücken. Das ist bei schlecht geschriebenen Anwendungen ein großes Problem, denn ein Benutzer kann aus der Ferne SQL-Befehle an den Datenbankserver schicken, indem er an den Webserver gesendete Daten manipuliert und die SQL-Befehle an rechtmäßige Datenbankabfragen hängt. Die Webanwendung führt sie meist einfach aus, ohne die Befehle erst zu überprüfen oder von schädlichen Inhalten zu befreien.

GreenSQL[1] ist eine Firewall für MySQL-Datenbanken. Sie setzt genau an dieser Stelle an und fängt SQL-Befehle auf dem Weg zu MySQL ab, überprüft sie und sortiert die Abfrage entweder aus oder gibt sie "sauber" an MySQL weiter. Danach liefert sie die Abfrageergebnisse wieder an die Anwendung zurück, von der die Abfrage ausgegangen war.

GreenSQL bietet Binär-Pakete für einige Linux-Distributionen an. Wer seine Distribution oder Version nicht auf GreenSQLs Download-Seite[2] finden kann, lädt sich einfach die Tarballs greensql-console und greensql-fw herunter. Anschließend kann folgendermaßen auch direkt von der Source installiert werden:


# tar xvzf greensql-fw-0.9.4.tar.bz2

# cd greensql-fw-0.9.4

# ./build.sh

# greensql-create-db.sh

Mit dem letzten Befehl wird die benötigte MySQL-Datenbank für GreenSQL erstellt. Daher muss sichergestellt sein, dass MySQL gerade ausgeführt wird und auf einen Port hört (das heißt, in /etc/my.cnf muss die Option "skip-networking" deaktiviert sein).

Und so kann man GreenSQL starten und testen:


# greensql-fw -p /etc/greensql &

# mysql -u root -h 127.0.0.1 -P 3305 -p

Der GreenSQL-Proxy hört auf Port 3305. Das bedeutet, dass sämtliche Anwendungen, die durch GreenSQL geprüft werden sollen, so konfiguriert werden müssen, dass sie keine lokalen Unix-Sockets verwenden und nicht über Port 3306, sondern über Port 3305 eine Verbindung zum lokalen Host herstellen.

Das greensql-console-Paket bietet eine Web-Schnittstelle, in der man nachsehen kann, welche Anfragen geblockt wurden. Außerdem lässt sich damit konfigurieren, was GreenSQL blocken und was es durchlassen soll. Der greensql-console-Tarball wird dazu dekomprimiert und in das Web-Verzeichnis integriert, und dann muss man config.php an den gewünschten GreenSQL-Benutzernamen, das Passwort und den Datenbanknamen anpassen.

Wer GreenSQL direkt von der Source installiert hat, sollte sicherstellen, dass die Software bei jedem Reboot automatisch startet. Je nach der verwendeten Linux-Distribution muss man dafür manchmal nur ein initscript aus dem greensql-fw-Quellbaum kopieren (zum Beispiel rpm/greensql-fw.redhat.init) oder einfach dem lokalen Boot-Script hinzufügen. Damit dürfte die Gefahr einer SQL-Injection gebannt sein.

URLs in diesem Artikel:
[1] = http://www.greensql.net/
[2] = http://www.greensql.net/download