Sicherheit von MySQL - PORT 3306
andreas
- datenbank
0 Thomas0 Henryk Plötz
Hallo!
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?
Grüsse
Anreas
Hallo
Wenn der Port für das Internet offen ist kannst du zum Beispiel mit dem MySQL-Client MySQLGUI auf die DB zugreifen, brauchst jedoch Username und Passwort. Wenn dann jemand als Root reinkommt kann er dir die ganze DB löschen! Desshalb stellst du den DB- und den Webserver hinter die Firewall. Die Firewall macht Port 3306 zu, Port 80 für den Webserver bleibt offen. Hinter der Firewall (zum Beispiel in deinem Intranet) bleibt der Port 3306 jedoch auch offen. Wenn nun jemand eine DB-Abfrage startet (übers Web), fragt der Webserver die DB hinter der Firewall ab und gibt die Daten über Port 80 zurück. Port 3306 wird also nur hinter der Firewall benötigt und der User bekommt gar nichts davon mit.
Ob man bei offenem 3306er mehr als "nur" das mit MySQL übliche machen kann weiss ich nicht, wenn jedoch Sicherheitslücken in MySQL exisitern wäre es durchaus denkbar.
Generell stellt jeder offene Port eine Angriffsfläche dar. Man sollte desshalb so weinig wie möglich offen halten.
Mit freundlichen Grüssen
Thomas
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