• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] SSH-Tunnel - Andere IP's im entfernten Netz erreic

Hallo,

ich habe einen SSH Verbindung von einem Windows Rechner (KiTTY) zu einem Linux Rechner (über eine Fritzbox). Nun möchte ich durch diesen Tunnel einen anderen Windows PC im entfernten Netzwerk per RDP erreichen.

openssh-server IP 192.168.10.5 im entfernten lokalen Netz, Windows PC 192.168.10.20 Port 3389

Geht das? Und wenn ja, wie? Alternative Programme sind nicht möglich, z. B. openvpn etc.

Gruß schnurzelat
 

orcape

Member
Hi schnurzelat,
warum soll das nicht gehen. Ich denke mal einen ssh-Server auf dem Windows-PC laufen lassen,
müsste das Problem lösen.
Würde ich aus Sicherheitstechnischer Sicht, ohne einen VPN-Tunnel trotzdem nicht tun.
Gruß orcape
 

framp

Moderator
Teammitglied
Kannst Du die Topologie und die Richtung des Verbindungsaufbaues mal pseudomalen? Mir ist nicht klar wer wo mit wem will :???:
 

spoensche

Moderator
Teammitglied
orcape schrieb:
Hi schnurzelat,
warum soll das nicht gehen. Ich denke mal einen ssh-Server auf dem Windows-PC laufen lassen,
müsste das Problem lösen.

Würde ich aus Sicherheitstechnischer Sicht, ohne einen VPN-Tunnel trotzdem nicht tun.
Gruß orcape

Ein SSH-Tunnel ist ein verschlüsselter Tunnel und wird ab und an mal als VPN verwendet. Ein VPN ist allerdings schon zu bevorzugen.

@schnurzelat:
Du kannst mit:
Code:
ssh -f -L 1234:localhost:6667 dein.linuxrechner.org

einen SSH Tunnel aufbauen. Die RDP Verbindung musst du dann durch den Tunnel leiten.

Das ändert allerdings nichts an der Tatsache, das RDP alles andere als sicher ist und du dir bei aktiviertem RDP ein ordentliches anf#lliges Loch schaffst.
 
OP
S

schnurzelat

Member
zwischenablage01k.png

http://imageshack.us/photo/my-images/805/zwischenablage01k.png/

Danke für die Antworten!

Also ich möchte von dem Windows 7 Rechner mit PuTTY über den Linux Server (.5) zum Windows 7 RDP (.30). Dazu muss ich irgendwie den Linux Server (.5) dazu bekommen einen lokalen Port (z. B. 54321 auf die andere IP (.30) und den Port (3389) zu mappen.

Kann das gehen? Falls ja, wie?

Gruß schnurzelat
 

spoensche

Moderator
Teammitglied
Der Linux Rechner fungiert in diesem Fall dann als Router. Du müsstest also den Verkehr aus dem SSH- Tunnel Forwarden. Du könntest es dir allerdings auch einfacher machen, wenn du auf deiner Fritzbox ein VPN einrichtest, dich mit dem Windings per VPN mit der Fritzbox verbindest und die RDP Verbindung über das VPN laufen lässt.
 

framp

Moderator
Teammitglied
spoensche kann ich nur voll und ganz zustimmen. Falls Du es doch per putty und ssh machen willst: hier hatte ich das mal für einen Proxy Server beschrieben für jemanden, der aus China den grossen Firewall umgehen musste um News in Deutschland lesen zu koennen (Selbst Stern & Spiegel war von dort nicht erreichbar). Allerdings wird da auf den local Port des ssh Tunnelendes umgeleitet, da auf dem auch der Proxy lief. Da musst Du nur die remote RDP IP und Port angeben und fertig ;-)

Just in case: Wenn Das Ziel nicht Dein Homebereich ist sondern der Deines Broetchengebers rate ich Dir dringend die Finger von dem Tunnel zu lassen denn Du hebelst damit seine NetzwerkSicherheit aus und spielst mit Deinem Job ;)
 
OP
S

schnurzelat

Member
Danke für die Antworten.

@framp

Das funktioniert bereits. Auf dem .5 läuft ein squid mit squidguard.

@spoensche

VPN geht nicht weil nur PuTTY (auf Port 443) zur Verfügung steht.

Wie kann ich das forwarding am Linux Rechner konfigurieren? Also ich mache ganz normal einen Tunnel z. B. 54321. Wie sage ich dem Linux Rechner nun, dass er seinen Port 54321 auf 192.168.178.30:3389 forwarded?

Danke und Gruß schnurzelat
 

spoensche

Moderator
Teammitglied
schnurzelat schrieb:
@spoensche

VPN geht nicht weil nur PuTTY (auf Port 443) zur Verfügung steht.
Geht nicht gibts nicht. SSH über den Standard Port von HTTPS laufen lassen, warum???? OpenVPN kann man auch nach installieren.

Du machst es dir so nur unnötig viel zu kompliziert.

schnurzelat schrieb:
Wie kann ich das forwarding am Linux Rechner konfigurieren? Also ich mache ganz normal einen Tunnel z. B. 54321. Wie sage ich dem Linux Rechner nun, dass er seinen Port 54321 auf 192.168.178.30:3389 forwarded?

In dem du deinem Linux sagst es soll als Router arbeiten.
Code:
echo 1 > /proc/sys/net/ip_forward
. Dann erstellst du noch ein paar IP-Tables Regeln, die das Forwarding und den restl. Verkehr reglementieren.
 
OP
S

schnurzelat

Member
Ich habe folgendes gemacht:

/etc/sysconfig/SuSEfirewall2
Code:
FW_MASQUERADE="yes"
FW_ROUTE="yes"
FW_FORWARD_MASQ="127.0.0.1/32,192.168.178.30,tcp,54321,3389"

zeigt keine Wirkung.

Wenn ich 'yast firewall' starte, ist 'masquerading' ausgegraut.

Habe ich was vergessen zu aktivieren?

Gruß schnurzelat
 

spoensche

Moderator
Teammitglied
Was willst du Masquerading? Dein Linux Rechner ist kein NAT- Router. Poste mal die Ausgabe von
Code:
grep -v ^#" /etc/sysconfig/firewall
 
OP
S

schnurzelat

Member
grep -v "^#" /etc/sysconfig/SuSEfirewall2

Code:
FW_DEV_EXT="eth0"
FW_DEV_INT=""
FW_DEV_DMZ=""
FW_ROUTE="yes"
FW_MASQUERADE="yes"
FW_MASQ_DEV=""
FW_MASQ_NETS=""
FW_NOMASQ_NETS=""
FW_PROTECT_FROM_INT="no"
FW_SERVICES_EXT_TCP="10025 137 3389 3390 3391 445 54321 5900 8001 8080 8200 8765"
FW_SERVICES_EXT_UDP="137 1900"
FW_SERVICES_EXT_IP=""
FW_SERVICES_EXT_RPC=""
FW_CONFIGURATIONS_EXT="apache2 sshd vsftpd"
FW_SERVICES_DMZ_TCP=""
FW_SERVICES_DMZ_UDP=""
FW_SERVICES_DMZ_IP=""
FW_SERVICES_DMZ_RPC=""
FW_CONFIGURATIONS_DMZ="sshd"
FW_SERVICES_INT_TCP=""
FW_SERVICES_INT_UDP=""
FW_SERVICES_INT_IP=""
FW_SERVICES_INT_RPC=""
FW_CONFIGURATIONS_INT="sshd"
FW_SERVICES_DROP_EXT=""
FW_SERVICES_DROP_DMZ=""
FW_SERVICES_DROP_INT=""
FW_SERVICES_REJECT_EXT=""
FW_SERVICES_REJECT_DMZ=""
FW_SERVICES_REJECT_INT=""
FW_SERVICES_ACCEPT_EXT=""
FW_SERVICES_ACCEPT_DMZ=""
FW_SERVICES_ACCEPT_INT=""
FW_SERVICES_ACCEPT_RELATED_EXT=""
FW_SERVICES_ACCEPT_RELATED_DMZ=""
FW_SERVICES_ACCEPT_RELATED_INT=""
FW_TRUSTED_NETS=""
FW_FORWARD=""
FW_FORWARD_REJECT=""
FW_FORWARD_DROP=""
FW_FORWARD_MASQ="127.0.0.1/32,192.168.178.40,tcp,54321,3389"
FW_REDIRECT=""
FW_LOG_DROP_CRIT="yes"
FW_LOG_DROP_ALL="no"
FW_LOG_ACCEPT_CRIT="no"
FW_LOG_ACCEPT_ALL="no"
FW_LOG_LIMIT=""
FW_LOG=""
FW_KERNEL_SECURITY=""
FW_STOP_KEEP_ROUTING_STATE=""
FW_ALLOW_PING_FW=""
FW_ALLOW_PING_DMZ=""
FW_ALLOW_PING_EXT=""
FW_ALLOW_FW_SOURCEQUENCH=""
FW_ALLOW_FW_BROADCAST_EXT="no"
FW_ALLOW_FW_BROADCAST_INT="no"
FW_ALLOW_FW_BROADCAST_DMZ="no"
FW_IGNORE_FW_BROADCAST_EXT="yes"
FW_IGNORE_FW_BROADCAST_INT="no"
FW_IGNORE_FW_BROADCAST_DMZ="no"
FW_ALLOW_CLASS_ROUTING=""
FW_CUSTOMRULES=""
FW_REJECT=""
FW_REJECT_INT=""
FW_HTB_TUNE_DEV=""
FW_IPv6=""
FW_IPv6_REJECT_OUTGOING=""
FW_IPSEC_TRUST="no"
FW_ZONES=""
FW_ZONE_DEFAULT=''
FW_USE_IPTABLES_BATCH=""
FW_LOAD_MODULES="nf_conntrack_netbios_ns"
FW_FORWARD_ALWAYS_INOUT_DEV=""
FW_FORWARD_ALLOW_BRIDGING=""
FW_WRITE_STATUS=""
FW_RUNTIME_OVERRIDE=""
FW_LO_NOTRACK=""
FW_BOOT_FULL_INIT=""
 

spoensche

Moderator
Teammitglied
Warum hast du Port 5900 (VNC) und andere Ports offen, wenn auf der Linux Büchse nur ein Webserver (Port 80 o. 8080), SSH (Port 22) läuft?
Du weisst das high Ports i.d.R von Ungeziefer jeglicher Art verwendet werden?

Am einfachsten wäre es, wenn du dir eine eigene IP-Tables Regel für RDP schreibst und per FW_CUSTOMRULES lädts.
 

framp

Moderator
Teammitglied
Mir ist nicht klar warum Du Port 3389 freigeben willst. Du benutzt doch ssh (Port 22) zum tunneln. Dann musst Du also nur Port 22 freigeben.

Folgende Tipps von mir:

1)
Code:
FW_LOG_DROP_ALL="no"
Setze das mal auf true. Dann siehst Du im Log wenn eine FW Rule einen Request abweist. Das hilft beim Fehlersuchen. ABER nicht vergessen wieder auszuschalten wenn Du drch bist.
2) Nur die Ports aufmachen die Du brauchst (Also Port 22)
3) Mit nmap und/oder shieldsup von aussen testen welche Ports offen sind.
4) Erst einmal ssh Zugriff zum Fliegen bringen - also einfaches Login per ssh (Basis fuer den Tunnel). Danach das Konfigurieren des Tunnels fuer 3389 angehen. Dann hast Du aber nix mehr mit der FW zu tun.
 
OP
S

schnurzelat

Member
@all

Der Server (.5) steht hinter einer Firewall (siehe Bild oben). Aus dem Internet ist nur der Port 443 erreichbar, sonst nichts. ssh, squid, apache, vnc etc. funktionieren bereits durch den ssh-tunnel.

Ich möchte aber zusätzlich ein forwarding einrichten. Anfragen an den Server (Port 54321) sollen im LAN (wo auch der Server steht) auf einen anderen Rechner (.40, Port 3389) ge-forwarded werden.

Der Eintrag in der Firewall funktioniert nicht.

Code:
FW_MASQUERADE="yes"
FW_ROUTE="yes"
FW_FORWARD_MASQ="127.0.0.1/32,192.168.178.40,tcp,54321,3389"

Die Eingabe von iptables Befehlen auch nicht.
Code:
iptables -t nat -A PREROUTING --dst 127.0.0.1 -p tcp --dport 54321 -j DNAT --to-destination 192.168.178.40:3389
iptables -t nat -A POSTROUTING --dst 192.168.178.40 -p tcp --dport 3389 -j SNAT --to-source 127.0.0.1
iptables -t nat -A OUTPUT --dst 127.0.0.1 -p tcp --dport 54321 -j DNAT --to-destination 192.168.178.40:3389

Dies auch nicht.

Code:
iptables -t nat -A PREROUTING -i eth0  -p tcp --dport 54321 -m conntrack --ctstate NEW -j DNAT --to 192.168.178.40:3389
iptables -t nat -A PREROUTING -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE
Was mache ich falsch?

Unter messages steht: sshd[6977]: error: connect_to localhost port 54321: failed.

Gruß schnurzelat
 
OP
S

schnurzelat

Member
Gelöst!

Es war soooooooooooo einfach! Bei sshd 'GatewayPorts yes' eintragen. Restart. Bei putty Source 3392 Destination 192.168.178.40:3389

Fertig.

Gruß schnurzelat
 
Oben