FTP Server - iptables - passive mode
FTP Server - iptables - passive mode
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
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
- pdreker
- Beiträge: 8298
- Registriert: 29.07.2002 21:53:30
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nürnberg
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
Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de
Jabber: pdreker@debianforum.de
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 : "
#!/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 : "
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 : "
#!/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 : "
- pdreker
- Beiträge: 8298
- Registriert: 29.07.2002 21:53:30
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nürnberg
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"...iptables -A INPUT -m tcp -p tcp --dport glftpd -j ACCEPT
Patrick
PS: Ja ich weiss, das es jetzt geht...
P.
Definitely not a bot...
Jabber: pdreker@debianforum.de
Jabber: pdreker@debianforum.de
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
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
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
und tausch die Regel
gegen
aus.
[edit]Ach ja, Beispiele für Firewallskripte gibts in diesem Beitrag[/edit]
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
Code: Alles auswählen
iptables -I INPUT 3 -p TCP --dport 7900:8300 -j ACCEPT
Code: Alles auswählen
iptables -A INPUT -p TCP --dport 7900:8300 -m state --state ESTABLISHED, RELATED -j ACCEPT
[edit]Ach ja, Beispiele für Firewallskripte gibts in diesem Beitrag[/edit]
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
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
#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
Das geht auch einfacher:
ftp-data wird für passive FTP nicht benötigt.
Wofür soll die FORWARD Regel gut sein?
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
Wofür soll die FORWARD Regel gut sein?
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.
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.
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?spiffi hat geschrieben:Code: Alles auswählen
modprobe ip_conntrack_ftp ports=21,8022
danke....