PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : FTP-Server hinterm Router(Iptables)



Derdel
08.01.03, 13:05
Soweit funktioniert alles ohne Probleme, nur mit meinem FTP-Server hinter meinem Router habe ich noch Probleme. Bekomme es einfach nicht gebacken, das man von aussen drauf zugreifen kann.

Konfiguration sieht wie folgt aus:

2x Win 2000 rechner IP 192.168.110.11 und 192.168.110.12
Linuxrouter mit Suse 8.0 2 Netzwerkkarten eth0=192.168.110.10
eth1=192.168.110.99 geht ins www

Mein Iptables-Script sieht wie folgt aus:

#!/bin/sh
# Meine kleine Firewall

modprobe iptable_nat

#Variable setzen
IPTABLES=/usr/sbin/iptables

$IPTABLES -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

# Die MTU entsprechend auf 1452 einstellen (pmtu)
$IPTABLES -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

#win2000 netzwerk
$IPTABLES -A INPUT -p tcp -i ppp0 --dport netbios-ssn -j DROP
$IPTABLES -A INPUT -p tcp -i ppp0 --dport telnet -j DROP
#ftp-Client
$IPTABLES -A INPUT -p tcp -i ppp0 --dport ftp -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -o ppp0 --dport ftp -j ACCEPT
# FTP Client (Data Port fuer nicht-PASV transfers)
$IPTABLES --append INPUT -p TCP -s 0/0 --source-port 20 -j ACCEPT

# Tables forblock anlegen
$IPTABLES -N forblock

# TCP Ports 4661, 4662 generell annehmen
# UDP Port 4665 generell annehmen
$IPTABLES -A forblock -i ppp0 -p tcp --dport 4661 -j ACCEPT
$IPTABLES -A forblock -i ppp0 -p tcp --dport 4662 -j ACCEPT
$IPTABLES -A forblock -i ppp0 -p udp --sport 4665 -j ACCEPT

#Emule und Edonkey weiterleiten
$IPTABLES -A PREROUTING -t nat -p tcp --dport 4661 -i ppp0 -j DNAT --to 192.168.110.11
$IPTABLES -A PREROUTING -t nat -p tcp --dport 4662 -i ppp0 -j DNAT --to 192.168.110.11
$IPTABLES -A PREROUTING -t nat -p udp --sport 4665 -i ppp0 -j DNAT --to 192.168.110.11

# Tabelle forblock forwarden !

$IPTABLES -A FORWARD -j forblock

#FTP-server auf meinem Windows200 Client
$IPTABLES -t nat -A POSTROUTING -o eth0 -d 192.168.110.11 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.110.10
$IPTABLES -t nat -A PREROUTING -i ppp0 -p tcp -d 192.168.110.99 --dport 20 -j DNAT --to 192.168.110.11:20
$IPTABLES -t nat -A PREROUTING -i ppp0 -p tcp -d 192.168.110.99 --dport 21 -j DNAT --to 192.168.110.11:21
$IPTABLES -t nat -A PREROUTING -i ppp0 -p udp -d 192.168.110.99 --dport 20 -j DNAT --to 192.168.110.11:20
$IPTABLES -t nat -A PREROUTING -i ppp0 -p udp -d 192.168.110.99 --dport 21 -j DNAT --to 192.168.110.11:21

#Samber von aussen dicht machen
$IPTABLES -A FORWARD -o ppp0 -p tcp --dport 137:139 -j DROP
$IPTABLES -A FORWARD -o ppp0 -p udp --dport 137:139 -j DROP

#kein Ping von aussen
$IPTABLES -A INPUT -i ppp0 -p icmp -j DROP

Habe schon einiges probiert (man findet ja viel im Netz), aber es will einfach nicht klappen.

Dank im vorraus

Jens

Berufspenner
08.01.03, 13:36
Hi

Woher willst du wissen, dass es nicht funktioniert? Portforwarding geht nur in eine richtung. D.h. du müsstest das ganze schon von einem externem Rechner außerhalb deines Netzes testen.

Cu
André

Belkira
08.01.03, 13:51
Soweit funktioniert alles ohne Probleme, nur mit meinem FTP-Server hinter meinem Router habe ich noch Probleme. Bekomme es einfach nicht gebacken, das man von aussen drauf zugreifen kann.

In deinen Regeln ist erstens ohnehin fast alles offen, insbesondere die FORWARD Chain. Aber Du leitest von außen kommende FTP Verbindungen nicht an Dein LAN weiter.


eth1=192.168.110.99 geht ins www

Das ist aber eine interne IP Adresse, nicht die externe. Falls eth1 sowas wie eine DSL Ethernet Karte ist, gib ihr entweder keine IP Adresse oder eine, die nicht in Deinem LAN Subnetz liegt. Das vermeidet unsinnige und tote Routes.


#FTP-server auf meinem Windows200 Client
$IPTABLES -t nat -A POSTROUTING -o eth0 -d 192.168.110.11 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.110.10

Ooops? Masquerading und SNAT? :rolleyes:


$IPTABLES -t nat -A PREROUTING -i ppp0 -p tcp -d 192.168.110.99 --dport 20 -j DNAT --to 192.168.110.11:20
$IPTABLES -t nat -A PREROUTING -i ppp0 -p tcp -d 192.168.110.99 --dport 21 -j DNAT --to 192.168.110.11:21
$IPTABLES -t nat -A PREROUTING -i ppp0 -p udp -d 192.168.110.99 --dport 20 -j DNAT --to 192.168.110.11:20
$IPTABLES -t nat -A PREROUTING -i ppp0 -p udp -d 192.168.110.99 --dport 21 -j DNAT --to 192.168.110.11:21

Streiche hier jeweils -d 192.168.110.99 und die beiden unteren UDP Regeln. FTP setzt auf TCP auf.

Derdel
08.01.03, 14:19
Was meinst du mit FORWARD CHAIN?

N.D.
10.01.03, 11:27
Was mich interessieren würde ist, wie man es tatsächlich realisiert einen ftp server hinter einer (sicherer konfigurierten) firewall für clients zugänglich macht, die passives ftp verwenden. Da bei pas. ftp ja der Highport für die Connection vom Client her bestimmt wird.

Angenommen die Firewall vor dem Server lässt standardmässig keine Verbindung zu Highports in der FORWARD chain zu.

Erkennt die FW diese zum ftp zugehörige Verbindung durch den state RELATED?
Oder wird das durch die iptables ftp Module ermöglicht?
Weiters ist diese Verbindung zu dem Highport angeblich eine UDP und keine TCP, liege ich da richtig?

Bin für jede Antwort dankbar!

HangLoose
10.01.03, 14:14
moin moin


Da bei pas. ftp ja der Highport für die Connection vom Client her bestimmt wird.

das ist so nicht ganz richtig. der client startet die verbindung mit der control connection an den port 21 des servers. in dieser control connection teil der client dem server mit dem kommando PASV mit, das er eine passive ftpverbindung wünscht. in der antwort teilt der server dem client mit, welchen port der server für die data connection reserviert(vorgesehen) hat. zu diesem port baut der client dann eine data connection auf.


Erkennt die FW diese zum ftp zugehörige Verbindung durch den state RELATED? Oder wird das durch die iptables ftp Module ermöglicht?

da bin ich mir nicht ganz sicher. ich hab mal gelesen, das es bei aktiven ftp-verbindugen mittels stateful inspection möglich ist, das vom client übertragene PORT-kommando *auszulesen* und damit eine eingehende verbindung(die bei ja bei aktiv vom server kommt) auf diesen port zu beschränken.


Weiters ist diese Verbindung zu dem Highport angeblich eine UDP und keine TCP, liege ich da richtig?

meines wissens nach verwendet ftp nur tcp


Gruß HL

Belkira
10.01.03, 15:15
Original geschrieben von Derdel
Was meinst du mit FORWARD CHAIN?
man iptables (kurz: den Teil der Netfilter Paketfilterarchitektur, der für weiterzuleitende Pakete (bzw. Datagramme) zuständig ist und in den Du Filterregeln mit iptables --table filter und z.B. --append FORWARD schreibst)

Original geschrieben von N.D.
Erkennt die FW diese zum ftp zugehörige Verbindung durch den state RELATED?
Oder wird das durch die iptables ftp Module ermöglicht?

Ja, mit ip_conntrack_ftp und ip_nat_ftp werden sowohl aktive, als auch passive FTP Verbindungen als RELATED gesehen.

N.D.
11.01.03, 22:03
Vielen Dank für die Erklärungen!
Schönes Wochenende wünsche ich euch allen.