Sicherheit beginnt bei der Datenbank

Schutz vor SQL-Injections

| Autor / Redakteur: Jan Schulze* / Ulrike Ostler

Datenbank-Firewall

Der wirkungsvollste Schutz gegen SQL-Injections ist eine Filterung aller Datenbankabfragen durch die Web-Anwendung. Damit geht allerdings ein erheblicher Aufwand einher, da wirklich alle möglichen Szenarien bedacht werden müssen. Auch verfügen die verschiedenen Skript-Sprachen, die bei Web-Anwendungen zum Einsatz kommen, über geeignete Methoden. Auch dieser Ansatz ist mit zusätzlichem Aufwand verbunden und erfordert eine sehr ausführliche Planung.

Welcher Art waren die Angriffe auf Daten(banken) in den vergangenen zehn Jahren? Die Antwort steckt etwa im "2015 Data Breach Investigations Report" von Verizon.
Welcher Art waren die Angriffe auf Daten(banken) in den vergangenen zehn Jahren? Die Antwort steckt etwa im "2015 Data Breach Investigations Report" von Verizon. (Quelle: http://www.verizonenterprise.com/DBIR/2015/)

Am sichersten ist deswegen der Schutz vor SQL-Injections direkt auf Datenbankebene. Hierfür haben sich einige Methoden etabliert. Sehr verbreitet ist der Einsatz von so genannten Prepared Statements: Hierbei werden Anweisungen an die Datenbank vorbereitet und Platzhalter statt konkreter Parameter genutzt. Da die Datenbank vor der Verarbeitung die Parameter validiert, lassen sich SQL-Injections recht effektiv abwehren. Auch Stored Procedures, vor allem in Verbindung mit White- und Blacklisting, haben sich generell gut als Schutz vor Eindringlingen bewährt.

Noch effizienter als der reine Schutz auf Datenbankebene ist jedoch die Absicherung gegen SQL-Injections als zusätzliche Schicht über den Datenbanken. Vor allem in großen Installationen lassen sich damit Einbruchsversuche über SQL-Injections zuverlässig und für den Administrator übersichtlich abwehren. Das finnische Open-Source-Unternehmen MariaDB hat deswegen seinen Datenbank-Proxy Maxscale mit einem Filter ausgestattet, der ähnlich wie eine Perimeter-Firewall die Datenbank-Cluster gegen SQL-Injections schützen kann.

Zentraler Filter

Das Filtermodul arbeitet – wie viele Maxscale-Komponenten – als Plugin. Es können verschiedene Filter definiert werden, die sich auch als Ketten anordnen lassen. Die Filter sind in der Lage, Anfragen an die Datenbank zu blockieren, zu modifizieren oder zu protokollieren. Auch können Requests damit dupliziert werden. Eine Anfrage lässt sich anhand eines definierten Regelsatzes blockieren. Zusätzlich können Regeln für einzelne Anwender festgelegt werden.

Ergänzendes zum Thema
 
Über MariaDB Maxscale

Mögliche Regeln dabei sind zum Beispiel, dass Anfragen mit dem Wildcard-Zeichen „*“ abgefangen werden. Auch lassen sich Querys blockieren, die als Ergebnis den Inhalt einer bestimmten Tabellenspalte liefern würden. Auch eine Sperre zu gewissen Uhrzeiten ist möglich, zudem können gezielt einzelne SQL-Befehle abgewiesen werden. Hilfreich vor allem bei Denial-of-Service-Angriffen ist die Möglichkeit, die Anzahl der Anfragen innerhalb einer gewissen Zeit zu begrenzen.

Um etwa einen Angriff auf die Kundendaten nach dem Muster

http://app.com/show.php?cid=1234 OR 1=1

zu unterbinden, definiert der Datenbank-Administrator eine Regel, die den Befehl OR abweist, wenn danach ein numerischer Ausdruck folgt. Damit sind alle Datenbanken geschützt, die über den Maxscale-Proxy verwaltet werden. Der besondere Vorteil dieses Ansatzes: Weder an den Datenbanken selbst noch an der Anwendungen müssen dafür Änderungen vorgenommen werden. Auch wenn neue Datenbanken in den Cluster aufgenommen werden, sind diese automatisch durch Maxscale geschützt. Der Administrator muss somit nur an einer zentralen Instanz Hand anlegen. Die Gefahr von Fehlkonfigurationen an einzelnen Datenbank-Instanzen und der Aufwand sinken signifikant.

* Jan Schulze ist freier Journalist.

Inhalt des Artikels:

Was meinen Sie zu diesem Thema?
definiert der Datenbank-Administrator eine Regel, die den Befehl OR abweist, wenn danach ein...  lesen
posted am 17.07.2015 um 09:51 von Unregistriert


Mitdiskutieren
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 43499711 / Software)