iptables Regeln für FTP passive mode

Departet

Lieutenant
Registriert
Sep. 2008
Beiträge
765
Moin!

Hat jemand zufällig die passenden iptables Regeln für den FTP passive mode? Im Netz findet man natürlich vieles, vieles scheint sich aber auch geändert zu haben. Der Server läuft (aktuell) klassisch auf Port 21.
Soweit ich weiß, wird das Modul nf_conntrack_ftp benötigt. Dieses ist bereits aktiviert.
Bash:
# > lsmod | grep nf_conntrack_ftp
nf_conntrack_ftp       24576  0
nf_conntrack          188416  6 xt_conntrack,nf_nat,xt_nat,nf_conntrack_netlink,nf_conntrack_ftp,xt_MASQUERADE
 
Nicht aus dem Hut, aber das ist ein Paradebeispiel für ein LLM.
Im Groben: Port 21 und die Datenportrange eingehend freigeben und via DNAT auf den Zielserver leiten, sofern das nicht dieselbe Maschine ist.
 
Läuft!
Ja! Für passive FTP-Verbindungen musst du neben Port 21 auch die dynamisch zugewiesenen Datenports für den passiven Modus öffnen. Hier sind die iptables-Befehle:

1️⃣​

Bash:
iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT<br>iptables -A OUTPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
2️⃣
Falls dein FTP-Server auf einen bestimmten Portbereich für passive Verbindungen beschränkt ist (z. B. 40000-50000), öffne diesen Bereich:
Bash:
iptables -A INPUT -p tcp --dport 40000:50000 -m state --state NEW,ESTABLISHED -j ACCEPT<br>iptables -A OUTPUT -p tcp --sport 40000:50000 -m state --state ESTABLISHED -j ACCEPT

3️⃣​

Falls dein System das nf_conntrack_ftp-Modul unterstützt, lade es, damit iptables automatisch dynamische FTP-Datenverbindungen erkennt:
Bash:
modprobe nf_conntrack_ftp
Falls es dauerhaft geladen bleiben soll:
Bash:
echo "nf_conntrack_ftp" >> /etc/modules

4️⃣​

Je nach Distribution kannst du die Regeln speichern:
  • Debian/Ubuntu:
    Bash:
    netfilter-persistent save
  • CentOS/RHEL:
    Bash:
    service iptables save
Falls dein FTP-Server andere passive Ports verwendet, musst du den Bereich entsprechend anpassen. 🚀

Die Port-Range habe ich auf 1024: angepasst.
 
d.h. du hast jetzt eine INPUT regel, die port 1024 und grösser für NEW,ESTABLISHED
erlaubt? da kann man die firewall dann ja auch fast weglassen...
 
  • Gefällt mir
Reaktionen: sikarr und nutrix
hi,
zeig mal bitte die nun gesetze Regel
 
Nur mal so, ein ungesichertes FTP würde ich heute so in einem Netzwerk aus Sicherheitsgründen nicht mehr zulassen.
 
  • Gefällt mir
Reaktionen: Mac_Leod und sikarr
Oh Gott ihr habt Recht... Zum Glück habe ich den Server neu gestartet ohne die iptables vorher zu sichern :O
Dann klappt es leider auch nicht mehr :(

@nutrix das ist mir bewusst. Für den Anwendungsfall gibt es leider keine Alternative.

EDIT:
Was jetzt aktiv ist und nicht funktioniert:
Bash:
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# > lsmod | grep nf_conntrack_ftp
nf_conntrack_ftp       24576  0
nf_conntrack          188416  6 xt_conntrack,nf_nat,xt_nat,nf_conntrack_netlink,nf_conntrack_ftp,xt_MASQUERADE
 
Zuletzt bearbeitet:
Sehr günstige Überwachungskamera eines Bekannten -> die kann leider nur FTP
Ist eine Ctronics IPCAM irgendwas (Device Type: C6F0SgZ3N0PdL2)

EDIT:
Funktionierende iptables Config

Bash:
-A PREROUTING -p tcp -m tcp --dport 21 -j CT --helper ftp
-A INPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate RELATED,ESTABLISHED -m helper --helper ftp -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate RELATED,ESTABLISHED -m helper --helper ftp -j ACCEPT
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: nutrix
Dann würde ich zumindest noch die Source IP Beschränken um nicht komplett Offen dazustehen.
 
Zurück
Oben