2012-06-25 9 views
7

Meine Benutzer benutzen MS Access und ODBC Connector um sich mit meiner entfernten MySQL Datenbank zu verbinden. Ich frage mich, wie sicher das ist, im Sinne der möglichen Weitergabe von Passwörtern an Dritte. Ist die mysql-Protokollauthentifizierung für Lauschangriffe oder sogar Man-in-the-Middle-Angriffe sicher? Ich wäre ziemlich glücklich mit der Sicherheit gegen Abhören. Beachten Sie, dass mein Anliegen nur Authentifizierung ist, ich bin nicht besorgt über die Offenlegung von Daten.Wie sicher ist die Authentifizierung im MySQL-Protokoll?

Bitte antworten Sie nicht, dass ich SSL verwenden sollte. Ich weiß, das wäre ideal, aber das Setup scheint nicht sehr einfach zu sein. Wie auch immer, ich würde gerne wissen, was das Sicherheitsniveau des einfachen MySQL-Protokolls ist.

Antwort

12

Was ist es, dass Sie "sicher abhören oder sogar Man-in-the-middle-Angriffe" sein möchten? Ihr Passwort oder Ihre Daten?

Der Titel Ihrer Frage bezieht sich speziell auf Authentifizierung. MySQL schützt Ihr Passwort vor Lauschangriffen (es wird kein Klartext gesendet, und die Verwendung eines Nonce verhindert Replay-Angriffe). Unter Berufung auf MySQL protocol internals:

4,1 MySQL und später

Denken Sie daran, dass mysql.user.Password speichert SHA1 (SHA1 (Passwort))

  • Der Server sendet eine zufällige Zeichenfolge (Scramble) an den Client
  • der Client berechnet:
    • stage1_hash = SHA1 (Passwort), das Passwort verwenden, das der Benutzer eingegeben hat .
    • token = SHA1 (scramble + SHA1 (stage1_hash)) XOR stage1_hash
  • der Client sendet das Token an den Server
  • der Server
    • stage1_hash‘= Token XOR SHA1 berechnet (scramble + mysql.user.Password)
  • der Server vergleicht SHA1 (stage1_hash ') und mysql.user.Password
  • Wenn sie ar Das gleiche, das Passwort ist in Ordnung.

(Hinweis SHA1 (A + B) die SHA1 der Verkettung von A mit B. ist)

Dieses Protokoll behebt den Fehler des alten, noch auf dem Draht noch mysql Snooping. user.Password reichen für eine erfolgreiche Verbindung aus. Aber wenn man sowohl mysql.user.Password als auch die abgefangenen Daten auf der Leitung hat, hat er genug Informationen zum Verbinden.

Authentifizierte Sitzungen werden jedoch im Klartext fortgesetzt: Ein Lauscher wird alle Abfragen und Ergebnisse sehen können; und ein MITM wäre in der Lage, Änderungen an demselben vorzunehmen.Wie in the manual angegeben:

Standardmäßig verwendet MySQL unverschlüsselte Verbindungen zwischen dem Client und dem Server. Dies bedeutet, dass jemand mit Zugriff auf das Netzwerk Ihren gesamten Datenverkehr überwachen und sich die gesendeten oder empfangenen Daten ansehen kann. Sie könnten sogar die Daten ändern, während sie sich zwischen Client und Server befinden.

Während Sie die Antwort nicht mögen, ist SSL das Werkzeug entwickelt, um sowohl Daten Abhören besiegen (wie sonst kann die Kommunikation verschlüsselt werden?) Und MITM-Angriffe (wie sonst kann jede Partei überprüfen, ob sein Peer Wer denkt es ist? In der Tat, wenn das mysql Client-Server-Protokoll diese Bedrohungen alleine besiegen würde, gäbe es keinen Grund, mysql über SSL zu verwenden (und es wäre daher unwahrscheinlich, dass es sich um eine unterstützte Konfiguration handelt).

+0

* Was meinst du mit "sicher zu abhören oder sogar man-in-the-middle-angriffe" *: wie du schon sagt, einfache mysql-protokoll ist nicht MITM sicher, meine meinung ist jetzt nur, wenn die authentifizierung ist sicher zu belauschen. Wenn jemand lauscht, kann er dann genug Informationen sammeln, um sich am mysql-Server zu authentifizieren? Es macht mir nichts aus, wenn er nur die Daten sieht ... Danke für deine Antwort! – TMS

+1

@Tomas: Nein, wie meine Antwort sagt, wird er nur eine verschlüsselte Form eines Passwort-Hashes sehen, der wegen der Verwendung einer Nonce nicht wiedergegeben werden kann. Wenn er jedoch in der Lage ist, Pakete zu manipulieren, könnte er die Sitzung entführen, um Befehle auszuführen, die ihm gefallen. – eggyal

+0

Entschuldigen Sie, ich habe nicht verstanden, was Sie mit "Nonce" gemeint haben. Ist es eine zufällige Zeichenfolge, die vom Server gesendet wird? – TMS

-3

Kurze Antwort: Ja, das Protokoll ist vor Abhören und MITM-Angriffen sicher.

Nur wenn der Angreifer einen Authentifizierungsversuch erschnüffelt AND Wenn der Angreifer den Inhalt von mysql.user kennt, kann er sich anschließend gegen den Server authentifizieren. Wenn Sie beispielsweise dasselbe Kennwort auf zwei verschiedenen mysql-Servern verwenden und der Angreifer Zugriff auf einen von ihnen erhält, kann er auch eine Verbindung zum zweiten Server herstellen.

+0

Sind Sie sicher, dass dieses Protokoll vor MITM sicher ist? Und ich verstehe nicht, was Sie mit dem zweiten Absatz gemeint haben. Natürlich, wenn der Angreifer das Passwort schnüffelt, kann er sich damit verbinden. – TMS

Verwandte Themen