Production Perig - stock.adobe.c

In sieben Schritten zu sicheren Datenbanken mit MySQL 8.0

Die mangelnde Absicherung von Datenbanken führt immer wieder zu Datendiebstahl. Dabei sind nur wenige Handgriffe für die Absicherung notwendig.

Datenbanken sind immer wieder das Ziel von Datendiebstahl. Häufig liegt das Problem allerdings in der eigenen IT-Verwaltung begründet, da Sicherheitseinstellungen von Nutzer-Accounts nicht ausreichend berücksichtigt werden. Darüber hinaus sollte die Datenbank stets mit aktuellsten Updates versorgt sein.

Im Folgenden werden neue Sicherheitsfunktionen für den Datenbankzugriff durch Mitarbeiter vorgestellt. Bei MySQL sind wenige Handgriffe nötig.

1. Starke Authentifizierungs-Plug-ins verwenden

Verbindet sich ein Anwender mit einem Server, verifiziert dieser, welches Authentifizierungs-Plug-in für diesen bestimmen Nutzer konfiguriert worden ist. Anschließend wird der Mitarbeiter dazu aufgefordert, das korrekte Passwort einzugeben. Viele Authentifizierungs-Plug-ins setzen bei diesem Verfahren standardmäßig SHA1-Algorithmen ein. Sie sind allerdings anfällig für Angriffe von außen. Das liegt daran, dass die Hashwert-Berechnung auf Grundlage des Passworts erfolgt. Die Folge: Zwei Nutzer, die dasselbe Passwort verwenden, besitzen denselben Hashwert. Das macht es Angreifern leicht, Zugang zur Datenbank mithilfe einer Rainbow Table zu erhalten, das Passwort zu ändern und sich einloggen zu können.

Das Update auf MySQL 8.0 ersetzt das Authentifizierungs-Plug-in SHA 1 durch das neue Standard-Authentifizierungs-Plug-in SHA-256. Das macht Nutzer-Accounts durch die Verwendung von Salted Passwords weniger empfindlich gegenüber solchen Attacken. Salted Passwords kombinieren das Nutzerpasswort mit einem zufällig generierten Datensatz (Salt). Außerdem wird das Passwort bei SHA-256 etwa 5.000 Mal gehasht. Damit ist es für Hacker nicht mehr effizient, das Passwort über Rainbow Tables aus dem Hashwert zu ermitteln, da für jedes denkbare Salt eine vollständige Rainbow Table angelegt werden müsste.

Konfiguration in MySQL 8.0:

So legen IT-Verantwortliche neue Nutzer mit dem neuen Standard-Authentifizierungs-Plug-in caching_sha2_password an:

mysql> CREATE USER ‘user_1’@’1.1.1.1’ IDENTIFIED BY ‘Hpdclim1@#$’;

Query OK, 0 rows affected (3.26 sec)

 

mysql> SELECT host, user, plugin FROM mysql.user WHERE user = ‘user_1’;

+———-+———–+———————————-+

| host     | user      | plugin                                  |

+———-+———–+———————————-+

| 1.1.1.1 | user_1 | caching_sha2_password |

———-+———–+———————————-+

1 row in set (0.01 sec)

Mit folgendem Code richtet die IT das neue Standard-Authentifizierungs-Plug-in caching_sha2_password für bereits bestehende Nutzer ein:

mysql> SELECT host, user, plugin FROM mysql.user WHERE plugin = ‘mysql_native_password’;

+———-+———+———————————-+

| host     | user    | plugin                                 |

+———-+———+———————————-+

| 1.1.1.1 | usr_2 | mysql_native_password |

+———-+———+———————————-+

1 row in set (0.03 sec)

 

mysql> ALTER USER ‘usr_2’@’1.1.1.1’ IDENTIFIED WITH caching_sha2_password BY ‘Hpdclim1@#$’;

Query OK, 0 rows affected (0.15 sec)

 

mysql> SELECT host, user, plugin FROM mysql.user WHERE plugin = ‘mysql_native_password’;

Empty set (0.00 sec)

2. Rollenbasierte Berechtigungen auf dem niedrigsten benötigten Level festsetzen

Das Prinzip des geringsten Zugriffsmandats limitiert den Zugriff von Usern auf die Informationen in der Datenbank. Nicht jeder Mitarbeiter benötigt schließlich Zugriff auf jeden Geschäftsbereich oder jede Datei. Rollenbasierte Sicherheitseinstellungen unterstützen die individuellen Zugriffe. Die IT muss dafür in der Datenbank jedem Mitarbeiter die Rolle für den von ihm benötigten Datenzugriff festlegen. Dieser Ansatz ist so grundlegend, dass er sogar die Einhaltung von Sicherheitsstandards wie EU-DSGVO, DISA und CIS gewährleistet. Ohne rollenbasierten Zugang besitzen einfache Nutzer mehr Privilegien als sie benötigen, und stellen so ein Risiko für die Datensicherheit dar.

Schränkt die IT die Berechtigungen der Mitarbeiter durch Rollen ein, sind hingegen nur wenige Daten für Angreifer einsehbar. Mit den meisten großen Datenbanklösungen wie MySQL 8.0 lassen sich bereits seit Jahren rollenbasierte Nutzerprofile verwalten. So kann einem Datendiebstahl Einhalt geboten werden – und das ist dringend nötig: Laut Verizon Data Breach Investigations Report 2018 wurden im vergangenen Jahr 2.216 Datenlecks bestätigt. Mehr als 200 davon stehen im Zusammenhang mit Zugriffsechten für Datenbanken.

3. Richtlinien zur Änderung des aktuellen Passworts festlegen

Ein Passwort zu ändern ist einfach, wenn der User ohne Sicherheitsabfragen ein neues hinterlegen kann. Mit einer Web Shell sind Hacker in der Lage, auf die Datenbanksitzung eines Anwenders zuzugreifen.

Ist die Generierung eines neuen Passwortes jedoch mit der Eingabe des aktuellen Passwortes verknüpft, bleibt dem Angreifer der Zugriff verwehrt. Nur die Unternehmens-IT und der Mitarbeiter haben Zugriff auf das aktuelle Passwort und können es ohne Probleme ändern.

Konfiguration in MySQL 8.0:

Um die Richtlinie zur Änderung des aktuellen Passworts global festzulegen, muss folgende Zeile in die my.cnf-Datei des Servers kopiert werden:

[mysqld]

password_require_current=ON

4. Richtlinien zur Wiederverwendung von Passwörtern einführen

Eine weitere Möglichkeit, um Konten zu sichern, ist die Beschränkung für die Wiederverwendung von Passwörtern. Diese können auf der Anzahl der zurückliegenden Passwortänderungen, der verstrichenen Zeit oder beidem basieren. So wird Anwendern beispielsweise untersagt, eines der letzten sechs verwendeten Passwörter oder ein im vergangenen Jahr verwendetes Passwort erneut zu gebrauchen.

Konfiguration in MySQL 8.0:

Um die Nutzung der letzten sechs verwendeten Passwörter oder die Passwörter der letzten 365 Tage zu verbieten, müssen folgende Zeilen in die my.cnf-Datei des Servers eingegeben werden:

[mysqld]

password_history=6

password_reuse_interval=365

5. FIPS-Modus aktivieren

Der FIPS-Modus ist ein Verschlüsselungsalgorithmus auf dem Server. Er enthält verschiedene Replikationen (Master-/Slave- und Gruppenreplikation) und das X-Plug-in. Der FIPS-Modus schützt die Verbindung zwischen Anwender und Server. Allerdings kann er nicht den Aufbau einer unverschlüsselten Verbindung verhindern.

Mit dem Update auf MySQL 8.0 unterstützt der Datenbankserver den FIPS-Modus. Dafür nutzt MySQL die Open-Source-Lösung OpenSSL.

Konfiguration in MySQL 8.0:

Zur Aktivierung des FIPS-Modus müssen folgende Zeilen in die my.cnf-Datei des Servers eingefügt werden:

[mysqld]

ssl_fips_mode=1

6. Accounts von SUPER auf dynamische Berechtigungen migrieren

Die Migration von SUPER- zu dynamischen Privilegien in Nutzerprofilen erhöht die Sicherheit. Datenbankadministratoren können die Verteilung von SUPER-Zugriffsrechten vermeiden und stattdessen Benutzerrechte enger an die zulässigen Zuständigkeitsbereiche anpassen. Die Verwendung dynamischer Berechtigungen verknüpft die Zugriffsrechte eines Nutzers zudem mit einem Kontext. Das kann beispielsweise der Standort oder der Zeitpunkt des Zugriffs sein. Der Server prüft bei jedem Zugriff die Benutzerberechtigungen neu und entscheidet, wie viel er zulässt. Damit erschwert die Administratoren es Hackern, von außen Zugriff auf die Datenbank zu erlangen.

In MySQL 8.0 sind viele Operationen, die bisher das SUPER-Privileg erforderten, auch mit dynamischen Berechtigungen mit begrenzter Reichweite möglich.

Konfiguration in MySQL 8.0:

IT-Administratoren können folgende Abfragen ausführen, um Konten mit SUPER-Rechten zu identifizieren:

mysql> GRANT BINLOG_ADMIN ON *.* TO ‘admin_log’@’1.1.1.1’;

Query OK, 0 rows affected (0.03 sec)

mysql> REVOKE SUPER ON *.* FROM ‘admin_log’@’1.1.1.1’;

Query OK, 0 rows affected, 1 warning (0.14 sec)

Anschließend ordnen Verantwortliche jedem der oben aufgeführten Konten das geringste benötigte Privileg zu und entzieht den Konten das SUPER-Privileg. Beispiel: Wenn der Benutzer admin_log'@'1.1.1.1 SUPER für die Bereinigung binärer Protokolle benötigt, führt der Administrator Folgendes aus:

mysql> GRANT BINLOG_ADMIN ON *.* TO ‘admin_log’@’1.1.1.1’;

Query OK, 0 rows affected (0.03 sec)

mysql> REVOKE SUPER ON *.* FROM ‘admin_log’@’1.1.1.1’;

Query OK, 0 rows affected, 1 warning (0.14 sec)

7. Redo-Log- und Undo-Log-Datenverschlüsselung nutzen

Redo-Daten und Undo-Daten enthalten sensible Informationen über Vorgänge in der Datenbank. Eine Verschlüsselung dieser Informationen selbst im Ruhezustand ist essenziell für die Sicherheit der Datenbank. MySQL 8.0 nutzt Redo- und Undo-Log-Datenverschlüsselungen, wenn ein Mitarbeiter Daten schreibt oder liest.

Avidan Reich, Imperva

„Datenbanken sind immer wieder das Ziel von Datendiebstahl. Häufig liegt das Problem allerdings in der eigenen IT-Verwaltung begründet, da Sicherheitseinstellungen von Nutzer-Accounts nicht ausreichend berücksichtigt werden.“

Avidan Reich, Imperva

Konfiguration in MySQL 8.0:

Die Redo-Log- und die Undo-Log-Verschlüsselung sind standardmäßig deaktiviert. Nachdem IT-Verantwortliche die Verschlüsselungsvoraussetzungen konfiguriert haben, fügen sie folgende Zeilen in die my.cnf-Datei des Servers ein und aktivieren damit die Chiffrierung:

[mysqld]

innodb_redo_log_encrypt=ON

innodb_undo_log_encrypt=ON

Alle sieben Sicherheitseinstellungen helfen dabei, eine Datenbank zu schützen. Denn die meisten Datenbank-Kompromittierungen sind das Ergebnis einer schlechten Konfiguration und eines Missbrauchs von Zugriffsrechten.

Über den Autor:
Avidan Reich ist seit 2008 als Security Research Engineer bei Imperva tätig. Er hat an der Universität in Tel Aviv studiert und verfügt über detaillierte Kenntnisse in Database Security, Data Analysis und Data Mining.

Die Autoren sind für den Inhalt und die Richtigkeit ihrer Beiträge selbst verantwortlich. Die dargelegten Meinungen geben die Ansichten der Autoren wieder und entsprechen nicht unbedingt denen von ComputerWeekly.de.

Nächste Schritte

Komplexe Datenbanken mit einer zentralen Plattform verwalten.

Sechs Best Practices für eine Oracle-Datenbankoptimierung.

Was Performance Tuning für Oracle-Datenbanken möglich macht.

Erfahren Sie mehr über Datensicherheit