Plesk Firewall macht Probleme bei FTP Verbindungen

TheRoody

Member
Hallo allerseits, ich habe meine Plesk Firewall aktiv, es ist soweit auch alles OK und keine Probleme. Außer leider bei FTP-Verbindungen eingehend und ausgehend.

Wenn sich ein Benutzer in seinen Account via. FTP einloggen möchte, dann dauert es sehr lange bis die Ordner aufgelistet werden. Dies ist das 1. Problem.

Das 2. Problem, welches ich gerade bemerkte ist, dass wenn sich der Server Ausgehend auf einen anderen FTP-Server verbinden will bsp.:

curl -v -P - -u ftp_user ftp://a.host.de/ordner1/ordner2/

kann dieser auch nicht aufgelistet werden, irgendwann erfolgt ein Timeout.

Leider kann ich auch den FTP-Speicher für die Backups nicht einrichten, weil die Ordner nicht aufgelistet werden können.

Wenn ich die Firewall deaktiviere klappt FTP in beide Richtungen ohne Probleme.

Wenn die Firewall aktiv ist, ist FTP eingehend und auch ausgehend zugelassen.

Wie kann ich das Problem lösen, ohne die komplette Firewall deaktivieren zu müssen? Und warum macht FTP solche Probleme wenn die Firewall aktiv ist obwohl FTP zugelassen ist?

Code:
root@**** ~ # curl -v -P - -u ftp_user ftp://a.host.de/ordner1/ordner2/
Enter host password for user 'ftp_user':
* Hostname was NOT found in DNS cache
*   Trying ***.**.***.**...
* Connected to a.host.de (***.**.***.**) port 21 (#0)
< 220 DiskStation FTP server ready.
> USER ftp_user
< 331 Password required for ftp_user.
> PASS *********
< 230 User ftp_user logged in.
> PWD
< 257 "/" is current directory.
* Entry path is '/'
> CWD ordner1
* ftp_perform ends with SECONDARY: 0
< 250 CWD command successful.
> CWD ordner1
< 250 CWD command successful.
* Hostname was NOT found in DNS cache
> EPRT |1|***.**.***.**|57503|
< 200 EPRT command successful.
* Connect data stream actively
> TYPE A
< 200 Type set to A.
> LIST
< 425 Can't build data connection: Connection timed out.
* RETR response: 425
* Remembering we are in dir "ordner1/ordner2/"
* Connection #0 to host a.host.de left intact
curl: (19) RETR response: 425

Vielen Dank!
 
Moin
FTP verwendet 2 Verbindungen (Command- und Data-Channel)
Deine Firewall erlaubt nur den Command-Channel. Der Data-Channel wird blockiert.

Zusätzlich aht FTP auch noch 2 Betriebsmodi für den Data-Channel (Stw.: active/passive FTP).

Für FTP kannst Du das Connection Tracking in der Firewall verwenden (conntrack, conntrack-ftp Modul).
Wenn Du auch FTPS verwenden willst, musst Du in deiner FTPD-Konfig noch einen Passive-Range festlegen und den Range dann in der Firewall freigeben und per passive FTP auf deinen Server zugreifen.
 
Hi, in der /usr/local/psa/var/modules/firewall/firewall-active.sh ist u.a. dieser Eintrag vorhanden

Code:
apply_rule /sbin/iptables -A INPUT -p tcp --dport 21 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 21 -j ACCEPT

edit:

Genau, diese Seite habe ich auch gefunden. Und ich habe in der ...firewall-active.sh

Code:
IPTABLES_MODULES="ip_conntrack_ftp"

hinzugefügt, aber eine Verbindung klappte danach immer noch nicht.
 
Passive FTP geht sowohl mit TLS als auch ohne.

Liste doch mal die Regeln in der Shell.
 
Last edited by a moderator:
1. Wird conntrack geladen?
Prüfe das mit lsmod | grep conntrack

2. Poste bitte mal deine Regeln von iptables
 
Genau, "lsmod | grep conntrack" habe ich auch eingegeben, die Eingabe wird auch angenommen, aber es erscheint keine Ausgabe.

Hier die komplette firewall-active.sh

Code:
#!/bin/bash
#ATTENTION!
#
#DO NOT MODIFY THIS FILE BECAUSE IT WAS GENERATED AUTOMATICALLY,
#SO ALL YOUR CHANGES WILL BE LOST THE NEXT TIME THE FILE IS GENERATED.

set -e

echo 0 > /proc/sys/net/ipv4/ip_forward
([ -f /var/lock/subsys/ipchains ] && /etc/init.d/ipchains stop) >/dev/null 2>&1 || true
(rmmod ipchains) >/dev/null 2>&1 || true

apply_rule()
{
	iptables_bin="$1"
	shift

	iptables_version=`/sbin/iptables --version | awk -F '.' '{print $2$3}'`

	# Use the native --wait option since v1.4.20
	if [ $iptables_version -gt 420 ]; then
		$iptables_bin -w $@ 2>/dev/null
		return $?
	fi

	# Emulate --wait for elderly versions
	for i in `seq 10`; do
		$iptables_bin $@ 2>&1 | grep -q xtable || return 0
		sleep 1
	done

	return 1
}

/sbin/iptables-save  -t filter | grep -- "-A INPUT" |  grep -v "fail2ban-\|f2b-" | sed -e "s#^-A#apply_rule /sbin/iptables -D#g" | xargs -0 echo -e "`declare -f apply_rule`\n" | /bin/bash

apply_rule /sbin/iptables -F FORWARD
apply_rule /sbin/iptables -F OUTPUT
apply_rule /sbin/iptables -Z FORWARD
apply_rule /sbin/iptables -Z OUTPUT

apply_rule /sbin/iptables -P INPUT DROP
apply_rule /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
apply_rule /sbin/iptables -A INPUT -p tcp ! --syn  -m state --state NEW -j REJECT --reject-with tcp-reset
apply_rule /sbin/iptables -A INPUT -m state --state INVALID -j DROP
apply_rule /sbin/iptables -P OUTPUT DROP
apply_rule /sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
apply_rule /sbin/iptables -A OUTPUT -p tcp ! --syn  -m state --state NEW -j REJECT --reject-with tcp-reset
apply_rule /sbin/iptables -A OUTPUT -m state --state INVALID -j DROP
apply_rule /sbin/iptables -P FORWARD DROP
apply_rule /sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
apply_rule /sbin/iptables -A FORWARD -p tcp ! --syn  -m state --state NEW -j REJECT --reject-with tcp-reset
apply_rule /sbin/iptables -A FORWARD -m state --state INVALID -j DROP

apply_rule /sbin/iptables -A INPUT -i lo  -j ACCEPT
apply_rule /sbin/iptables -A OUTPUT -o lo -j ACCEPT
apply_rule /sbin/iptables -A FORWARD -i lo -o lo -j ACCEPT

apply_rule /sbin/iptables -t mangle -F
apply_rule /sbin/iptables -t mangle -Z
apply_rule /sbin/iptables -t mangle -P PREROUTING ACCEPT
apply_rule /sbin/iptables -t mangle -P OUTPUT ACCEPT
apply_rule /sbin/iptables -t mangle -P INPUT ACCEPT
apply_rule /sbin/iptables -t mangle -P FORWARD ACCEPT
apply_rule /sbin/iptables -t mangle -P POSTROUTING ACCEPT

/sbin/ip6tables-save  -t filter | grep -- "-A INPUT" |  grep -v "fail2ban-\|f2b-" | sed -e "s#^-A#apply_rule /sbin/ip6tables -D#g" | xargs -0 echo -e "`declare -f apply_rule`\n" | /bin/bash

apply_rule /sbin/ip6tables -F FORWARD
apply_rule /sbin/ip6tables -F OUTPUT
apply_rule /sbin/ip6tables -Z FORWARD
apply_rule /sbin/ip6tables -Z OUTPUT

apply_rule /sbin/ip6tables -P INPUT DROP
apply_rule /sbin/ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp ! --syn  -m state --state NEW -j REJECT --reject-with tcp-reset
apply_rule /sbin/ip6tables -A INPUT -m state --state INVALID -j DROP
apply_rule /sbin/ip6tables -P OUTPUT DROP
apply_rule /sbin/ip6tables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
apply_rule /sbin/ip6tables -A OUTPUT -p tcp ! --syn  -m state --state NEW -j REJECT --reject-with tcp-reset
apply_rule /sbin/ip6tables -A OUTPUT -m state --state INVALID -j DROP
apply_rule /sbin/ip6tables -P FORWARD DROP
apply_rule /sbin/ip6tables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
apply_rule /sbin/ip6tables -A FORWARD -p tcp ! --syn  -m state --state NEW -j REJECT --reject-with tcp-reset
apply_rule /sbin/ip6tables -A FORWARD -m state --state INVALID -j DROP

apply_rule /sbin/ip6tables -A INPUT -i lo  -j ACCEPT
apply_rule /sbin/ip6tables -A OUTPUT -o lo -j ACCEPT
apply_rule /sbin/ip6tables -A FORWARD -i lo -o lo -j ACCEPT

apply_rule /sbin/ip6tables -t mangle -F
apply_rule /sbin/ip6tables -t mangle -Z
apply_rule /sbin/ip6tables -t mangle -P PREROUTING ACCEPT
apply_rule /sbin/ip6tables -t mangle -P OUTPUT ACCEPT
apply_rule /sbin/ip6tables -t mangle -P INPUT ACCEPT
apply_rule /sbin/ip6tables -t mangle -P FORWARD ACCEPT
apply_rule /sbin/ip6tables -t mangle -P POSTROUTING ACCEPT


apply_rule /sbin/iptables -t nat -F
apply_rule /sbin/iptables -t nat -Z
apply_rule /sbin/iptables -t nat -P PREROUTING ACCEPT
apply_rule /sbin/iptables -t nat -P OUTPUT ACCEPT
apply_rule /sbin/iptables -t nat -P POSTROUTING ACCEPT

apply_rule /sbin/iptables -A INPUT -p udp --dport 137 -j DROP
apply_rule /sbin/ip6tables -A INPUT -p udp --dport 137 -j DROP

apply_rule /sbin/iptables -A INPUT -p tcp --dport 111 -j DROP
apply_rule /sbin/iptables -A INPUT -p udp --dport 111 -j DROP
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 111 -j DROP
apply_rule /sbin/ip6tables -A INPUT -p udp --dport 111 -j DROP

apply_rule /sbin/iptables -A INPUT -p tcp --dport 49587 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 49587 -j ACCEPT

apply_rule /sbin/iptables -A INPUT -p tcp --dport 12443 -j DROP
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 12443 -j DROP

apply_rule /sbin/iptables -A INPUT -p tcp --dport 11443 -j ACCEPT
apply_rule /sbin/iptables -A INPUT -p tcp --dport 11444 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 11443 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 11444 -j ACCEPT

apply_rule /sbin/iptables -A INPUT -p tcp --dport 8447 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 8447 -j ACCEPT

apply_rule /sbin/iptables -A INPUT -p tcp --dport 8443 -j ACCEPT
apply_rule /sbin/iptables -A INPUT -p tcp --dport 8880 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 8443 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 8880 -j ACCEPT

apply_rule /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
apply_rule /sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT

apply_rule /sbin/iptables -A INPUT -p tcp --dport 21 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 21 -j ACCEPT

IPTABLES_MODULES="ip_conntrack_ftp"

apply_rule /sbin/iptables -A INPUT -p tcp --dport 22 -j DROP
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 22 -j DROP

apply_rule /sbin/iptables -A INPUT -p tcp --dport 587 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 587 -j ACCEPT

apply_rule /sbin/iptables -A INPUT -p tcp --dport 25 -j ACCEPT
apply_rule /sbin/iptables -A INPUT -p tcp --dport 465 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 25 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 465 -j ACCEPT

apply_rule /sbin/iptables -A INPUT -p tcp --dport 110 -j DROP
apply_rule /sbin/iptables -A INPUT -p tcp --dport 995 -j DROP
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 110 -j DROP
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 995 -j DROP

apply_rule /sbin/iptables -A INPUT -p tcp --dport 143 -j ACCEPT
apply_rule /sbin/iptables -A INPUT -p tcp --dport 993 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 143 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 993 -j ACCEPT

apply_rule /sbin/iptables -A INPUT -p tcp --dport 106 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 106 -j ACCEPT

apply_rule /sbin/iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 3306 -j ACCEPT

apply_rule /sbin/iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 5432 -j ACCEPT

apply_rule /sbin/iptables -A INPUT -p tcp --dport 9008 -j ACCEPT
apply_rule /sbin/iptables -A INPUT -p tcp --dport 9080 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 9008 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 9080 -j ACCEPT

apply_rule /sbin/iptables -A INPUT -p udp --dport 137 -j DROP
apply_rule /sbin/iptables -A INPUT -p udp --dport 138 -j DROP
apply_rule /sbin/iptables -A INPUT -p tcp --dport 139 -j DROP
apply_rule /sbin/iptables -A INPUT -p tcp --dport 445 -j DROP
apply_rule /sbin/ip6tables -A INPUT -p udp --dport 137 -j DROP
apply_rule /sbin/ip6tables -A INPUT -p udp --dport 138 -j DROP
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 139 -j DROP
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 445 -j DROP

apply_rule /sbin/iptables -A INPUT -p udp --dport 1194 -j DROP
apply_rule /sbin/ip6tables -A INPUT -p udp --dport 1194 -j DROP

apply_rule /sbin/iptables -A INPUT -p udp --dport 53 -j ACCEPT
apply_rule /sbin/iptables -A INPUT -p tcp --dport 53 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p udp --dport 53 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p tcp --dport 53 -j ACCEPT

apply_rule /sbin/ip6tables -A INPUT -p icmpv6 --icmpv6-type 134/0 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p icmpv6 --icmpv6-type 135/0 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p icmpv6 --icmpv6-type 136/0 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p icmpv6 --icmpv6-type 137/0 -j ACCEPT

apply_rule /sbin/iptables -A INPUT -p icmp --icmp-type 8/0 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p icmpv6 --icmpv6-type 128/0 -j ACCEPT
apply_rule /sbin/ip6tables -A INPUT -p icmpv6 --icmpv6-type 129/0 -j ACCEPT

apply_rule /sbin/iptables -A INPUT -j DROP
apply_rule /sbin/ip6tables -A INPUT -j DROP

apply_rule /sbin/iptables -A OUTPUT -j ACCEPT
apply_rule /sbin/ip6tables -A OUTPUT -j ACCEPT

apply_rule /sbin/iptables -A FORWARD -j DROP
apply_rule /sbin/ip6tables -A FORWARD -j DROP

echo 1 > /proc/sys/net/ipv4/ip_forward
#
# End of script
#

Vielleicht habe ich IPTABLES_MODULES="ip_conntrack_ftp" an eine falsche stelle hinzugefügt?
 
Ich habe nun die Passiven Port-Bereich in der .conf von ProFTPD eingetragen und den Port-Bereich auch in der Firewall eingetragen.

Aber leider kann ich mich von dem Server via. FTP immer noch nicht auf meinen NAS verbinden.

In der /etc/proftpd.conf habe ich eingetragen

<Global>
......
PassivePorts ***** *****
<Global>

Diesen Bereich habe ich dann auch in der Firewall freigegeben
 
Last edited by a moderator:
Moin
Wir haben bisher über deinen Server geredet.
Das ganze musst Du natürlich auch mit deinem NAS machen.

Also NAS für passive FTP einrichten und entsprechende Portweiterleitungen in deinem Router einrichten (bei IPv4).
 
Hallo zusammen,

ich musste mich gerade per FTP auf einen Account einloggen im Webseiten Daten hochzuladen. Leider kann ich mich nicht per FTP Verbinden.

Im FTP Programm (Transmit) ist der Passive Modus aktiv. Muss ich bei den Verbindungsdaten unter "Port" nun einen anderen angeben als 21?

Transmit gibt mir immer diese Fehlermeldung:

Verbindung mit Server „xxxx.de“ konnte nicht hergestellt werden.

Fehler -203: miscellaneous error occurred while trying to login to the host

Die Firewall auf dem Server habe ich zum test mal deaktiviert, aber die Verbindung klappt trotzdem nicht.

Danke euch
 
Back
Top