port forwarding

Rund um die Sicherheit des Systems und die Applikationen
sfeni
Posts: 341
Joined: 2002-08-15 11:35
Location: Schwabenland
 

port forwarding

Post by sfeni »

da die suchfunktion gerade nicht funktioniert und ich in google auch nichts passendes finde, muss ich dann doch hier posten. ;-)

ich möchte gerne den Port 6667 von meinem server auf ein server im irc-netz umleiten. wie kann ich das machen?

ziel:
connect auf 6667 meines servers, dieser soll dann alles weiterleiten auf den server auf den das umgeleitet wird und natürlich sollen auch daten von dem irc-server wieder an den user kommen.

praktisch wäre dies sicherlich mit iptables, aber ich weis ehrlich gesagt nicht, wie das funktioniert.

EDIT:
Mein System: debian woody
Folgendes, was evtl. wichtig ist, ist bereits installiert:

Code: Select all

...
ii  ipchains       1.3.10-15      Network firewalling for Linux 2.2.x
ii  iproute        20010824-8     Professional tools to control the networking
...
dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe
Contact:
 

Re: port forwarding

Post by dodolin »

a) Ich verschiebe nach Security.
b) Guckst du, Anleitung: -> http://www.netfilter.org/documentation/ -> NAT-Howto -> DNAT.
Ist gerade down, sonst hätte ich dir einen direkten Link gepostet, aber dort steht das (inklusive Beispielen) auf jeden Fall.

Bedenke: Wenn das IRC-Protokoll IP-Infos in den Nutzdaten überträgt, dann benötigst du NAT-Helper-Module, damit das funktionieren kann.
sfeni
Posts: 341
Joined: 2002-08-15 11:35
Location: Schwabenland
 

Re: port forwarding

Post by sfeni »

Und was macht dieses NAT-Helper Module?

Info/Bitte:
Bitte macht irgendein Add-On in das Forum, dass einem verschobene Threads anzeigt, bis man seinen Topic wiederfindet, naja, das kann evtl schon mal lange dauern und ob man es wiederfindet ist ja auch die Frage.

EDIT:
Da ich nun wusste, dass das NAT ist, habe ich dann mal in Google gesucht.
Die Regel in iptables müsste ja dann so aussehen:

Code: Select all

iptables -A PREROUTING -t nat -p tcp -d MEINE-IP --dport 6667 -j DNAT --to IRC-SERVER:6667
dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe
Contact:
 

Re: port forwarding

Post by dodolin »

Und was macht dieses NAT-Helper Module?
Die schreiben gegebenenfalls die Layer 3 Infos in den Nutzdaten passend um.
Halt so, wie NAT das Paket verändert, das muss sich dann ja auch in den Nutzdaten wiederspiegeln. *Wenn* in den Nutzdaten Infos aus Layer 3 übertragen werden. Ansonsten natürlich nicht. Wie das jetzt bei IRC genau ist, weiss ich nicht hundertprozentig, ich weiss aber, dass es für Kernel 2.2 mit ipchains IRC-Module gibt. Was auch immer diese machen...
Info/Bitte:
Bitte macht irgendein Add-On in das Forum, dass einem verschobene Threads anzeigt, bis man seinen Topic wiederfindet, naja, das kann evtl schon mal lange dauern und ob man es wiederfindet ist ja auch die Frage.
Sorry!

Das gibt es bereits, wir hatten uns aber darauf geeinigt, dass wir es nicht verwenden.
Ich werde nochmals eine interne Diskussion darüber anregen, versprochen.
Die Regel in iptables müsste ja dann so aussehen:
Jo, denke, das ist korrekt.
sfeni
Posts: 341
Joined: 2002-08-15 11:35
Location: Schwabenland
 

Re: port forwarding

Post by sfeni »

Habe mich mal nach diesen Modulen umgeschaut.
Das sind Kernel Module:

Code: Select all

pXXXXXXXX:~# modprobe ip_nat_irc
pXXXXXXXX:~# modprobe ip_conntrack_irc / ports=6667,6668,6669,7000,7001,7002
pXXXXXXXX:~# lsmod
Module                  Size  Used by    Not tainted
ip_nat_irc              2496   0  (unused)
iptable_nat            15924   1  [ip_nat_irc]
ip_tables              11328   3  [iptable_nat]
ip_conntrack_irc        3168   1  [ip_nat_irc]
ip_conntrack           19724   2  [ip_nat_irc iptable_nat ip_conntrack_irc]
pXXXXXXXX:~#
Das bedeutet doch, das dir drin sind die Module oder?

Dann müsste ich noch per apt-get install folgendes Paket installieren:

Code: Select all

iptables - IP packet filter administration tools for 2.4.4+ kernels
Oder?

Dann einfach die eine Regel eintragen und fertig!?
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: port forwarding

Post by captaincrunch »

Da du schon mit iptables ein paar Regeln aufgestellt hast, sollte das paket schon installiert sein. Die Module gehören zum Kernel, und nicht ins iptables-Paket ... ;)
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
sfeni
Posts: 341
Joined: 2002-08-15 11:35
Location: Schwabenland
 

Re: port forwarding

Post by sfeni »

Ich habe iptables nicht installiert, somit können auch keine regeln da sein.
die ein regel, die oben steht, hab ich mal so versucht zu erstellen (auf dem notizzettel). ;-)

habe nun auch mal ein tutorials kurz angeschaut, ich komme nur noch nicht ganz zurecht. ich habe auch angst, dass nachher alle ports gesperrt sind und ich nicht mehr drauf komme (gut, das rescue system würde mir in dem fall helfen, aber da drauf habe ich grad keine lust :-)).

Skript zum starten, dass ich nun mal niedergeschrieben habe:

Code: Select all

#!/bin/sh
# Neue iptables Session starten
/sbin/iptables --flush

# Module laden
/sbin/depmod -a
/sbin/insmod ip_tables
/sbin/insmod ip_conntrack
/sbin/modprobe ip_conntrack_irc / ports=6667,6668,6669,7000,7001,7002
/sbin/modprobe ip_nat_irc
/sbin/modprobe iptable_nat

# Regeln
/sbin/iptables -A PREROUTING -t nat -p tcp -d MEINE-IP --dport 6667 -j DNAT --to IRC-SERVER:6667
Kann man das so verwenden?
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: port forwarding

Post by captaincrunch »

OK, es sah halt nur so aus, als hättest du schon was gemacht. In dem Fall musst du das Paket natürlich noch installieren ...

Ja, und so lange du keine Default-Policy erstellst, die dir alles dicht macht, brauchst du dir auch keine Sorgen zu machen ... ;)
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
sfeni
Posts: 341
Joined: 2002-08-15 11:35
Location: Schwabenland
 

Re: port forwarding

Post by sfeni »

OK, werde das mal daheim auf einem Test-Server testen.
Mal sehen, was der zu dem Skript sagt ;-)
Ich werde mich bei Problemen hier wieder melden.

So nebenbei:
Muss in der Mittagspause kurz meinen Router daheim konfigurieren, dass ich per SSH drauf kann, so dass ich in meinem Home-Netz ein bisschen arbeiten kann. Mir ist grad nämlich voll langweilig :)
Und da kommt man dann auf solche Ideen sowas zu machen mit iptables, aber ich denke das ist bei euch nicht anderst 8)
sfeni
Posts: 341
Joined: 2002-08-15 11:35
Location: Schwabenland
 

Re: port forwarding

Post by sfeni »

So habe nun alles nötige eingerichtet um daheim auf meinen test-server zu kommen.
iptables ist installiert (schon im standard installiert ;-))

Ich habe nun mit diesem Skript iptables versucht zu starten:

Code: Select all

#!/bin/sh 
# Neue iptables Session starten 
/sbin/iptables --flush 

# Module laden 
/sbin/depmod -a 
/sbin/modprobe ip_conntrack_irc / ports=6667,6668,6669,7000,7001,7002 
/sbin/modprobe ip_nat_irc 
/sbin/modprobe iptable_nat 

# Regeln 
/sbin/iptables -A PREROUTING -t nat -p tcp -d 10.0.0.3 --dport 6667 -j DNAT --to 62.26.127.132:6667
Wenn ich nun mit "netstat -a" nachschaue, dann ist kein irc port (6667) offen. wie mache ich das nun? mit telnet komme ich auch nicht auf diesen port.
dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe
Contact:
 

Re: port forwarding

Post by dodolin »

echo "1" > /proc/sys/net/ipv4/ip_forward

(bin nicht sicher, ob der Pfad wirklich so heisst, bitte nachschauen)

hast du gemacht?
sfeni
Posts: 341
Joined: 2002-08-15 11:35
Location: Schwabenland
 

Re: port forwarding

Post by sfeni »

Hatte ich nicht gemacht.
Skript sieht nun so aus:

Code: Select all

siehe unten
Aber es funktioniert immernoch nicht :-(


EDIT:
Hab mittlerweile ein paar Sachen gelesen und Regeln hinzugefügt.
Es funktioniert aber immernoch nicht. Warum?
Sollte iptables eigentlich als Dienst laufen im Hintergrund?

Mein Skript:

Code: Select all

#!/bin/sh
# Neue iptables Session starten
/sbin/iptables --flush

# Module laden
/sbin/depmod -a
/sbin/modprobe ip_conntrack_irc / ports=6667,6668,6669,7000,7001,7002
/sbin/modprobe ip_nat_irc
/sbin/modprobe iptable_nat

/sbin/modprobe ip_tables
/sbin/modprobe iptable_filter
/sbin/modprobe ipt_unclean
/sbin/modprobe ipt_LOG

# IP-Forwarding aktivieren
echo "1" > /proc/sys/net/ipv4/ip_forward

# Alte Regeln loeschen
iptables -t filter -F
iptables -t nat    -F

# Standard alles akzeptieren
iptables -t filter -P INPUT       ACCEPT
iptables -t filter -P FORWARD     ACCEPT
iptables -t filter -P OUTPUT      ACCEPT
iptables -t nat    -P PREROUTING  ACCEPT
iptables -t nat    -P POSTROUTING ACCEPT

# ungewoehnliche oder defekte Pakete verwerfen
iptables -A FORWARD -m unclean -j DROP
iptables -A INPUT   -m unclean -j DROP

# Regeln
/sbin/iptables -A PREROUTING -t nat -p tcp -d 10.0.0.3  --dport 6667 -j DNAT --t
o 62.26.127.132:6667
/sbin/iptables -A OUTPUT     -t nat -p tcp -d localhost --dport 6667 -j DNAT --t
o 62.26.127.132:6667
dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe
Contact:
 

Re: port forwarding

Post by dodolin »

Hab mittlerweile ein paar Sachen gelesen und Regeln hinzugefügt.
Tipp: Nimm so wenig Regeln wie möglich. Schaue mit iptables -L und Konsorten (siehe manpage), welche Regeln aktiv sind.
Sollte iptables eigentlich als Dienst laufen im Hintergrund?
Nee, das macht der Kernel schon. Du kannst mit iptables -L schauen, welche Regeln aktiv sind, siehe oben.

Bitte wirf einen Blick auf das Bild in http://www.netfilter.org/documentation/ ... WTO-5.html
PREROUTING wird nicht von lokal entstehenden Paketen durchlaufen.

Ich vermute, dass vielleicht schon alles korrekt tut, du nur nicht korrekt testest. Testest du wirklich von extern, nicht von lokal? Wenn nicht, mache das bitte so. Haben diese externen Pakete wirklich Destination 10.0.0.3? Ansonsten würden sie ja von deiner Regel nicht gematched.

Wenn das auch nichts hilft, schreibe äquivalente Regeln mit -j LOG, um zu sehen , ob solche Pakete überhaupt ankommen und gematched werden.
sfeni
Posts: 341
Joined: 2002-08-15 11:35
Location: Schwabenland
 

Re: port forwarding

Post by sfeni »

ich glaube es liegt am testen... :lol:
dann muss ich wohl bis um 16:15 uhr warten bis ich feierabend habe und daheim bin. dort habe ich dann auch wieder die nötigen tools parat.

werde auch mal kurz mit iptables -L nachschauen:

Code: Select all

sfeni:~# iptables -l
iptables v1.2.6a: Unknown arg `-l'
Try `iptables -h' or 'iptables --help' for more information.
sfeni:~# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere           unclean

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere           unclean

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
sfeni:~#
komisch!?
dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe
Contact:
 

Re: port forwarding

Post by dodolin »

komisch!?
Nee, eigentlich nicht.
Das sind deine Regeln, mit denen du -m unclean matchest. Was auch immer das genau soll... Warum lässt du das nicht erstmal weg?

PREROUTING und Konsorten ist beim einfachen -L nicht dabei. Da musst du explizit die Table mit angeben. Syntax habe ich nicht im Kopf, vielleicht

iptables -t nat -L

oder sowas in der Art? Das Howto und die manpage sollten es aber wissen... :)
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: port forwarding

Post by captaincrunch »

oder sowas in der Art?
Nö, genau so ... ;)
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe
Contact:
 

Re: port forwarding

Post by dodolin »

Nö, genau so ...
Danke, CC. :-D

Wenn ich was aus dem Kopf sage, dann stimmt es zwar meistens, aber ich will da eine gewisse Absicherung (Disclaimer, whatever) haben. Deshalb schränke ich das ein, wenn ich es nicht selbst nachgeschaut habe, wozu ich halt oft zu faul bin bzw. denke, dass das ja jeder selber kann. ;)

Schliesslich will ich nicht behaupten, es wäre so, wenn ich mir nicht sicher bin. Aber ok.
sfeni
Posts: 341
Joined: 2002-08-15 11:35
Location: Schwabenland
 

Re: port forwarding

Post by sfeni »

Code: Select all

sfeni:~# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  anywhere             10.0.0.3           tcp dpt:ircd to:62.26.127.132:6667

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Dann habe ich das mal von extern getestet:

Code: Select all

Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

C:>telnet 10.0.0.3 6667
Verbindungsaufbau zu 10.0.0.3...Es konnte keine Verbindung hergestellt werden mi
t Host  auf Port 6667 : Verbinden fehlgeschlagen

C:>
und nun?

hab mein skript wieder abgespeckt:

Code: Select all

#!/bin/sh
# Neue iptables Session starten
/sbin/iptables --flush

# Module laden
/sbin/depmod -a
/sbin/modprobe ip_conntrack_irc / ports=6667,6668,6669,7000,7001,7002
/sbin/modprobe ip_nat_irc
/sbin/modprobe iptable_nat

/sbin/modprobe ip_tables
/sbin/modprobe iptable_filter
/sbin/modprobe ipt_unclean
/sbin/modprobe ipt_LOG

# IP-Forwarding aktivieren
echo "1" > /proc/sys/net/ipv4/ip_forward

# Alte Regeln loeschen
iptables -t filter -F
iptables -t nat    -F

# Regeln
/sbin/iptables -A PREROUTING -t nat -p tcp -d 10.0.0.3  --dport 6667 -j DNAT --t
o 62.26.127.132:6667
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: port forwarding

Post by captaincrunch »

Ã?hm sorry, aber seit wann werden Adressen, die für private Netze vorgesehen sind im Internet geroutet ? Für dein 10.0.0.3 trifft genau das zu. Dir wird also nichts anderes übrig bleiben, als das ganze aus dem LAN selbst zu testen.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
sfeni
Posts: 341
Joined: 2002-08-15 11:35
Location: Schwabenland
 

Re: port forwarding

Post by sfeni »

Ich teste das momentan noch auf nem rechner hier daheim (10.0.0.3) und dieser soll dann nach außer connecten auf den irc server von euIRC 62.26.127.132. das sollte doch möglich sein.
später möchte ich das auf meinem rooty einsetzen.

zur info:
habe einen router hier, der alles nach außen routet, was nicht intern ist :-)
somit dürfte das kein problem sein.
dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe
Contact:
 

Re: port forwarding

Post by dodolin »

Keine Ahnung, ob der Testaufbau so korrekt ist, da ich nicht genau checke, was du jetzt da gemacht hast (Bilder mit dem Netzaufbau würde da z.B. helfen).

Aber warum machst du es überhaupt so umständlich und machst es nicht einfach mal auf dem Rootserver? Solange du nur diesen einen Port in PREROUTING umschreibst, geht a) nichts kaputt und b) wird auch keine Sicherheitslücke aufgerissen. Was spricht also noch dagegen?
sfeni
Posts: 341
Joined: 2002-08-15 11:35
Location: Schwabenland
 

Re: port forwarding

Post by sfeni »

ok, ich teste es gleich mal auf dem server.
apt-get install iptables:
dann noch ne frage, der frägt mich hier ob ich das runlevel skript mit reinmache soll oder nicht?! muss das nun als daemon laufen oder nicht!?
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: port forwarding

Post by captaincrunch »

Nein. Das Runlevel-Script dient nur dazu, dass Debian dir ein Paketfilterscript "vorbaut", dass dann automatisch beim Start geladen wird. Mit einem Daemon hat das nichts zu tun.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
sfeni
Posts: 341
Joined: 2002-08-15 11:35
Location: Schwabenland
 

Re: port forwarding

Post by sfeni »

ok, funzt aber immernoch nicht. :-(

Code: Select all

#!/bin/sh
# Neue iptables Session starten
/sbin/iptables --flush

# Module laden
/sbin/depmod -a
/sbin/modprobe ip_conntrack_irc / ports=6667,6668,6669,7000,7001,7002
/sbin/modprobe ip_nat_irc
/sbin/modprobe iptable_nat

# IP-Forwarding aktivieren
echo "1" > /proc/sys/net/ipv4/ip_forward

# Alte Regeln loeschen
iptables -t nat    -F

# Regeln
/sbin/iptables -A PREROUTING -t nat -p tcp -d 217.160.174.15 --dport 6667 -j DNAT --to 62.26.127.132:6667
rootmaster
Posts: 483
Joined: 2002-04-28 13:30
Location: Hannover
 

Re: port forwarding

Post by rootmaster »

ohne auf die einzelheiten von tcp/ip einzugehen:
du musst die verbindung zum irc-server maskieren; also sollte folgender code reichen ;)

Code: Select all

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A POSTROUTING -t nat -p tcp -d 62.26.127.132 -j MASQUERADE
iptables -A PREROUTING -t nat -p tcp --dport 6667 -j DNAT --to-destination 62.26.127.132
"back to the roots"
Cahn's Axiom:

When all else fails, read the instructions
Post Reply