Kapitel 5: MySQL-Datenbankadministration 181
MySQL benutzt ein Sicherheitssystem, das auf Zugriffssteuerungslisten (Access Control
Lists, ACLs) f¨ur alle Verbindungen, Anfragen und sonstige Operationen basiert, die ein
Benutzer durchf¨uhren kann. Zus¨atzlich gibt es einige Unterst¨utzung f¨ur SSL-verschl¨usselte
Verbindungen zwischen MySQL-Clients und -Servern. Viele der hier geschilderten Konzepte
sind ¨uberhaupt nicht spezifisch f¨ur MySQL, sondern beziehen sich auf fast alle Applikatio-
nen.
Wenn Sie MySQL laufen lassen, sollten Sie m¨oglichst immer folgende Richtlinien beachten:
• GEBEN SIE NIEMALS JEMANDEM AUSSER DEM MySQL-ROOT-BENUTZER
ZUGRIFF AUF DIE user-TABELLE IN DER mysql-DATENBANK! Das
verschl¨usselte Passwort ist das echte Passwort in MySQL. Wenn Sie das in der the
user-Tabelle aufgef¨uhrte Passwort f¨ur einen gegebenen Benutzer kennen, k¨onnen Sie
sich leicht als dieser Benutzer einloggen, wenn Sie Zugriff auf den Host haben, der f¨ur
dieses Benutzerkonto aufgef¨uhrt ist.
• Lernen Sie das MySQL-Zugriffsberechtigungssystem. Die GRANT- und REVOKE-Befehle
werden benutzt, um den Zugriff auf MySQL zu steuern. Gew¨ahren Sie nicht mehr
Zugriffsrechte als notwendig. Gew¨ahren Sie niemals Zugriffsrechte f¨ur alle Hosts.
Checkliste:
− Probieren Sie mysql -u root. Wenn es Ihnen gelingt, sich erfolgreich mit dem
Server zu verbinden, ohne nach einem Passwort gefragt zu werden, haben Sie
ein Problem, denn jeder kann sich als MySQL-root-Benutzer mit dem Server
verbinden und hat volle Berechtigungen! Lesen Sie in diesem Fall noch einmal
die MySQL-Installationsanweisungen durch und achten Sie insbesondere auf den
Teil, der sich mit dem Setzen des root-Passworts besch¨aftigt.
− Benutzen Sie den Befehl SHOW GRANTS und pr¨ufen Sie nach, wer Zugriff auf was
hat. Entfernen Sie die Berechtigungen, die nicht notwendig sind, indem Sie den
REVOKE-Befehl benutzen.
• Halten Sie keine Klartext-Passw¨orter in Ihrer Datenbank. Wenn Ihr Computer kom-
promittiert wird, kann der Einbrecher die gesamte Liste von Passw¨ortern nehmen und
benutzen. Benutzen Sie statt dessen MD5() oder eine andere Einweg-Hash-Funktion.
• Benutzen Sie keine Passw¨orter aus Lexika. Es gibt spezielle Programme, um diese zu
knacken. Selbst Passw¨orter wie “xfish98” sind sehr schlecht. Viel besser ist “duag98”,
was dasselbe Wort “fish” enth¨alt, aber um eine Taste nach links auf einer QUERTZ-
Tastatur verschoben. Eine weitere Methode ist, etwas wie “Mhall” zu benutzen, was
die ersten Buchstaben des Satzes “Mary had a little lamb” enth¨alt. Das l¨aßt sich leicht
merken und eintippen, aber schwierig durch jemanden erraten, der es nicht kennt.
• Investieren Sie in eine Firewall. Diese sch¨utzt sie vor mindestens 50% aller Exploits in
jeglicher Software. Installieren Sie MySQL hinter einer Firewall oder in einer entmili-
tarisierten Zone (Demilitarized Zone, DMZ).
Checkliste:
− Versuchen Sie, Ihre Ports vom Internet aus zu scannen, indem Sie ein Werkzeug
wie nmap benutzen. MySQL benutzt vorgabem¨aßig Port 3306. Dieser Port sollte
von nicht vertrauensw¨urdigen Hosts aus unerreichbar sein. Eine weitere einfache
Methode, um zu ¨uberpr¨ufen, ob Ihr MySQL-Port offen ist oder nicht, ist, den
folgenden Befehl von einer entfernten Maschine aus zu benutzen, wobei server_
host der Hostname Ihres MySQL-Servers ist:
Comentarios a estos manuales