
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.xx
hö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:3128
zu 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 -C
Parameter 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.