MySQL installieren und absichern (Debian, Raspbian Ubuntu…)

Nahezu alle Webanwendungen (z.B. WordPress, Joomla, etc.) unterstützen mindestens MySQL oder setzen sogar explizit MySQL für den Betrieb der Anwendung voraus.

Ich persönlich bevorzuge auf lizenzrechtlichen Überlegungen zwar eher PostgresSQL, aber das wird nicht von allen Anwendungen unterstützt. Alternativ käme noch MariaDB in Betracht, welches 100% OpenSource ist und vollständig kompatibel zu MySQL sein soll. Hier fehlen mir aber noch konkrete Testergebnisse, sodass es vorerst bei MySQL als fester Bestandteil des LAMP-Systems erhalten bleibt.

Der MySQL Server wird nur als „lokaler“ MySQL-Server eingerichtet, d. h. MySQL ist nicht aus dem Neztwerk erreichbar und nur für Anwendungen nutzbar, die auch auf dem gleichen Rechner / Server laufen wie das MyQL DBMS.
Warnung: Wer seinen MySQL auch im Netz verfügbar machen möchte, sollte genau wissen was er tut und in der Lage sein die Sicherheitsrisiken zu erkennen und zu bewerten!!!

Wie immer melden wir uns als „root“ auf dem zukünftigen MySQL-Server an und installieren zunächst den MySQl-Server und den MySQL-Client

apt install mysql-server mysql-client

Möchten wir MySQL auch mit PHP unter dem Apachen benutzen (z. B. LAMP -System) müssen wir noch die entsprechenden PHP-Bibliotheken installieren.

apt install php-mysql

Weitere Pakete können erforderlich sein. Dies hängt aber von den Anwendungen ab, die auf dem Server / Computer betrieben werden sollen…

Während der Installation fragt das Installationsscript nach einem „root“ Passwort. Ich persönlich lasse hier das Passwort immer leer und bestätige den Dialog einfach mit „OK„.

Nachdem „aptitude“ fertig installiert hat, machen wir den MySQL etwas sicherer indem wir folgendes Script starten:

mysql_secure_installation

Die erste Abfrage „Enter current password for root (enter for none):“ beantworten wir einfach mit „ENTER“ (wenn wir noch kein Passwort vergeben haben) oder geben das Passwort für den MySQL-Benutzer „root“ ein.

Nun fragt das Script ob wir ein „root“-Passwort vergeben wollen. Wir bestätigen dies mit „Y“ und „ENTER

Set root password? [Y/n] Y

Nun bittet uns das Script ein neues „root„-Passwort zu vergeben. Hier gebe ich dann ein entsprechend sicheres Passwort ein….

New password:

… und bestätigen das Passwort durch nochmalige Eingabe…

Re-enter new password:

Im nächsten Dialog bietet uns das Script an die im MySQL-Server vordefinierten anonymen Benutzer zu löschen. Ich halte anonymes Zugriffe auf Datenbanken für keine gute Idee und stimme dieser Frage aus vollem Herzen zu…..

Remove anonymous users? [Y/n] Y

Ebenfalls so ein offenes Scheunentor ist die Voreinstellung, dass der „root“ Benutzer der MySQL sich direkt aus dem Netzwerk am MySQL-Server anelden kann. Daher lassen wir den Netzwerkzugang für den Benutzer „root“ löschen! Damit ist ein Zugang auf den MySQL-Server als „root“ nur noch möglich, wenn ich auf dem Rechner lokal oder per SSH angemeldet bin.

Disallow root login remotely? [Y/n] Y

MySQL bringt während der Installation eine Test-Datenbank mit. Wie der Name schon sagt ist die zum „testen“ gedacht. Sowas gehört nun nicht in ein produktives Umfeld, also bitten wir das Script diese Datenbank zu löschen…

Remove test database and access to it? [Y/n] Y

Falls die Test-Datenbank nicht vorhanden ist, wird dies in einer kurzen nicht kritischen Fehlermeldung erwähnt und das Skript arbeitet weiter.

Und selbstverständlich soll MySQL die Rechteänderungen sofort vornehmen und wir bitte das Script dafür zu sorgen, dass der MySQL die Rechtetabellen neu einliest…

Reload privilege tables now? [Y/n] Y

Damit ist das Script fertig und bedankt sich i. d. R. mit einem freundlichen „Thanks for using MySQL!

Vorsichtshalber öffnen wir noch mal die Datei „/etc/mysql/mysql.conf.d/mysqld.cnf installieren und absichern (Debian, Raspbian Ubuntu…)“ und kontrollieren den Eintrag „bind-address„. Der sollte per Voreinstellung wie nachfolgend dargestellt auf das lokale Loopback-Device zeigen:

bind-address = 127.0.0.1

Sollte dies nicht der Fall sein, diesen Eintrag bitte wie oben gezeigt anpassen und den MySQL-Server neu starten.

Der MySQL-Server ist jetzt in einem halbwegs sicheren und ordentlichen Zustand und kann produktiv genutzt werden.

0 Kommentare zu “MySQL installieren und absichern (Debian, Raspbian Ubuntu…)

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert. Wenn du zum ersten Mal kommentierst, wird dein Kommentar erst angezeigt, nachdem ihn ein Moderator freigegeben hat. Das kann auch mal einen Tag dauern.