 |
 |
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.
|
 |