[Frage] Dropbear Server to Client bzw. Reverse Tunnel erlauben. Option 'GatewayPorts' 'on'

R0cket

Mitglied
Mitglied seit
20 Sep 2009
Beiträge
458
Punkte für Reaktionen
8
Punkte
18
Hi,

ich habe festgestellt, dass dropbear nicht ohne weiteres reverse tunnels, oder besser gesagt, "Server to Client" port forwards erlaubt.

Laut Google kann man wohl durch die Option: "'GatewayPorts' 'on'" Dropbear dazu bringen auch reverse tunnel zuzulassen.

Nur wie/wo aktiviere ich diese Option? In der Webui eintragen funktionert nicht und die config Datei unter root/etc/default.dropbear kann man nicht bearbeiten.

Für Openssh habe ich leider kein platz mehr auf der Box.

Danke für die Hilfe!
 
"GatewayPorts" ist eine Option bei OpenWRT, nicht bei Freetz.

Du benötigst die Option
Code:
-a        Allow connections to forwarded ports from any host

Diese kannst Du in der WebGUI unter "Zusätzliche Kommandozeilen-Optionen (für Experten)" hinzufügen.
 
Dropbear nimmt den parameter -a an, aber Server 2 to client port forward wird rejected.
 
Kannst Du bitte mal genauer erklären, was genau Du machen möchtest? Was soll diese Option bewirken?
 
Ich will auf einen client, der hinter einer firewall ist zugreiffen. Ich kann duch die firewall durch eine ausgehende ssh Verbindung aufbauen lassen. Am ende will ich auf den remote desktop des clients hinter der firewall zugreiffen. Eigentlich genau das wozu ein reverse tunnel da ist.
 
Wie genau sehen dein Aufbau und der verwendetete SSH-Befehl aus?

Ich kann mit folgendem Befehl eine Remote-Desktop-Session auf einem Rechner hinter der FritzBox aufbauen. Und ich benötige dafür keine "-a"-Option.

Code:
ssh -L 3389:192.168.178.111:3389 fritzbox.dyndns.org

Aufbau:

PC (hier wird der SSH-Befehl aufgerufen) --- Router --- Internet --- FritzBox mit dropbear-Server --- PC mit RDP aktiv
 
Das ist ein localer Port Tunnel. Davon habe ich bereits mehrere problemlos am laufen.

Was ich erreichen will, ist der umgekehre Weg. VOn einem PC hinter der Fritzbox auf einen PC im Internet hinter einer Firewall mit dynamischer IP Zugreiffen. Durch die FIrewall komme ich nur auf dem umgekehretn Weg. Der PC hinter der Firewall muss einen tunnel zum SSH Server aufbaue und einen Reverse Tunnel erstellen.
 
Wie wäre es denn mal mit einem etwas konkreteren Beispiel?

Am Ende wird es nicht einmal richtig klar, ob "dropbear" auf der FRITZ!Box hier nun in der Rolle des SSH-Servers oder des SSH-Clients "gefragt" ist.

"GatewayPorts" ist jedenfalls sowohl eine Option für den OpenSSH-Server als auch für den -Client und eine "Prinzipskizze", wer hier von wo und mit welcher Software welchen Tunnel aufbauen soll, wäre sicherlich deutlich hilfreicher als
Eigentlich genau das wozu ein reverse tunnel da ist.
Daß der "dropbear" eben keine "ssh(d)_config" verwendet und auch nicht denselben Umfang an Kommandozeilen-Optionen unterstützt, wie eine OpenSSH-Implementierung, hast Du ja sicherlich inzwischen auch bemerkt ... #1 klang noch so, als wolltest Du irgendwo eine "config"-Datei verwenden, was der "dropbear" generell nicht unterstützt, der macht das alles über Optionen zur Build-Time oder über Kommandozeilen-Parameter.
 
Hier ist ein Schaubild:

Reverse_ssh_tunnel.jpg


Als Reverse Connection wird eine Verbindung zu einem anderen Computer bezeichnet, die dazu dient, eine Firewall zu umgehen. Dabei nutzt man die Eigenschaft der Firewall, dass diese zwar eingehende Verbindungen blockiert, nicht aber ausgehende.

Und das ist der Knackpunkt.Ich will auf den PC Hinter der Firewall zugreiffen. Die Firewall erlaubt aber nur ausgehende Verbindungen über Port 443.

Restriktionen:

1. Auf dem PC hinter der Firewall habe ich keine Admin Rechte. Ich kann aber Per SSH client Verbindungen aussehralb der Firewall herstellen.

2. Ich will in dieser Konstellation auf Programme/Remote Desktop des PC's hinter der Firewall zugreiffen, der eigentlich nur ausgehende Verbindungen erlaubt.

Ich hoffe es wird klarer was ich will.

Das problem ist, dass ich keinen Reverse Tunnel aufbauen kann. Ich weisß nicht, ob das nur an Dropbear liegt. Kann Dropbear das grundsätzlich oder ist mein problem wo anders?
 
Habe ich mich tatsächlich so undeutlich ausgedrückt, daß man den Eindruck gewinnen mußte, ich wüßte nicht mit hinreichender Genauigkeit, was ein "reverse tunnel" eigentlich macht? Als Ergänzung sei vielleicht noch angemerkt, daß so etwas im SSH-Kontext als "remote port forwarding" bezeichnet wird und die notwendigen Nachrichten zwischen SSH-Server und -Client, um so etwas zu etablieren, dann im RFC 4254 in Kapitel 7 nachzulesen sind.

Oder ist die Antwort auf meine eigentliche Frage (wo wird da "dropbear" genau eingesetzt, es gibt schließlich mindestens 4 Permutationen, wenn man "gar nicht" ausnimmt, immer noch 3) irgendwo in den Restriktionen "versteckt" und ich finde sie nicht? Ich habe ja noch gar nicht nach den konkreten Aufrufen und den dabei auftretenden Fehlern gefragt, aber das ist hier alles nur Wischi-Waschi, was da bisher zurückkam.

Welches Gerät im gezeigten "Bild" läuft jetzt eigentlich genau mit "Freetz"?

Also bitte noch einmal von vorne ... ich wollte nicht wissen, was ein "remote port forwarding" eigentlich ist (und auch @Whoopie weiß das sicherlich), die Frage zielte darauf ab, was da auf welchem Host aufgerufen wird und wie die jeweiligen Reaktionen darauf aussehen.

Auch bei einem "Gesamtfehler" wie "geht nicht" (und die "Fehlerbeschreibung" in der Form "aber Server 2 to client port forward wird rejected" ist kaum mehr als das) gibt es hier immer noch mehrere Teilschritte, die jeder für sich fehlschlagen können (ausgehende Verbindung zum SSH-Server, Verbindungen vom entfernten Host (der ist dort auch "localhost") auf den entfernten Port vs. Verbindungen von einem dritten Host auf den weitergeleiteten Port, usw.) und - je nachdem, womit man arbeitet - die meisten Programme unterstützen auch noch zusätzliche Debug-Modi, damit man sich dem Problem dann auch schrittweise nähern kann.

Solange also hier niemand mit der Glaskugel dahinter kommt, was Du eigentlich genau machst (wie gesagt, ich verstehe nicht mal richtig, wo hier die FRITZ!Box mit Freetz und "dropbear" in das Szenario eingreift) und was dabei das Problem ist, wirst Du nicht umhinkommen, das auch mal nachvollziehbar zu beschreiben. Dabei brauchst Du Dich nicht damit aufhalten, was man alles machen könnte und auch nicht nach weiteren (fremden) Bildern suchen, die das nur unzureichend illustrieren ... es geht darum, was Du genau machst.
 
Dropbear ist der SSH Server und der läuft über freetz auf der Fritzbox an einer privaten DSL Verbindung, auf der ich root zugriff habe, was auf dem Schaubild die rechten PC's wären.

Alle clients sind windows pc und die Verbindung wird mit bitvise tunnelier, Secure CRT oder Putty aufgebaut.

Wie ich bereits geschrieben habe, habe ich keinen einfluss auf die Firewall die hier zu umgehen ist und nur normale Benutzer Rechte auf den PC auf den ich "hinter" der firewall zugreiffen will. Die Firewall widerum erlaubt nur ausgehende Verbindungen über Port 443. Ich will aber durch diese Firewall hinein!
 
Das kann ja kaum alles sein ... einfach mal angenommen, auf dem "linken" PC wird jetzt ein SSH-Tunnel zur FRITZ!Box (dem "rechten" PC) aufgebaut und der dortige Port 1234 wird auf den linken PC auf Port 5678 getunnelt (also -R 1234:localhost:5678), dann hat davon ja noch kein PC hinter der FRITZ!Box irgendetwas.

Wenn auf dem linken PC (als SSH-Client) eine Verbindung zu einem SSH-Server gestartet wird und die endet bei "localhost:3389" auf dem linken PC (was ja dann MS-RDP auf diesem PC wäre), was bringt denn dann ein Port 3389 auf der FRITZ!Box, wenn der nicht auch noch "von außerhalb" der Box benutzbar ist? Das ist dann genau der Unterschied, den man (beim OpenSSH) mit "GatewayPorts <no|yes|clientspecific>" konfigurieren kann, denn normalerweise bindet der Server solche Ports nur an "localhost" und die lokalen Adressen (127.0.0.1 und ::1). Beim "dropbear" gibt es dann für "yes" die Option "-a" (hat @Whoopie Dir ja schon mitgeteilt) und ohne die wird kein Client aus dem FRITZ!Box-LAN auf den Tunnel zugreifen können ... selbst wenn der noch so schön aufgebaut wurde.

Du wirst also wohl mit etwas wie "ssh -R 3389:localhost:3389 mybox.myfritz.net" vom linken PC eine SSH-Verbindung zur FRITZ!Box aufbauen wollen (die dazu natürlich auch auf Port 443 mit dem SSH-Server Verbindungen entgegennehmen muß, wenn "hosta" nur diesen Port als Ziel ansprechen darf) ... warum kannst Du das nicht einfach mal selbst so aufschreiben?

Dazu gehört dann eben auch das jeweilige Fehlerprotokoll ... es ist schon ein gewaltiger Unterschied, ob bereits beim SSH-Aufruf auf "hosta" irgendetwas mit "rejected" kommt oder erst beim Zugriffsversuch auf den weitergeleiteten Port an der FRITZ!Box mit "remote desktop connection". Der "dropbear" erzeugt auch genauere Fehlernachrichten, wenn man ihn mit "DEBUG_TRACE"-Option übersetzt und mit "-v" aufruft.

Ist das wirklich soo schwer zu verstehen, was damit gemeint ist, wenn Du genaue Informationen weiter- und wiedergeben sollst?

Jedenfalls hat der "dropbear" an der Stelle tatsächlich ein paar Einschränkungen (er unterstützt z.B. die Angabe von 0 als Portnummer (für "Server sucht aus") nicht), aber die Angabe von "address to bind" aus dem RFC wertet er tatsächlich aus, solange auch noch "-a" beim Aufruf des Servers angegeben wurde (ansonsten wird das auf "localhost" als Angabe im Request zurückgesetzt).

Aber wie gesagt ... theoretisch (dem Quelltext nach) sollte es mit "dropbear" funktionieren und woran es bei Dir nun genau klemmt, kannst Du nur selbst ermitteln und dazu gehören (a) so viele Protokoll-Ausgaben wie möglich (eben u.a. auch erst einmal ein "dropbearmulti"-Binary, welches mit Trace-Support übersetzt wurde) und (b) das Überprüfen jedes Teilschritts.

Nach dem Start hat so ein SSH-Server dann eben lokal nur einen Listener auf Port 443 (oder wie Du das auch immer in der AVM-Firewall lösen magst, auch dazu fehlt ja jede Angabe) und spätestens mit der ersten Verbindung mit "remote port forwarding" muß dann auf dem richtigen Interface und dem richtigen Port auch noch ein passender Listener dazukommen. Wenn das nicht stattfindet, sind ja schon die Grundlagen falsch umgesetzt und man braucht gar nicht erst versuchen, auf den (ohnehin geschlossenen) Port irgendwie zuzugreifen. Am Ende geht hier aus dem Thread nicht einmal klar hervor, ob die Verbindung für den Tunnel überhaupt aufgebaut werden kann. Notfalls muß man sogar zum Paketmitschnitt greifen, um überhaupt erst einmal festzustellen, ob ein Paket von "hosta" und dem dort gestarteten SSH-Client überhaupt bei der Box (und als nächstes dann auf deren lokalem Interface) ankommt.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.