|
|
Sicherheitsrichtlinien zum Betrieb von Mysql
Modifizierter
Auszug aus den MySQl Handbuch
Wenn Sie MySQL laufen lassen, sollten Sie möglichst immer folgende
Richtlinien beachten:
- GEBEN SIE NIEMALS JEMANDEM AUSSER DEM MySQL-ROOT-BENUTZER ZUGRIFF AUF DIE
user -TABELLE IN DER mysql -DATENBANK! Das verschlüsselte
Passwort ist das echte Passwort in MySQL.
- 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!
- Benutzen Sie den Befehl
SHOW GRANTS und prüfen Sie nach,
wer Zugriff auf was hat.
- Keine Klartext-Passwörter in Ihrer Datenbank.
Benutzen Sie statt dessen MD5() oder eine andere Einweg-Hash-Funktion.
- Benutzen Sie keine Passwörter aus Lexika
- Investieren Sie in eine Firewall.
- Trauen Sie keinen Daten, die von Benutzern eingegeben werden. Sie können
versuchen, Ihren Code auszutricksen, indem Sie spezielle oder escapete Zeichenfolgen
in Web-Formulare, URLs oder sonstige Applikationen, die Sie hergestellt haben,
eingeben.
Stellen Sie sicher, dass Ihre Applikation sicher bleibt, wenn ein Benutzer
etwas wie ``; DROP DATABASE mysql; '' eingibt. Das ist ein extremes
Beispiel, aber große Sicherheitslücken und Datenverlust können eintreten,
wenn ein Hacker ähnliche Techniken benutzt und Sie nicht darauf vorbereitet
sind.
Denken Sie auch daran, numerische Daten zu überprüfen.
Die einfachste Art, sich vor dieser Art von Angriffen zu schützen, ist, Apostrophe
um numerische Konstanten herum zu benutzen: SELECT * FROM tabelle WHERE
ID='234' statt SELECT * FROM tabelle WHERE ID=234 .
- Checkliste:
- Alle Web-Applikationen:
- Versuchen Sie, `'' und `"' in alle Ihr
Web-Formulare einzugeben. Wenn Sie irgend welche MySQL-Fehler erhalten,
untersuchen Sie das Problem unverzüglich!
- Versuchen Sie, jedwede dynamischen URLs zu ändern, indem Sie
%22
(`"'), %23 (`#') und %27
(`'') zu den URLs hinzufügen.
- Versuchen Sie, Datentypen in dynamischen URLs von numerischen zu
Zeichentypen zu ändern, die Zeichen aus den vorherigen Beispielen
enthalten.
- Versuchen Sie Buchstaben, Leerzeichen und Sonderzeichen anstelle
von Zahlen in numerische Felder einzugeben.
- Überprüfen Sie Datengrößen, bevor Sie sie an MySQL übergeben.
- Überlegen Sie, ob es sinnvoll ist, dass sich Ihre Applikation mit
einem anderen Benutzernamen mit der Datenbank verbindet als mit dem,
den Sie für Verwaltungszwecke benutzen. Geben Sie Applikationen nicht
mehr Zugriffsberechtigungen als sie brauchen.
- Benutzer von PHP:
- Sehen Sie sich die
addslashes() -Funktion an. Ab PHP
4.0.3 ist eine mysql_escape_string() -Funktion verfügbar,
die auf der Funktion mit demselben Namen in der MySQL-C-API basiert.
- Übermitteln Sie keine Klartextdaten (unverschlüsselte Daten) über das Internet.
Diese Daten sind für jeden zugänglich, der Zeit und Möglichkeit hat, sie abzuhören
und sie für die eigenen Zwecke zu benutzen. Benutzen Sie statt dessen ein
verschlüsseltes Protokoll wie SSL oder SSH.
Wie Sie MySQL gegen Cracker sicher machen
Um ein MySQL-System sicher zu machen, sollten Sie auf jeden Fall folgende Vorschläge
in Betracht ziehen:
- Benutzen Sie Passwörter für alle MySQL-Benutzer.
- Lassen Sie den MySQL-Daemon nicht als Unix-
root -Benutzer laufen.
- Unterstützen Sie keine Symlinks auf Tabellen
-
Überprüfen Sie, dass der Unix-Benutzer, der
mysqld laufen läßt, der
einzige Benutzer mit Lese-/Schreibzugriffen auf die Datenbankverzeichnisse
ist.
- Geben Sie nicht allen Benutzern das process-Zugriffsrecht
- Geben Sie nicht allen Benutzern das file-Zugriffsrecht
-
Wenn Sie Ihrem DNS nicht trauen, sollten Sie IP-Nummern anstelle von
Hostnamen in den Berechtigungstabellen verwenden. In jedem Fall sollten Sie
sehr vorsichtig damit sein, Einträge in Berechtigungstabellen vorzunehmen,
die Hostnamen mit Platzhaltern (Wildcards) verwenden!
-
Wenn Sie die Anzahl der Verbindungen für einen einzelnen Benutzer
beschränken wollen, können Sie das tun, indem Sie die
max_user_Verbindungen -Variable in mysqld setzen.
|
|