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

7 Gedanken zu „ProFTPD Passive Mode + IPtables freischalten

  • teco
    12. August 2013 um 14:22

    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
      14. August 2013 um 18:34

      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
        15. August 2013 um 10:15

        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
          15. August 2013 um 17:25

          Ich würde das script einfach in den Startblock des init.d Scripts von ProFTPD einbauen.

          • teco
            18. August 2013 um 13:38

            Hi Franz
            ich habe kein Startscript für proftpd, bei mir läuft das über xinetd. Wie muss die Einbindung da aussehen?

  • Simon
    21. Juli 2014 um 20:52

    Top, danke für den Tipp. Habe die hohe-Ports-Freigabe Anleitung verwendet 🙂
    Gruss

  • Folke
    20. November 2018 um 21:34

    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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind mit * gekennzeichnet.

*
*
Du kannst folgende <abbr title="HyperText Markup Language">HTML</abbr>-Tags und -Attribute verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>