Wir haben eine PHP-Anwendung, die eine Verbindung zu einem MySQL-Server herstellt, und wir möchten die Verbindungen zwischen den Web- und Anwendungsservern und der Datenbank sichern.
In Spitzenzeiten stellen die Webserver mehrere hundert gleichzeitige Verbindungen zur Datenbank her und führen viele kleine Lese- und Schreibvorgänge durch. Mir ist bewusst, dass dies nicht optimal ist, und ich arbeite daran, die Anzahl der parallelen Datenbankverbindungen zu verringern.
Wir haben derzeit keine dauerhaften Verbindungen zur Datenbank aktiviert, und obwohl wir dies in Zukunft beabsichtigen, möchte ich dies unabhängig davon implementieren.
In Bezug auf die Hardware - der MySQL-Server ist ziemlich umfangreich (16 Kerne), ebenso wie die Webserver. Sie sind dedizierte Server.
Meine Frage bezieht sich dann auf die performanteste Art und Weise, die Verbindungen zum Datenbankserver zu sichern und zu verschlüsseln.
Meine bisherigen Untersuchungen haben ergeben, dass der Hauptaufwand für die Leistung beim Einrichten der SSL-Verbindung liegt - sobald SSL verbunden ist, gibt es nur geringe Leistungseinbußen. Und hier ist, was ich über jede Methode zum Sichern der Verbindung habe:
- MySQL SSL-Zertifikate - funktionieren wie normales SSL. Kann Client-Zertifikate verwenden, um nicht autorisierte Verbindungen zu verhindern. Keine dauerhaften Verbindungen mit unserem bestehenden Setup. Immer noch muss MySQL einen offenen Port der Firewall überwachen.
- stunnel. Richten Sie einen Port-to-Port-SSL-Tunnel ein. Sie müssen MySQL nicht neu konfigurieren. Kann den normalen MySQL-Überwachungsport schließen, um böswillige MySQL-Verbindungsversuche zu verhindern. Unterstützt keine dauerhaften Verbindungen. Unbekannter Leistungstreffer.
- SSH-Tunneling. Erstellen Sie einen SSH-Tunnel zwischen dem Client und dem Server. Sie müssen MySQL nicht neu konfigurieren. Kann den normalen MySQL-Überwachungsport schließen, um böswillige MySQL-Verbindungsversuche zu verhindern. Unterstützt dauerhafte Verbindungen, die jedoch manchmal unterbrochen werden. Unbekannter Leistungstreffer.
Das ist so weit ich konnte. Ich bin mir der Grenzen von Benchmarks bewusst - meiner Erfahrung nach ist es sehr schwierig, den Verkehr in der realen Welt zu simulieren. Ich hatte gehofft, dass jemand einen Rat hat, der auf seinen eigenen Erfahrungen mit der Sicherung von MySQL basiert.
Vielen Dank
quelle
openssl speed
anbelangt, führen Sie die Verschlüsselungen aus und wählen Sie sie aus, die Ihren Anforderungen hinsichtlich des Schutzes vor Leistungseinbußen entsprechen.Antworten:
Ich würde mit dem SSH-Tunnel gehen und es mit
autossh
anstelle von tunssh
. Über die Leistung würde ich sagen, dass das SSH-Protokoll hochgradig anpassbar ist und Sie Ihre Verbindung bei Bedarf fein abstimmen können.Ich würde aber keinen merklichen Overhead erwarten, nachdem die Verbindung aufgebaut ist.
quelle
Wenn Sie sich die Benchmarks dieses Artikels ansehen (MySQL Performance Blog), sollten Sie die native SSL-Fähigkeit von MySQL wirklich vermeiden.
quelle