Henryk Plötz: Sicherheit von MySQL - PORT 3306

Beitrag lesen

Moin

Ihr habt mal geschrieben, dass man per Firewall den MySQL Port "dicht machen" sollte. Jetzt habe ich nur mal die Frage - warum? Wenn man den Port hat, kann man dann von einem anderen Computer drauf zugreifen? Mit welchem Programm denn? Darüber kann man aber dann doch "nur" auf mySQL zugreifen, oder kann man da noch mehr?

Ja. Auf der einen Seite lässt der MySQL-Server nur Verbindungen zu, wenn Benutzername und Passwort und Ursprungshost stimmen. Doch a) kann man (zugegebenermaßen mit einigem Aufwand) die Ursprungs-Addresse vortäuschen und wenn du dann auch noch nette Sicherheitslücken in deinen Skripten hast (da sind auch einige Threads dazu in der Hauptdatei) kriegt man da vielleicht noch das Passwort und den Benutzernamen her. Auf der anderen Seite ist häufig (hmm, vielleicht auch nur zufällig auf allen System die ich kenne) ein default-Benutzer ohne Passwort und Hostbeschränkung eingetragen der zumindest zur Datenbank verbinden kann. Mit aktiver Datenbankverbindung kann man lustige Sachen machen, etwa den größten Teil der verfügbaren Rechenzeit aufessen und wenn du ganz blöd konfiguriert hast geht auch das INFILE-Zeugs zum lesen beliebiger Dateien auf der Festplatte.
Selbst wenn die Rechte nicht existieren können doofe Sachen passieren, ältere Versionen hatten etwa Bugs mit denen man beliebige Dateien als Datenbanken öffnen oder zumindest erstellen (und damit die Originaldatei überschreiben) konnte. Sowas kann theoretisch wieder passieren.

Selbst wenn alles dicht ist und nur der Port noch offen, können evt. blöde Sachen im Verlauf der Anmeldeprozedur passieren (v.a. wenn du noch reichlich ungetestete Versionen wie die neue 4er einsetzt) die zum DoS oder gar zu schlimmerem führen.

Daher: Port zumachen. Entweder mit deiner Firewall (bevorzugt) oder alternativ in dem die MySQL so konfigurierst dass es keine Verbindungen von einem anderen als dem lokalen Interface annimmt (müsste eigentlich gehen), was ausreichen sollte, wenn du keine Datenbankzugriffe quer durchs Internet ermöglichen möchtest. (Wäre eine blöde Idee, weil das Passwort relativ schwach verschlüsselt durch die Leitung geht).

Wenn du das doch machen möchtest, willst du unbedingt SSH-Portforwarding einsetzen um einen Tunnel zwischen deinem Firewallhost und dem anderen Ende zu bauen und den MySQL-Daemon anweisen nur Verbindungen aus diesen Tunnel zu aktzeptieren. Oder du baust gleicht ein VPN :-)

--
Henryk Plötz
Grüße aus Berlin