ProFTPD Passive Mode + IPtables freischalten
Kleine Stolperfalle: In ProFTPD ist per Default der „Passive Mode“ deaktiviert.
Sieht dann so aus:
Antwort: 227 Entering Passive Mode (78,46,247,91,245,27).
Befehl: MLSD
Fehler: Zeitüberschreitung der Verbindung
Fehler: Verzeichnisinhalt konnte nicht empfangen werden
Dieser wird in „/etc/proftpd/proftpd.conf“ mit dem auskommentieren von
PassivePorts 49152 65534
aktiviert. Noch ein beherzter
service proftpd restart
Weiteres Problem: IPtables blocken natürlich alles – wenn man seine Firewall gut eingestellt hat. Dazu einfach folgendes in „/etc/default/iptables“ ein:
-A INPUT -p tcp --destination-port 49152:65534 -j ACCEPT
und ein:
service iptables restart
NACHTRAG
Wem die Highport Freigabe zu riskant ist, kann mittels dem Modul „ip_conntrack_ftp“ das ganze umgehen:
In der proftpd.conf den Port entsprechend einstellen, z.B.
...
Port 42142
...
Und ein kleines Shellscript zum öffnen der Ports
#!/bin/bash
modprobe ip_conntrack_ftp
#FTP
iptables -A INPUT -p tcp --dport 42142 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 42142 -j ACCEPT
teco
Hallo
dein Kommentar hat mir weitergeholfen einen nicht lauffähigen PLESK 11.5 proftpd Server zum Laufen zu bekommen.
Was mich verwundert: früher habe ich die iptables Firewall Config nicht gebraucht und trotzdem ging FTP.
Ist das nicht ein großes Sicherheitsrisiko dermaßen viele Ports zu „öffnen“?
Wäre dir dankbar wenn du das kurz erläutern kannst aus Sicherheitsaspekten.
Danke Teco
Franz Kinader
Hi,
aus meiner Sicht habe ich mittels fail2ban (mit 1 Fehllogin -> Aussperren für 1000 Minuten) eine recht gute Sicherheit und alle Pakete werden mittels IPtables von der IP Adresse einfach gedropped.
Aber ich habe etwas rumexperementiert und meinen Beitrag aktualisiert 🙂
LG
teco
Hi,
danke für die Ergänzung, prima.
Wie baue ich das Shell Script genau ein?
Nutze Debian Wheezy und Plesk 11.5.30.
Franz Kinader
Ich würde das script einfach in den Startblock des init.d Scripts von ProFTPD einbauen.
teco
Hi Franz
ich habe kein Startscript für proftpd, bei mir läuft das über xinetd. Wie muss die Einbindung da aussehen?
Simon
Top, danke für den Tipp. Habe die hohe-Ports-Freigabe Anleitung verwendet 🙂
Gruss
Folke
Bei ip_conntrack_ftp (oder nf_conntrack_ftp) reicht es aber den Port 21 zu öffnen, das aufmachen von 42142 (aus- wie eingehend) wie im Beispiel ist nicht nötig.
Wichtig aber ist dann vor allem das hier:
# iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
Der Kernel liest mit, sieht den „PASV“ Befehl und den Port, den sich dort der FTP-Server ausgedacht hat und öffnet diesen, da RELATED.
Klappt leider nicht mit mit TLS, denn dann kann keiner mehr mitlesen.
VG