Kapitel 5: MySQL-Datenbankadministration 183
− Benutzer der MySQL-C-API:
• Sehen Sie sich den mysql_escape_string()-API-Aufruf an.
− Benutzer von MySQL++:
• Sehen Sie sich die escape- und quote-Modifier f¨ur Query-Streams an.
− Benutzer der Perl-DBI:
• Sehen Sie sich die quote()-Methode an oder benutzen Sie Platzhalter.
− Benutzer von Java-JDBC:
• Benutzen Sie ein PreparedStatement-Objekt und Platzhalter.
•
¨
Ubermitteln Sie keine Klartextdaten (unverschl¨usselte Daten) ¨uber das Internet. Diese
Daten sind f¨ur jeden zug¨anglich, der Zeit und M¨oglichkeit hat, sie abzuh¨oren und sie f¨ur
die eigenen Zwecke zu benutzen. Benutzen Sie statt dessen ein verschl¨usseltes Protokoll
wie SSL oder SSH. MySQL unterst¨utzt ab Version 4.0.0 interne SSL-Verbindungen.
SSH-Port-Forwarding kann benutzt werden, um einen verschl¨usselten (und komprim-
ierten) Kommunikationstunnel zu erzeugen.
• Lernen Sie die Benutzung der tcpdump- und strings-Utilities. In den meisten F¨allen
k¨onnen Sie mit einem Befehl wie dem folgenden feststellen, ob MySQL-Datenstr¨ome
verschl¨usselt sind oder nicht:
shell> tcpdump -l -i eth0 -w - src or dst port 3306 | strings
(Das funktioniert unter Linux und sollte mit kleineren
¨
Anderungen auf anderen Sys-
temen funktionieren.) Achtung: Wenn Sie keine Daten sehen, heißt das nicht immer,
dass sie verschl¨usselt sind. Wenn Sie hohe Sicherheit ben¨otigen, sollten Sie sich mit
einem Sicherheitsexperten in Verbindung setzen.
5.2.2 Wie Sie MySQL gegen Cracker sicher machen
Wenn Sie sich mit einem MySQL-Server verbinden, sollten Sie normalerweise ein Passwort
benutzen. Das Passwort wird nicht als Klartext ¨uber die Verbindung ¨ubermittelt. Allerdings
ist der Verschl¨usselungsalgorithmus nicht sehr stark, so dass ein cleverer Angreifer mit
einiger M¨uhe das Passwort knacken kann, wenn er in der Lage ist, den Verkehr zwischen
Client und Server abzuh¨oren. Wenn die Verbindung zwischen Client und Server ¨uber ein
nicht vertrauensw¨urdiges Netzwerk geht, sollten Sie einen SSH-Tunnel benutzen, um die
Kommunikation zu verschl¨usseln.
Jede sonstige Information wird als Klartext ¨ubermittelt, die von jedem gelesen werden kann,
der in der Lage ist, die Verbindung abzuh¨oren. Wenn Sie das beunruhigt, k¨onnen Sie das
komprimierte Protokoll benutzen (ab MySQL-Version 3.22), um so etwas zu erschweren.
Um die Dinge noch sicherer zu machen, sollten Sie ssh benutzen. Sie finden einen Open-
Source- ssh-Client auf http://www.openssh.org und einen kommerziellen ssh-Client auf
http://www.ssh.com. Mit diesen erhalten Sie eine verschl¨usselte TCP/IP-Verbindung
zwischen einem MySQL-Server und einem MySQL-Client.
Um ein MySQL-System sicher zu machen, sollten Sie auf jeden Fall folgende Vorschl¨age in
Betracht ziehen:
• Benutzen Sie Passw¨orter f¨ur alle MySQL-Benutzer. Bedenken Sie, dass sich jeder be-
liebige als andere Person einloggen kann, und zwar so einfach wie mysql -u anderer_
benutzer db_name, wenn anderer_benutzer kein Passwort hat. Es ist ein normales
Comentarios a estos manuales