externer Zugriff auf Datenbank

externer Zugriff auf Datenbank verboten

Aus Sicherheitsgründen wird standardmäßig nur am localhost gelauscht. Dadurch werden andere Anfragen komplett ignoriert.

In einigen Fällen kann aber der externe Zugriff notwendig sein, z.B. wenn zusätzlich zur Webanwendung, ein Programm unter Windows Zugriff auf die Datenbank benötigt.

Die Auslagerung der Administration einer Webanwendung auf den lokalen PC kann durchaus für mehr Sicherheit sorgen!

Vorsicht! Bevor die Datenbank extern verfügbar gemacht wird, unbedingt auf sichere Passwörter prüfen und nur ausgewählten DB-Usern den externen Zugriff erlauben!

Plesk

Plesk - Zugriff auf DB einstellen
Plesk - Zugriff auf DB einstellen

In Plesk kann in den Einstellungen zur Datenbank vorgegeben werden, ob der Zugriff über bestimmte IPs, extern oder nur lokal erlaubt ist. Zusätzlich dazu kann jedem User der externe Zugriff erlaubt bzw. eingescränkt werden.

Seit der Umstellung auf das aktuelle Betriebssystem mit Plesk 17 funktioniert der Zugriff extern nicht mehr, obwohl in Plesk die richtigen Einstellungen gemacht wurden.

Laut Auskunft des Supports ist der MySQL von außen nicht erreichbar.

Wie prüfe ich, ob MySQL extern erreichbar ist?

Das Tool nmap wäre eine Möglichkeit, allerdings streiten sich die Geister, ob nmap ein Hackertool ist oder nicht.

Es gibt nämlich ein Gesetz, welches die Entwicklung und Verwendung von Hackertools verbietet.

Für einen sicherheitsbewußten Webadministrator ist aber gerade der Port-Scan zur Kontrolle, ob nicht unbeabsichtigt Ports freigegeben wurden, bzw. durch Trojaner und Viren geöffnet wurden, eine sinnvolle Maßnahme.

Es geht aber auch über Putty

Mit dem Befehl:

sudo netstat -tulpen

kann in der Console geprüft werden, wie und ob MySQL lauscht.

Auszug - Abrage netstat
Auszug - Abrage netstat

Alle Einträge, die mit 127. beginnen, lauschen nur am localhost. MySQL gehört hier auch dazu!

Anpassung in der Datei: my.cnf (etc/mysql)

#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
# 
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

#
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
[mysqld]
sql_mode=ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# Zugriff nur Lokal ueber localhost
#bind-address = ::ffff:127.0.0.1

# externer Zugriff moeglich
bind-address = ::ffff:0.0.0.0

local-infile=0

Diese Lösung birgt allerdings auch Gefahren, sichere Passwörter und die regelmäßige Kontrolle der Logs sind Pflicht. Alternativ wäre auch ein Zugriff über SSH möglich oder die Beschränkung der Zugriffe auf ausgewählte IP-Adressen.

Zusätzlich kann der offene Port durch fail2ban abgesichert werden. Leider ist in Plesk 17 standardmäßig kein JAIL-Filter für mysql enthalten.

^