Portweiterleitung mit Proxy-IP

Portweiterleitung mit Proxy-IP

Ich versuche, mit meiner öffentlichen IP per SSH remote auf meinen Computer zuzugreifen.

Normalerweise würde ich die Portweiterleitung auf meinem Router zulassen und dann Folgendes tun: ssh ubuntu@myPublicIpAber mein ISP verwendet CGNAT, sodass ich mit meiner zugewiesenen öffentlichen IP-Adresse keine Portweiterleitung durchführen kann. Also habe ich tinyproxy auf meiner AWS-Instanz verwendet und meinen lokalen Computer mit der Proxy-IP-Adresse verbunden.

Das bedeutet, dass jede Anfrage, die ich über meinen lokalen Rechner mache, über die Proxy-IP läuft. Jetzt wird meine öffentliche IP durch die Proxy-IP ersetzt. Meine Frage ist, wie ich die Portweiterleitung auf meinem lokalen Linux-Rechner einrichten kann, auf dem der Proxy aktiviert ist, sodass ich mich per SSH wie folgt remote mit dem Rechner verbinden kann: ssh ubuntu@myProxyIp.

Antwort1

Um eine Maschine hinter NAT/Firewall/was auch immer zu erreichen, brauchen Sie nichts weiter, außer dass diese Maschine eine ausgehende Verbindung zum öffentlichen Netzwerk herstellen und per SSH auf eine Instanz im öffentlichen Netzwerk zugreifen kann.

Das Setup auf der Maschine hinter NAT soll sicherstellen, dass eine ausgehende SSH-Verbindung mit aktivierter umgekehrter Portweiterleitung hergestellt wird:

ssh -R:60000:127.0.0.1:22 [email protected]

wobei [email protected]das Konto und die Adresse der Instanz im öffentlichen Netzwerk sind, auf die Sie Zugriff haben. Dieser Befehl bedeutet im Wesentlichen Folgendes: Stellen Sie eine SSH-Verbindung zum friendly.domain.tldverwendenden Benutzer joeher, um diesen zu authentifizieren und unseren lokalen TCP-Port 22 am Remote-Ende als TCP-Port 60000 verfügbar zu machen. Wenn die SSH-Serversoftware aktuell genug ist (und die Konfiguration es zulässt), können Sie Ihren lokalen weitergeleiteten Port auch direkt einer internetseitigen IP-Adresse zuordnen friendly.domain.tld, aber ich gehe hier davon aus, dass eine solche Konfiguration nicht zulässig ist.

Nachdem unsere Maschine nun die ausgehende Verbindung hergestellt hat, müssen wir sie nur noch friendly.domain.tldals Proxy in unserer SSH-Verbindung verwenden, um von überall her eine Verbindung herzustellen. Dazu müssen Sie zwei Terminalfenster öffnen: Das erste wird verwendet, um eine Verbindung mit der friendly.domain.tldInstanz herzustellen, um den freigegebenen TCP-Port 60000 an Ihre lokale Maschine weiterzuleiten:

ssh -L60000:127.0.0.1:60000 [email protected]

Dadurch wird der TCP-Port 60000 auf der Loopback-Schnittstelle friendly.domain.tldder Loopback-Schnittstelle der Instanz zugeordnet, auf der Sie den SSH-Befehl ausführen.

Von diesem Punkt an können Sie eine Verbindung zu Ihrem Computer hinter NAT herstellen, indem Sie einfach Folgendes verwenden:

ssh -p60000 my_account@localhost

wo my_accountsich auf Ihrem Computer hinter NAT ein Konto befindet.

Insgesamt sind drei SSH-Tunnel im Spiel:

machine_behind_nat <=1=> friendly_instance <=2=> your_laptop
            <=================3==================>

Der Grund für eine solche Konfiguration besteht darin, sicherzustellen, dass Ihre Kommunikation mit der Maschine hinter NAT auch dann nicht beeinträchtigt wird, wenn in „friendly_instance“ eingebrochen wird (wir vertrauen der „friendly_instance“ nicht und erlauben ihr nicht, Bytes über ihre Loopback-Schnittstelle zu übertragen. Wir verwenden in unserem Tunnel Nr. 3, der über die Tunnel Nr. 1 und Nr. 2 verläuft, eine End-to-End-Verschlüsselung.

Ich deckte abdieses Setup in meinem BlogWenn Sie ein wenig Hintergrundwissen und andere Tricks wünschen, können Sie diese mit SSH erledigen.

Antwort2

Je nachdem, welche Ports Sie tatsächlich weiterleiten müssen, können Sie mit SSH eine dynamische umgekehrte Portweiterleitung einrichten.

Wenn Sie nur Port 22 als Proxy verwenden müssen:

ssh -R 22:0.0.0.0:2222 user@remote_server

Sie können dann auf Ihrem lokalen Computer eine SSH-Verbindung herstellen, indem Sie Folgendes tun:

ssh -p 2222 localuser@ProxyIP

Wenn Sie dynamisch weiterleiten möchten:

ssh -R 0.0.0.0:2222 user @remote_server

Sie können über Proxy-Ketten auf alles in Ihrem lokalen Netzwerk zugreifen. Achten Sie darauf, dass jeder, der Ihre Remote-IP und den Port für den SOCKS-Proxy kennt, auf Ihr lokales Netzwerk zugreifen kann. Möglicherweise möchten Sie eine Firewall implementieren, um den Zugriff einzuschränken.

Hier ist ein guter Artikel darüber:https://posts.specterops.io/offensive-security-guide-to-ssh-tunnels-and-proxies-b525cbd4d4c6

verwandte Informationen