Ich teste derzeit einige Konfigurationen mit vagrant (virtuelle Box), um 2 Server (derzeit VM) über einen SSH-Tunnel miteinander zu verbinden. Das Ziel ist es, meine Web-App sicher mit der Datenbank zu verbinden.
Das Problem ist, dass meine Abfragen beim Abfragen der Datenbank über einen SSH-Tunnel 5 bis 80 Mal langsamer sind als wenn ich keinen Tunnel verwende. Hier ist der Befehl, den ich benutze:
ssh -N -L 3306:127.0.0.1:3306 [email protected]
Nach dem, was ich gelesen habe, sollte der Overhead nicht so hoch sein, deshalb habe ich ein paar Dinge versucht, um die Übertragungen zu beschleunigen. Ich finde heraus, dass, wenn ich die -N
Option entferne , die Abfragen so schnell sind, als ob ich keinen Tunnel benutze, aber ich werde im Terminal als 'sshuser' angemeldet (und das Hinzufügen eines &
am Ende des Befehls seltsam) Dinge ...).
Da ich das weiß, habe ich ein paar Fragen:
Sind meine Daten noch verschlüsselt, wenn ich die
-N
Option entferne ?Wenn ja, was kann ich tun, um die Leistung aufrechtzuerhalten, ohne in der Konsole als "sshuser" protokolliert zu werden?
Gibt es Optionen, mit denen ich die Verschlüsselung beschleunigen kann?
Vielen Dank im Voraus für Ihr Licht.
quelle
Antworten:
Der SSH-Tunnel ist als dauerhafte Lösung keine wirklich gute Idee. SSH basiert auf TCP. Die meisten Dinge, die Sie in SSH tunneln können, basieren auf TCP (einschließlich MySQL). Das Tunneln von TCP über TCP kann Auswirkungen auf die Leistung haben. Weil Ihr System versucht, das Backoff und dergleichen auf beiden Verbindungen gleichzeitig zu handhaben.
Wenn Sie eine sichere dauerhafte Verbindung zwischen zwei Hosts im selben Netzwerk wünschen, sollten Sie mit ziemlicher Sicherheit besser untersuchen, was zum Einrichten von IPSEC erforderlich ist. Oder wenn IPSEC für Sie nicht funktioniert, verwenden Sie ein VPN-Setup, das nicht über TCP transportiert wird.
In Bezug auf die Leistung Ihres SSH-Tunnels würde ich mir die von Ihnen verwendeten Chiffren ansehen. Einige sind schneller als andere. Vielleicht können Sie eine schnellere / schwächere Chiffre akzeptieren. Möglicherweise möchten Sie fast überprüfen, ob die Komprimierung deaktiviert ist. Wenn Sie sich auf einer schnellen Verbindung befinden, gibt es wirklich keinen Wert zum Komprimieren, aber es kann zu einer zusätzlichen Latenz für die Komprimierung / Dekomprimierung kommen. Wenn Sie nach dem Ändern immer noch keine Verbesserungen erhalten, möchten Sie wahrscheinlich tcpdump / wireshark auslösen und sehen, ob Sie sehen können, woher die Verzögerungen kommen.
quelle
Die
-N
Option verhindert lediglich, dass SSH einen Remote-Befehl ausführt, nicht die Verschlüsselung. Ihr Tunnel wird trotzdem verschlüsselt.Wenn Sie verwenden
-N
, erstellt ssh nur den Tunnel, nicht die Shell und alle Umgebungsvariablen auf der anderen Seite. Es ist viel schneller.Ich glaube nicht, dass das Hinzufügen eines SSH-Tunnels zu Ihrem Setup Ihre Sicherheit erhöht, sondern sogar drastisch verringert.
Wenn Sie Ihre Webanwendung direkt mit der Datenbank verbinden, verfügt jeder potenzielle Angreifer nur über die Anmeldeinformationen, die Ihre Anwendung verwendet. Wenn Sie einen Tunnel erstellen, kann der Angreifer den Tunnel möglicherweise ausnutzen, um Zugriff auf den Datenbankhost zu erhalten und alle Daten auf diesem Server zu gefährden.
In Ihrem Setup müssen Sie den Tunnel manuell starten und werden ihn wahrscheinlich automatisieren und die Anmeldeinformationen irgendwie speichern. Ein Angreifer kann die Anmeldeinformationen finden und verwenden, um Zugriff auf den Datenbankserver zu erhalten.
Wenn sich Ihr Datenbankserver und Ihr Anwendungsserver im selben Subnetz befinden, ist der Sicherheitsgewinn bei der Verwendung verschlüsselter SSH-Tunnel für den Zugriff auf die Daten vernachlässigbar. Es würde Sie nur vor einem Angreifer schützen, der sich bereits im Netzwerk befindet. In diesem Fall ist es nur eine Frage der Zeit, bis er Zugang zu allem hat.
quelle
-N
Option meinen Leistungsverlust verhindert?you will end up probably automating it, and store the credentials
: Sie erstellen ein Skript, um den Tunnel zu starten und die Anmeldeinformationen zu speichern. Später nutzt ein Angreifer die Web-App aus und erhält eine Shell, findet das Skript und die SSH-Anmeldeinformationen (oder stiehlt die privaten SSH-Schlüssel). Wir wissen, was als nächstes passiert.