cscholz
Goto Top

SSH Tunnel mit iptables

Ich habe einen Debian Server über den ich per SSH zugreife. Zur Absicherung verwende ich iptables.
SSH habe ich dabei freigeschaltet.

IPTABLES=/sbin/iptables
...
$IPTABLES -A INPUT -i $LAN_INTERFACE -p tcp --destination-port 1023 -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -i $WAN_INTERFACE -p tcp --destination-port 1023 -m state --state NEW -j ACCEPT
...

Ich komme auch mit SSH drauf, aber ich kann kein Portforwarding betreiben obwohl ich es in der sshd_config aktiviert habe (AllowTcpForwarding yes).

Sobald ich alle iptables Regeln wieder entfernen geht es.
Woran liegt das? Habe ich etwas vergessen?
Der SSH-Server hängt hinter einem Router. Muss ich NAT noch erlauben? Wenn ja, wie...

Beschäftige mich noch nicht so lange mit iptables.

Content-ID: 34778

Url: https://administrator.de/forum/ssh-tunnel-mit-iptables-34778.html

Ausgedruckt am: 23.12.2024 um 09:12 Uhr

Beagle
Beagle 24.06.2006 um 11:34:22 Uhr
Goto Top
NAT aktivierst du so:
echo 1 > /proc/sys/net/ipv4/ip_forward
Das ist aber bei SSH Tunnel IMHO nicht notwendig.

Du musst aber auch die Antworten wieder rauslassen also eine entsprechende OUTPUT Regel erstellen. Irgendwie so denke ich:
iptables -A OUTPUT ... -m state --state ESTABLISHED,RELATED -j ACCEPT
cscholz
cscholz 24.06.2006 um 11:57:24 Uhr
Goto Top
IPTABLES=/sbin/iptables
...
$IPTABLES -A INPUT -i $LAN_INTERFACE -p tcp --destination-port 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $WAN_INTERFACE -p tcp --destination-port 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o $LAN_INTERFACE -p tcp --destination-port 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o $WAN_INTERFACE -p tcp --destination-port 22 -m state --state ESTABLISHED,RELATED -j ACCEPT

funktioniert auch nicht.

Ausgehender Verkehr über Port 22 funktioniert doch aber, sonst könnte ich ja per SSH auf dem System nicht arbeiten, oder?
Beagle
Beagle 24.06.2006 um 13:14:38 Uhr
Goto Top
Ich hab jetzt leider keine Möglichkeit um es zu testen.
Wenn ich dich richtig verstehe kommst du auf den Server rauf, aber auf das Gerät auf das du einen Tunnel machst antwortet nicht, wenn du deine Regeln setzt?

Die Antwort Regel muss dann auch in FORWARD Chain. ^^;
Versuch es mal mit dieser, einschränken kannst du dann immer noch ...ich bin nämlich nicht sicher ob die Antworten auch über 22 laufen?!?
$IPTABLES -A FORWARD -o $LAN_INTERFACE -m state --state ESTABLISHED,RELATED -j ACCEPT

Mir ist nur nicht klar warum es gehen soll wenn du die Regeln löschst ?!?
cscholz
cscholz 24.06.2006 um 14:06:10 Uhr
Goto Top
Manchmal denkt man nur bis zum nächsten Baum.

SSH hatte ich erlaubt
IPTABLES=/sbin/iptables
...
$IPTABLES -A INPUT -i $LAN_INTERFACE -p tcp --destination-port 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $WAN_INTERFACE -p tcp --destination-port 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Aber nicht den Verkehr in das eigenen Netz. Wenn ich dem eigenen Netz vertraue, dann geht es...
$IPTABLES-A INPUT -i $LAN_INTERFACE  -s 192.168.0.0/255.255.255.0 -j ACCEPT
$IPTABLES -A OUTPUT -o $LAN_INTERFACE  -s 192.168.0.0/255.255.255.0 -j ACCEPT

Was mir noch nicht ganz klar ist, ist wenn ich mich per SSH auf den Server verbinde und dann über den Tunnel den Port 3389 eines Clients auf meinen lokalen 13389 umleiten. Welchen Port muss ich dann intern kommen auf den SSH Server freigeben?

ext ----- Port 22 -----> SSH-Server ----- Port 3389 -----> Client
ext <----- Port 22 ----- SSH-Server <----- Port ____ ----- Client
Beagle
Beagle 24.06.2006 um 16:02:49 Uhr
Goto Top
Was mir noch nicht ganz klar ist, ist wenn
ich mich per SSH auf den Server verbinde und
dann über den Tunnel den Port 3389 eines
Clients auf meinen lokalen 13389 umleiten.
Welchen Port muss ich dann intern kommen auf
den SSH Server freigeben?

Für den Tunnel sollte man eigentlich gar nichts freigeben müssen, das erledigt erledigt SSH für dich.
cscholz
cscholz 24.06.2006 um 16:19:03 Uhr
Goto Top
Der SSH-Server leitet doch den Port 3389 des Clients in den Tunnel hinein. Über welchen Port geschieht dies?
Nimmt der Server dafür einen Zufälligen Port? Port 22 kann es ja nicht sein, der ist freigegeben. 3389 oder 13389 ist es auch nicht. Habe ich auch versucht.

Ich habe jetzt im internen Netz erstmal alles freigegeben. Soll aber nicht die Endlösung sein.
Wenn ich mich nun per RDP über den Tunnel verbinde und anschließend mit netstat -p mir die Verbindungen anzeigen lasse steht dort:

 unix  3      [ ]         STREAM     VERBUNDEN     44611    11445/sshd: remote

Also ist es doch ein Zufälliger Port oder nicht...

Verstehe die Arbeitsweise nicht so ganz.

Trotzdem schonmal danke an Beagle für die Hilfe & Geduld bis hierhin! face-smile
Beagle
Beagle 24.06.2006 um 18:05:42 Uhr
Goto Top
Genau kann ich es leider auch nicht erklären, aber es wird wie bei einem Webserver sein wo die Kommunikation auch über Ports > 1024 läuft. Und ich bin immer noch der Meinung, dass du die oben geschriebene FORWARD Regel brauchst ...da ansonsten z.B. auch keine WWW-Verbindungen von Clients in deinem Netz nach aussen zustande kommen.
cscholz
cscholz 25.06.2006 um 13:03:22 Uhr
Goto Top
Man muss den für den ausgehenden Verkehr die Ports 1024:65535 öffnen

   $IPTABLES -A INPUT -i $LAN_INTERFACE -p tcp --destination-port 1023 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
   $IPTABLES -A INPUT -i $WAN_INTERFACE -p tcp --destination-port 1023 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
   $IPTABLES -A OUTPUT -o $LAN_INTERFACE -p tcp --dport 1024:65535 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Kann also geschlossen werden.
Nochmals danke an Beagle . . .