TS: Secure MySQL Connections mit 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

--
es wachse der Freifunk
https://harz.freifunk.net
  1. 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

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

      --
      es wachse der Freifunk
      https://harz.freifunk.net
      1. 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

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

          • MySQL-Datenbankserver <-> entfernter PHP-MySQL-Client
          • MySQL-Datenbankserver <-> Heidi-SQL

          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.

          Jetzt bleibt nur noch eine Frage:

          Wie stelle ich nun fest, dass die Verbindung tatsächlich nur mit SSL/TLS zustande kommt?

          Grüße
          TS

          --
          es wachse der Freifunk
          https://freifunk-oberharz.de
          1. 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

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

              --
              es wachse der Freifunk
              http://freifunk-oberharz.de
              1. 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

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

                  --
                  es wachse der Freifunk
                  http://freifunk-oberharz.de
                  1. 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

                    --
                    es wachse der Freifunk
                    http://freifunk-oberharz.de
  2. 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

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

      --
      es wachse der Freifunk
      https://harz.freifunk.net