Externen MySQL Zugriff einrichten

Gestern habe ich ja beschrieben, wie man phpMyAdmin unter Ubuntu installiert. Heute kam dann direkt die Frage auf: Wie richte ich einen externen Zugriff auf die Datenbank ein. Darauf will ich hier mal eingehen. Grundlage ist der Artikel „phpMyAdmin unter Ubuntu installieren und absichern“. Ich gehe davon aus, dass ihr ein System habt, welches nach der Beschreibung in dem Artikel erstellt wurde. Des Weiteren weise ich darauf hin, dass ein externer Zugriff auf eine Datenbank auch immer ein Risiko darstellt. Ich kann deshalb jedem nur raten sein System immer auf dem aktuellsten Stand zu halten, da das die Risiken minimiert von einem Exploit betroffen zu sein.

Externen Zugriff auf die Datenbank einrichten

Wenn das System „frisch“ installiert wurde ist standardmäßig nur der lokale Zugriff auf die Datenbank erlaubt. Dieser Zugriff wird über eine Variable in der /etc/mysql/my.cnf gesteuert. Der Eintrag sieht wie folgt aus:

bind 127.0.0.1

Damit wir Zugriff von einem externen System erhalten muss dieser Eintrag geändert werden.

bind 0.0.0.0

Diese Änderung bewirkt, dass sich jede IP mit der Datenbank verbinden kann. Das heisst natürlich nicht, dass auch jeder Zugriff auf die Datenbank hat. Vielmehr sollte man es als Möglichkeit beschreiben, welche nun gegeben ist. Ihr könnt hier auch einfach eine bestimmte IP eintragen, von der der Zugriff erlaubt wird. Das sieht dann so z.B. aus

bind 192.168.100.1

Das ermächtigt nur die IP 192.168.100.1 zum Zugriff auf den Server. Ich denke mal das Prinzip ist klar geworden.
Haben wir einen bind Eintrag gewählt, müssen wir den MySQL Server neu starten

sudo /etc/init.d/mysql restart

Ob der Zugriff funktioniert, testet ihr mit folgendem Befehl

telnet server_ip 3306

Alternativ könnt ihr auch die MySQL Workbench verwenden

User für den externen Zugriff anlegen

Ich empfehle einen speziellen User für den externen Zugriff einzurichten. Natürlich könnt ihr auch den root User oder jeden anderen von euch erstellten User nehmen. Persönlich nutze ich immer einen extra dafür erstellten. Dazu öffnen wir eine Verbindung zu unserem MySQL Server

mysql -u -root -p

Und erstellen den User, der hier mal Klaus genannt wird

create user 'klaus'@'%';

Jetzt haben wir den User Klaus mit dem Recht auf externen Zugriff angelegt.
Wollt ihr einen existierenden User bearbeiten hilft euch

use mysql;
update user set host='%' where user='euer_benutzer';
update db set host='%' where user='euer_benutzer';

Das gibt zum einen dem User euer_benutzer das Recht von extern auf die Datenbank zu verbinden, zum anderen werden alle Datenbanken des Benutzers auf das neu vergebene Recht aktualisiert.

MySQL Zugriff über iptables erlauben

Wenn ihr einen Schritt weiter gehen wollt könnt ihr auch einzelnen IP Adressen den Zugriff gewähren. Das funktioniert über iptables, was sowas wie eine eingebaute Firewall für Linux ist. Das paket ist eigentlich in allen Distributionen vorhanden und es muss somit nichts nachinstalliert werden.

Mit folgender Regel erlaubt ihr den Zugriff auf euer System über den Port 3306 von den Adressen 10.10.11.1 ,192.168.100.1 und localhost. Für alle anderen wird der Zugriff somit gesperrt

iptables -A INPUT -i lo -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -s 10.10.11.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -s 192.168.100.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j REJECT --reject-with icmp-port-unreachable

Das wars. Immer schön ans Updaten des Systems denken, dann kann eigentlich auch nichts passieren.

Hinterlasse einen Kommentar

Benachrichtige mich zu:
avatar
wpDiscuz