Secure MySQL Connections mit PHP
TS
- datenbank
- php
Hallo und guten Morgen,
hat von Euch schon mal jemand mit Secure MySQL-Connections und PHP gearbeitet?
http://dev.mysql.com/doc/refman/5.5/en/secure-connections.html
http://php.net/manual/de/mysqli.ssl-set.php
Ich hab da leider noch keine Plan, was ich genau in welcher Reiehnfolge machen muss, damit ich die sichere Verbindung etablieren kann und nachher kein Zugang mehr über MySQL-Port (Ausnahme ggf. Localhost) ohne SSL möglich ist.
Grüße
TS
Tach,
Ich hab da leider noch keine Plan, was ich genau in welcher Reiehnfolge machen muss, damit ich die sichere Verbindung etablieren kann und nachher kein Zugang mehr über MySQL-Port (Ausnahme ggf. Localhost) ohne SSL möglich ist.
Key erzeugen, Zertifikat erzeugen, TLS auf Server einschalten, testen, Clients umstellen, TLS-freie Verbindungen auf Server ausschalten (bei mysql via GRANT)
mfg
Woodfighter
Hallo Woodfighter,
Ich hab da leider noch keine Plan, was ich genau in welcher Reiehnfolge machen muss, damit ich die sichere Verbindung etablieren kann und nachher kein Zugang mehr über MySQL-Port (Ausnahme ggf. Localhost) ohne SSL möglich ist.
Key erzeugen, Zertifikat erzeugen, TLS auf Server einschalten, testen, Clients umstellen, TLS-freie Verbindungen auf Server ausschalten (bei mysql via GRANT)
Hört sich schon mal ganz logisch an.
Wie stelle ich denn fest, ob mein mysql passend kompiliert wurde, also mit TLS-Unterstützung? Bei PHP sind die passenden Client-Funktionen vorhanden.
Grüße
TS
Tach,
Wie stelle ich denn fest, ob mein mysql passend kompiliert wurde, also mit TLS-Unterstützung?
https://dev.mysql.com/doc/refman/5.5/en/building-with-secure-connection-support.html
mfg
Woodfighter
Hallo und guten Tag,
Wie stelle ich denn fest, ob mein mysql passend kompiliert wurde, also mit TLS-Unterstützung?
https://dev.mysql.com/doc/refman/5.5/en/building-with-secure-connection-support.html
So, die Verbindungen
habe ich jetzt hinbekommen. War doch etwas fummelig, bis ich mich durch die Keys und Certs und CAs und das SelfSigning und dann die Zuordnung, welche Files nun welchen Variablen in PHP ensprechen, durchgehangelt hatte. Hatte das vorher noch nicht gemacht.
Wie stelle ich nun fest, dass die Verbindung tatsächlich nur mit SSL/TLS zustande kommt?
Grüße
TS
Tach,
Wie stelle ich nun fest, dass die Verbindung tatsächlich nur mit SSL/TLS zustande kommt?
https://dev.mysql.com/doc/refman/5.7/en/server-status-variables.html#statvar_Ssl_cipher
mfg
Woodfighter
Hallo und guten Tag,
Wie stelle ich nun fest, dass die Verbindung tatsächlich nur mit SSL/TLS zustande kommt?
https://dev.mysql.com/doc/refman/5.7/en/server-status-variables.html#statvar_Ssl_cipher
Das ist leider nicht wirklich ergiebig. Ich hatte schon
show status like '%ssl%';
am Wickel. Da werde ich mich morgen wohl nochmal intensiver mit Whireshark auseinandersetzen und mir den tatsächlichen Traffic anschauen. Das sollte dann ja wohl verbindlich sein ;-)
Ich will nur möglichst sicher sein, dass es auch funktioniert. Sonst hätte der Aufriss ja nix genützt.
Grüße
TS
Tach,
Da werde ich mich morgen wohl nochmal intensiver mit Whireshark auseinandersetzen und mir den tatsächlichen Traffic anschauen. Das sollte dann ja wohl verbindlich sein ;-)
du musst den libs eh trauen, da klingt das nur nach übermäßigem Aufwand.
mfg
Woodfighter
Hallo und guten Abend,
Da werde ich mich morgen wohl nochmal intensiver mit Whireshark auseinandersetzen und mir den tatsächlichen Traffic anschauen. Das sollte dann ja wohl verbindlich sein ;-)
du musst den libs eh trauen, da klingt das nur nach übermäßigem Aufwand.
Ja, aber man muss nicht alles glauben, was versprochen wird. Außrdem ist's nochmal eine gute Übung.
Jetzt habe ich noch ein Problem:
Ich bekomme kein fail2ban-Filter zum Laufen für MySQL. Dabei sah das sooo einfach aus. Eine Logdatei für Loginerror habe ich eingerichtet und die wird auch fleißig gefüllt von Chinesen und anderen Spinnern.
Aber mein Filter wird nicht berücksichtigt. Ich dachte eigentlich, in jail.conf und in filter.d alles richtig eingetragen zu haben. Ist aber wohl doch nicht so :-(
Beim Starten wird auch ins fail2ban.log eingetragen, dass die Filter gestartet wurden. SSH-Filter funktioniert einwandfrei.
Grüße
TS
Hallo und guten Abend,
Jetzt habe ich noch ein Problem:
Ich bekomme kein fail2ban-Filter zum Laufen für MySQL. Dabei sah das sooo einfach aus. Eine Logdatei für Loginerror habe ich eingerichtet und die wird auch fleißig gefüllt von Chinesen und anderen Spinnern.Aber mein Filter wird nicht berücksichtigt. Ich dachte eigentlich, in jail.conf und in filter.d alles richtig eingetragen zu haben. Ist aber wohl doch nicht so :-(
Beim Starten wird auch ins fail2ban.log eingetragen, dass die Filter gestartet wurden. SSH-Filter funktioniert einwandfrei.
Es liegt wohl am Datumsformat.
Found a match for '160419 21:20:03 [Warning] Access denied for user 'xschmieder'@'p5DC3F5C6.dip0.t-ipconnect.de' (using password: YES)
' but no valid date/time found for '160419 21:20:03 [Warning] Access denied for user 'xschmieder'@'p5DC3F5C6.dip0.t-ipconnect.de' (using password: YES)
'. Please contact the author in order to get support for this format
Aber nun weiß ich nicht, wie ich das in /usr/share/fail2ban/server/datedetector.py (oder wo sonst) einpflegen muss, damit es erkannt wird.
Ich hab's jetzt einfach mal mit etwas Mut in das Python-File reingekippt und siehe da: es funktioniert freu
Die Anleitung, die ich gefunden hatte, strotzte zwar noch von Fehlern, aber die waren zum Glück offensichtlich :-|
Klappt also nun, wie erwünscht.
Grüße
TS
Zu erst die benötigten Schlüssel-Dateien erzeugen und den MySQL-Server konfigurieren, sodann diesen anweisen die Konfiguration neu zu laden:
http://dev.mysql.com/doc/refman/5.5/en/mysql-options.html
Dann diese Dateien soweit nötig auf den Client übertragen und benutzen:
http://php.net/manual/de/mysqli.ssl-set.php
Hallo und guten Tag,
Zu erst die benötigten Schlüssel-Dateien erzeugen und den MySQL-Server konfigurieren, sodann diesen anweisen die Konfiguration neu zu laden:
http://dev.mysql.com/doc/refman/5.5/en/mysql-options.html
Dann diese Dateien soweit nötig auf den Client übertragen und benutzen:
http://php.net/manual/de/mysqli.ssl-set.php
So schlau war ich auch schon vorher.
Aber da da scheinbar nur Einer vom Anderen abschreibt, haben alle Beschreibungen dieselben Lücken. Wenn man dann am Ende weiß, wie es geht, sieht man wohl auch die Erklärungslücken nicht mehr. Umso wichtiger, sich seine eigenen Fragen und die Antworten dazu aufzuschreiben ;-)
Grüße
TS