Wie kann man einen SSH-Tunnel einrichten, um MITM-Angriffe zu vermeiden?

Wie kann man einen SSH-Tunnel einrichten, um MITM-Angriffe zu vermeiden?

Angenommen, ich habe einen Computer in einem typischen Heimrouter (aber sagen wir, es ist kein Zugriff über Firewall/Portweiterleitung auf den Router möglich). Seine interne IP kann 192.168.1.81 sein. In diesem LAN befindet sich ein Angreifercomputer mit der IP 192.168.1.85, der einen typischen ARP-Spoofing-MITM-Angriff auf 192.168.1.81 durchführen möchte (sagen wir, er möchte etwas wie urlsnarf ausführen, um nach besuchten Websites zu schnüffeln). Der Computer 192.168.1.81 möchte jede Form von MITM-Angriffen verhindern und beim Surfen im Internet mit Chrome sicher bleiben. Er hat einen Server mit SSH-Zugriff, den er zum Verschlüsseln seines Surfverhaltens verwenden möchte, damit der Angreifer es nicht mit einem MITM-Angriff ausspähen kann. Wie kann ich (der Benutzer, der SSH-Tunneling verwenden möchte, um sicher zu bleiben) SSH-Tunneling auf meinem Server (mit der öffentlichen IP 162.xx.xxx.xx) verwenden, um den potenziellen MITM-Angriff zu verhindern? Dies ist für ein Wissenschaftsmesseprojekt. Welche (falls überhaupt) Einstellungen müsste ich auf meinem Server vornehmen (ich habe vollen Root-Zugriff)? Mein SSH-Port ist anders als die Norm, also verwenden Sie bitte den SSH-Port 25512 als Referenz. Ich habe auch Port 4567 in der Firewall für den Server geöffnet, also verwenden Sie diesen Port bitte ebenfalls als Referenz. Verwenden Sie bitte 72.xxx.xx.xxx als öffentliche IP für das Heimnetzwerk. Fügen Sie bitte alle erforderlichen Befehle hinzu. Lassen Sie mich wissen, wenn ich es klarer ausdrücken muss. Vielen Dank an alle, die helfen können!

Antwort1

Am einfachsten geht das, indem Sie auf Ihrem Remote-Server einen Proxy (z. B. Squid) ausführen und ihn nur auf der lokalen Schnittstelle lauschen lassen 127.0.0.1(da Sie keinen Proxy für das Internet öffnen möchten).

Anschließend greifen Sie per SSH auf den Remote-Server zu und erstellen eine TCP-Weiterleitung zur lokalen Proxy-Schnittstelle auf dem Remote-Server.

Nehmen wir beispielsweise an, Ihr Proxy auf dem Remote-Server 162.xx.xx.xxhört auf tcp 127.0.0.1:3128. Jetzt können Sie mit diesem Befehl per SSH eine Verbindung zu ihm herstellen:

ssh -p 25512 -L 3128:127.0.0.1:3128 -C 162.xx.xx.xx

Dadurch wird ein Tunnel von Ihrem Client 127.0.0.1:3128zu den Remote-Hosts geöffnet 127.0.0.1:3128. Anschließend können Sie Ihren Browser auf dem Client einfach so einstellen, dass er den Proxy verwendet 127.0.0.1:3128, der dann per SSH zum Remote-Host getunnelt und dort an den Proxy übergeben wird.

Der -CParameter ermöglicht die Komprimierung und soll Ihr Surferlebnis hoffentlich etwas schneller machen, da weniger Daten übertragen werden müssen.

Dies sind die relevanten Teile von man 1 ssh:

 -L [bind_address:]port:host:hostport
         Specifies that the given port on the local (client) host is to be forwarded to 
         the given host and port on the remote side.  This works by allocating a socket 
         to listen to port on the local side, optionally bound to the specified 
         bind_address.  Whenever a connection is made to this port, the connection is 
         forwarded over the secure channel, and a connection is made to host port 
         hostport from the remote machine.  Port forwardings can also be specified in 
         the configuration file.  IPv6 addresses can be specified by enclosing the 
         address in square brackets.  Only the superuser can forward privileged ports. 
         By default, the local port is bound in accordance with the GatewayPorts 
         setting.  However, an explicit bind_address may be used to bind the connection 
         to a specific address.  The bind_address of “localhost” indicates that the 
         listening port be bound for local use only, while an empty address or ‘*’ 
         indicates that the port should be available from all interfaces.

 -C      Requests compression of all data (including stdin, stdout, stderr, and data for
         forwarded X11 and TCP connections).  The compression algorithm is the same used
         by gzip(1), and the “level” can be controlled by the CompressionLevel option 
         for protocol version 1.  Compression is desirable on modem lines and other slow 
         connections, but will only slow down things on fast networks.  The default 
         value can be set on a host-by-host basis in the configuration files; see the 
         Compression option.

 -p port
         Port to connect to on the remote host.  This can be specified on a per-host 
         basis in the configuration file.

verwandte Informationen