Datenbank gegen Missbrauch sichern

Sicherheits-Upgrades unter MySQL 8.0 nutzen

| Autor / Redakteur: Avidan Reich / Peter Schmitz

Mit der neuen Datenbankversion MySQL 8.0 können Unternehmen die Sicherheit für ihre Datenbank mit sieben einfachen Schritten deutlich erhöhen.
Mit der neuen Datenbankversion MySQL 8.0 können Unternehmen die Sicherheit für ihre Datenbank mit sieben einfachen Schritten deutlich erhöhen. (Bild: gemeinfrei / Pixabay)

Unbefugte Zugriffe auf Datenbanken sind fast schon an der Tagesordnung. Die meisten Zugriffe werden dabei unwissend von den eigenen Mitarbeitern ausgelöst. Vor allem schlechte Sicherheitskonfigurationen und der Missbrauch von Berechtigungen öffnen Unbefugten Tür und Tor zur Datenbank. Dabei kann der Schutz – zumindest mit MySQL 8.0 – so einfach sein, wenn Admins auf diese sieben Must-Do's achten.

Im vergangenen Jahr gab es bei einer der meistgenutzten Datenbanksystemen MySQL ein Update auf die Version 8.0. Es brachte Verbesserungen in allen Bereichen, vor allem bei der Sicherheit. Für einen sicheren Zugriff von Mitarbeitern auf die Datenbank und den höheren Schutz gegen Missbrauch sind sieben Datenbankkonfigurationen ratsam.

Must-Do 1: Sicheres SHA-256 Authentifizierungs-Plugins nutzen

Verbindet sich ein Anwender mit dem Server, erkennt dieser, welches Authentifizierungs-Plugin (AP) für ihn konfiguriert ist. Im Anschluss fordert er den Mitarbeiter auf, das korrekte Zugangspasswort einzugeben. In der Vergangenheit kam es dabei durchaus vor, dass zwei oder mehrere Nutzer dasselbe Passwort mit demselben Hash-Wert benutzt hatten. Hacker haben so leichtes Spiel und können mithilfe einer Rainbow Table in die Datenbank eindringen und den Zugang durch Änderung des Passwortes übernehmen.

Mit dem MySQL-Update auf Release 8.0 ist dies kaum mehr möglich. Es ersetzt den SHA1-Algorithmus des standardisierten AP durch den sichereren SHA-256, genannt ‚caching_sha2_password‘. Es ermöglicht die Verwendung von Salted Passwords. Diese kombinieren das Nutzerpasswort mit einem zufällig generierten Datensatz (Salt). Zudem wird das Passwort bei SHA-256 rund 5.000 Mal gehasht. Der Hash-Wert des Passwortes lässt sich über ein einziges Rainbow Table nun nicht mehr ermitteln. Ein Hacker müsste nun für jeden denkbaren Salt eine vollständige Rainbow Table anlegen.

So erfolgt die Konfiguration in MySQL 8.0:

Mit folgenden Codes lassen sich neue Anwender mit ‚caching_sha2_password‘ anlegen:

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)

Für bereits bestehende Anwender gelten folgende Einstellungen:

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)

Must-Do 2: Rollenbasierte stufenlose Zugriffsrechte festsetzen

Unternehmen können die Sicherheit für ihre Datenbank darüber hinaus durch eingeschränkte Zugriffsmandate erhöhen: Nicht jeder Mitarbeiter benötigt Zugriff auf alle Informationen, die in der Datenbank hinterlegt sind. IT-Administratoren können in der neuen Datenbankversion jedem Mitarbeiter rollenbasierte Zugriffsrechte einräumen, indem sie ihm die benötigten Datenzugriffe zuschreiben und diese auch gezielt verwalten. Damit sind gleichzeitig Sicherheitsstandards wie DSGVO, DISA und CIS gewährleistet.

Unternehmen, die auf rollenbasierte Zugänge verzichten, räumen ihren Mitarbeitern höhere Privilegien ein als nötig und riskieren damit die Datensicherheit. Denn haben Mitarbeiter vollumfängliche Zugriffrechte auf die Inhalte der Datenbank, erhält auch der Angreifer, der ihren Account hackt, eine komplette Dateneinsicht. Sind die Zugriffsrechte allerdings von vornherein eingeschränkt, verringert sich der Schaden um ein Vielfaches.

Must-Do 3: Richtlinien vorgeben zur Änderung des aktuellen Passworts

Mit der neuen Datenbankversion MySQL 8.0 lässt sich für jeden Anwender die Richtlinie „Aktuelles Passwort ändern“ aktivieren. Das sollte möglichst für alle Anwender erfolgen. Vorteil: Ist die Generierung eines neuen Passwortes mit der Eingabe des aktuellen Passwortes verknüpft, bleibt dieser Zugriff dem Angreifer verwehrt. Nur IT-Administratoren und der Mitarbeiter haben Zugriff auf das aktuelle Passwort und können dieses ändern.

Gefährdet also ein Angreifer den Host-Computer und verwendet eine Web Shell, um auf die Datenbanksitzung des Anwenders zuzugreifen, konnte dieser ihn bisher abmelden und ein neues Passwort festlegen. Durch die allgemeine Richtlinie ist dies nun nicht mehr möglich.

So erfolgt die Konfiguration in MySQL 8.0:

Um die Richtlinie global festzulegen, wie das aktuelle Passworts geändert werden soll, sollten IT-Administratoren folgende Zeile in die my.cnf-Datei des Servers kopieren:

[mysqld]
password_require_current=ON

Must-Do 4: Richtlinien festlegen zur Wiederverwendung von Passwörtern

Der Kontozugriff lässt sich weiter sichern, wenn die Passwortnutzung geregelt ist. Unternehmen sollten hierzu Richtlinien aufstellen, die klar aufzeigen, wie oft Anwender dieselben Passwörter erneut verwenden dürfen. Die Beschränkung kann dabei auf der Anzahl der zurückliegenden Passwortänderungen, der verstrichenen Zeit oder beidem basieren. So bleibt Anwendern beispielsweise untersagt, eines der letzten sechs verwendeten Passwörter oder ein im vergangenen Jahr verwendetes Passwort erneut zu gebrauchen.

So erfolgt die Konfiguration in MySQL 8.0:

Um die Nutzung der letzten sechs verwendeten Passwörter oder die Passwörter der letzten 365 Tage zu verbieten, sollten IT-Administratoren folgende Zeilen in die my.cnf-Datei des Servers eingeben:

[mysqld]
password_history=6
password_reuse_interval=365

Must-Do 5: Verschlüsselungsalgorithmus aktivieren

Der FIPS-Modus ist ein anerkannter Verschlüsselungsalgorithmus auf der Serverseite. Er enthält verschiedene Replikationen (Master-/Slave- und Gruppenreplikation) und das X-Plugin unter Verwendung bestimmter Verschlüsselungschiffren bei der Client-Server-Kommunikation. Das sichert die Verbindung zwischen Nutzer und Server. Aber auch der FIPS-Modus kann nicht den Aufbau einer unverschlüsselten Verbindung verhindern.

Mit dem Update auf MySQL 8.0 unterstützt der Datenbankserver den FIPS-Modus. Er muss allerdings mit OpenSSL genutzt werden. Außerdem müssen eine OpenSSL-Bibliothek sowie ein FIPS-Objektmodul zur Laufzeit verfügbar sein. Empfohlen wird, den FIPS-Modus zu aktivieren und immer verschlüsselte Verbindungen herzustellen.

So erfolgt die Konfiguration in MySQL 8.0:

Zur Aktivierung des FIPS-Modus fügt der IT-Administrator folgende Zeilen in die my.cnf-Datei des Servers ein:

[mysqld]
ssl_fips_mode=1

Must-Do 6: Accounts wechseln von SUPER auf dynamische Berechtigungen

In MySQL 8.0 sind nach dem Update viele Operationen, die bisher das SUPER-Privileg erforderten, auch mit dynamischen Berechtigungen mit begrenzter Reichweite möglich. Der Wechsel verbessert die Sicherheit. Datenbankadministratoren können die SUPER-Zugriffrechte unterbinden und die Benutzerberechtigung enger auf die Aufgaben der Anwender zuschneiden.

Die Verwendung dynamischer Berechtigungen knüpft die Zugriffsrechte eines Mitarbeiters zudem an einen Kontext. Das kann beispielsweise der Standort oder der Zeitpunkt des Zugriffs sein. Der Server prüft bei jedem Zugriff die Benutzerberechtigungen von Neuem und entscheidet, wie viel Zugriff er zulässt. Das erschwert Hackern den externen Zugriff auf die Datenbank.

So erfolgt die Konfiguration in MySQL 8.0:

IT-Administratoren sollten folgende Abfrage 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 Sie jedem der oben aufgeführten Konten das geringste benötigte Privileg zu und entziehen den Konten das SUPER-Privileg. Beispiel: Wenn der Benutzer 'admin_log'@'1.1.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)

Must-Do 7: Redo-Log- und Undo-Log-Daten verschlüsseln

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

So erfolgt die Konfiguration in MySQL 8.0:

Die Redo-Log- und die Undo-Log-Verschlüsselung sind standardmäßig deaktiviert. Nachdem die IT-Administratoren 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

Die Sicherheitseinstellungen in MySQL 8.0 sind schnell vorgenommen. Der Schutz der Datenbank erhöht sich nachhaltig. Mit den sieben Must-Dos ist ein wichtiger Schritt weg von kompromittierten Datenbanken getan, die meist das Ergebnis schlechter oder gar unterlassener Konfiguration sind und Angreifern den Zugriff erleichtern.

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

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

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