FTP Server - iptables - passive mode

Probleme mit Samba, NFS, FTP und Co.
Antworten
corax
Beiträge: 42
Registriert: 19.05.2002 15:51:59

FTP Server - iptables - passive mode

Beitrag von corax » 19.10.2003 22:23:29

Hi,
ich benutze glftpd als FTP Server. Der passive mode ist in der Konfigurationsdatei aktiviert.
Wenn ich iptables starte, können die Clients nicht über passive mode connecten.
Welche Regel müsste ich hinzufügen, damit passiv mode möglich ist.

iptables -A INPUT -m tcp -p tcp --dport glftpd -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport ftp-data -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 7900:8200 -m state --state ESTABLISHED,RELATED -j ACCEPT

Bei der Konfiguration funktioniert zwar der Connect, bleibt aber dann bei List Directory stehn.

MfG,
corax

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 19.10.2003 22:25:35

Deine ESTABLISHED,RELATED Regel arbeitet nur für einige Ports (die Range, die Du da angegeben hast). Hast Du das auch beim ProFTPd so eingestellt? Ausserdem ist es sinnvoll, die EST..., REL Regel am Anfang in der Firewall zu haben, so muss der nicht jedesmal durch die ganzen Regeln durch, nur am Ende (!) herauszufinden, dass das Paket OK ist.

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

corax
Beiträge: 42
Registriert: 19.05.2002 15:51:59

Beitrag von corax » 19.10.2003 22:30:14

Hi,
die Range steht auch so in der glftpd.conf. Ohne Firewall können die Clients mit aktiviertem passive mode connecten.
MfG,
corax

Benutzeravatar
spiffi
Beiträge: 1128
Registriert: 09.08.2003 19:02:27

Beitrag von spiffi » 19.10.2003 22:37:03

Ist das Modul ip_conntrack_ftp geladen?

corax
Beiträge: 42
Registriert: 19.05.2002 15:51:59

Beitrag von corax » 19.10.2003 22:43:24

jo, ist geladen

Module Size Used by Tainted: P
ip_conntrack_ftp 3200 0 (unused)

Benutzeravatar
spiffi
Beiträge: 1128
Registriert: 09.08.2003 19:02:27

Beitrag von spiffi » 19.10.2003 22:50:34

Irgendwelche OUTPUT-Regeln in der Firewall?
Verwendest Du NAT?
Lass mal testweise die Portrange für die ESTABLISHED,RELATED Regel weg.

corax
Beiträge: 42
Registriert: 19.05.2002 15:51:59

Beitrag von corax » 19.10.2003 23:02:50

Hier mal mein ip tables script:

#!/bin/bash

iptables -F
iptables -X
iptables -Z

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DROP

iptables -A INPUT -i eth0 -p tcp --dport 7900:8200 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport glftpd -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport ftp-data -j ACCEPT
iptables -A FORWARD -m tcp -p tcp -s 192.168.x.x/255.255.255.0 -i eth0 --dport glftpd -j ACCEPT
iptables -A OUTPUT -m tcp -p tcp --dport glftpd -j ACCEPT
iptables -A INPUT -i eth0 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth0 -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o eth0 -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -i eth0 -j LOG --log-level info --log-prefix "bla : "

corax
Beiträge: 42
Registriert: 19.05.2002 15:51:59

Beitrag von corax » 19.10.2003 23:05:14

Portrange weggelassen....bringt aber auch nichts

corax
Beiträge: 42
Registriert: 19.05.2002 15:51:59

Beitrag von corax » 19.10.2003 23:33:04

hui, es geht:


#!/bin/bash

# Erstmal alles eventuell voreingestellte l\xf6schen.
iptables -F
iptables -X
iptables -Z

# Alle defaulties der eingebauten Ketten auf DROP setzen
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# localhost alle Verbindungen erlauben
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Sich versichern, dass einkommende tcp Verbindungen mit einem syn ankommen
# Erkl\xe4rung sp\xe4ter.
iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DROP

# Nur selbst initialisierte Verbindungen gestatten.(Internet Schnittstelle hier eth0).
iptables -I INPUT 3 -p TCP --dport 7900:8300 -j ACCEPT #mit der Rule hauts hin
#iptables -A INPUT -d 192.168.1.2 -p tcp --sport 7900:8300 --dport 7900:8300 -m state --state ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -s 192.168.1.2 -p tcp --sport 7900:8300 --dport 7900:8300 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport glftpd -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport ftp-data -j ACCEPT
iptables -A FORWARD -m tcp -p tcp -s 192.168.1.0/255.255.255.0 -i eth0 --dport glftpd -j ACCEPT
iptables -A OUTPUT -m tcp -p tcp --dport glftpd -j ACCEPT
iptables -A INPUT -i eth0 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -m state --state NEW,ESTABLISHED -j ACCEPT

# Zus\xe4tzlich f\xfcr icmp noch RELATED Verbindungen erlauben (braucht man f\xfcr
#traceroute - time exceeded)
iptables -A INPUT -i eth0 -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o eth0 -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Alle verbotenen Pakete loggen
iptables -A INPUT -i eth0 -j LOG --log-level info --log-prefix "b\xf6ses Internet-Paket : "

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 20.10.2003 00:58:54

iptables -A INPUT -m tcp -p tcp --dport glftpd -j ACCEPT
Hmm... Ist glftp ein gültiger Port Identifier? Sprich: steht ein entsprechender Eintrag in der /etc/services? Wenn nein, ersetze das "glftp" 'mal einfach durch "ftp"...

Patrick
PS: Ja ich weiss, das es jetzt geht...
P.
Definitely not a bot...
Jabber: pdreker@debianforum.de

corax
Beiträge: 42
Registriert: 19.05.2002 15:51:59

Beitrag von corax » 20.10.2003 07:55:14

glftpd steht mit Port 8022 in der /etc/services und ftp ist auskommentiert. Mit folgender Regel funktioniert jetzt auch passive mode:

iptables -I INPUT 3 -p TCP --dport 7900:8300 -j ACCEPT.

Das Thema IPTABLES ist ziemlich neu für mich. Ich habe mich bis jetzt immer auf meinen LINKSYS BEFSR41 verlassen (Lan/Wan Router mit integrierter Firewall) :-)).
Gibt es Beispielkonfigurationen für IPTABLES mit Router?

Danke für die Tipps

MfG,
corax

Benutzeravatar
spiffi
Beiträge: 1128
Registriert: 09.08.2003 19:02:27

Beitrag von spiffi » 20.10.2003 11:13:50

Das -I INPUT 3 kannst Du auch getrost wieder gegen -A INPUT austauschen. So wie die Regel in Deinem Skript platziert ist, steht sie ohnehin an dritter Stelle. Und in Deinem Skript spielt die Position dieser Regel ohnehin keine Rolle fürs funktionieren.
Der Grund, warum diese Regel jetzt läuft ist, daß Du den State-Filter weggelassen hast (-m state --state ESTABLISHED, RELATED). Damit machst Du diese Ports komplett auf.
Der RELATED-Filter hat bei Dir nicht funktioniert, weil Du Deinen FTP nicht auf dem Standardport 21 fährst. Per Default wird nur Port 21 vom FTP Connection Tracking Modul überwacht. Will man, daß das Modul auf andere Ports achtet, muß man diese als Modulparameter angeben.
Lad das Modul mal mit

Code: Alles auswählen

modprobe ip_conntrack_ftp ports=21,8022
und tausch die Regel

Code: Alles auswählen

iptables -I INPUT 3 -p TCP --dport 7900:8300 -j ACCEPT
gegen

Code: Alles auswählen

iptables -A INPUT -p TCP --dport 7900:8300 -m state --state ESTABLISHED, RELATED -j ACCEPT
aus.

[edit]Ach ja, Beispiele für Firewallskripte gibts in diesem Beitrag[/edit]

corax
Beiträge: 42
Registriert: 19.05.2002 15:51:59

Beitrag von corax » 20.10.2003 12:04:55

Wenn ich die Regel austausche, funktioniert passive mode nicht mehr

Benutzeravatar
spiffi
Beiträge: 1128
Registriert: 09.08.2003 19:02:27

Beitrag von spiffi » 20.10.2003 12:16:53

Hast Du auch das conntrack_ftp Modul mit den oben genannten Parametern neu geladen?

Code: Alles auswählen

rmmod ip_conntrack_ftp
modprobe ip_conntrack_ftp ports=21,8022

corax
Beiträge: 42
Registriert: 19.05.2002 15:51:59

Beitrag von corax » 20.10.2003 12:33:31

jau...das wars...uff....klappert jetzt....danke

#ftp-server mit passive mode
#iptables -I INPUT 3 -p TCP --dport 7900:8300 -j ACCEPT
iptables -A INPUT -p TCP --dport 7900:8300 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport glftpd -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport ftp-data -j ACCEPT
iptables -A OUTPUT -m tcp -p tcp --dport glftpd -j ACCEPT
iptables -A FORWARD -m tcp -p tcp -s 192.168.1.0/255.255.255.0 -i eth0 --dport glftpd -j ACCEPT

MfG,
corax

Benutzeravatar
spiffi
Beiträge: 1128
Registriert: 09.08.2003 19:02:27

Beitrag von spiffi » 20.10.2003 14:17:22

Das geht auch einfacher:

Code: Alles auswählen

iptables -A INPUT -p TCP --dport 7900:8300 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p TCP --dport glftpd -j ACCEPT
iptables -A OUTPUT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
ftp-data wird für passive FTP nicht benötigt.
Wofür soll die FORWARD Regel gut sein?

corax
Beiträge: 42
Registriert: 19.05.2002 15:51:59

Beitrag von corax » 20.10.2003 20:01:18

Ich denke mal die Forward Regel brauch ich für die Rechner im internen Netz, oder?

Benutzeravatar
spiffi
Beiträge: 1128
Registriert: 09.08.2003 19:02:27

Beitrag von spiffi » 20.10.2003 20:23:12

Du meinst, damit Rechner aus dem internen Netz auf Deinen FTP Server zugreifen können?
Nein, dafür brauchst Du keine weiteren Regeln. Und die Forward Chain wäre dafür ohnehin der falsche Ort.
Durch Forward laufen Pakete, die für nicht den Rechner selbst bestimmt sind, sondern von ihm in ein anderes Netz weitergeleitet werden (to forward -> weiterleiten). Das sind also beispielsweise Pakete, die vom internen Netz über Deinen Rechner ins Internet laufen und umgekehrt.

corax
Beiträge: 42
Registriert: 19.05.2002 15:51:59

Beitrag von corax » 21.10.2003 17:04:08

hmm...ich weiß nicht, ob ich das jetzt richtig verstehe....IP Forwarding stelle ich dann ein, wenn ich Pakete in ein anderes Netz senden will....z.B. von einer Domän in eine andere

Ungelesen
Beiträge: 18
Registriert: 23.02.2004 11:51:22

Beitrag von Ungelesen » 29.03.2004 15:33:31

spiffi hat geschrieben:

Code: Alles auswählen

modprobe ip_conntrack_ftp ports=21,8022
hi, ist zwar schon ein bischen alt hier, hatte nur gerade das gleiche prob. dank dem thread hier funzt es jetzt wohl, aber mich würd interessieren, warum noch die 8022 angeben soll?

danke....

Benutzeravatar
spiffi
Beiträge: 1128
Registriert: 09.08.2003 19:02:27

Beitrag von spiffi » 29.03.2004 17:39:12

Der ursprüngliche Poster hatte nen FTP-Server auf Port 8022 laufen.
No language can express every thought unambiguously, least of all this one. -- D. R. Hofstadter

Antworten