Die FTP-Verbindungsverfolgung von iptables funktioniert nicht

Die FTP-Verbindungsverfolgung von iptables funktioniert nicht

Ich hoffe, dass mir hier jemand den richtigen Weg weisen kann.

Ausführen von proftpd (mit TLS-Unterstützung) auf einer öffentlichen IP.

Der FTP-Client stellt eine Verbindung her, kann aber keine Verzeichnisliste erstellen. Wenn ich die „INPUT“-Richtlinie in iptables auf ACCEPT ändere, funktioniert es.

Im Folgenden sind meine relevanten iptables-Regeln aufgeführt:

$IPTABLES -A INPUT -i eno1 -s 0/0 -d x.x.x.x -p tcp --sport 1024:65535 -m multiport --dports 20,21,989,990 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d x.x.x.x --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

Ich habe die Connection_Tracking-Module aktiviert.

server ~ # lsmod | grep nf_conntra
nf_conntrack_ftp       24576  3
nf_conntrack          176128  8 xt_conntrack,nf_nat,xt_state,xt_nat,xt_helper,nf_conntrack_ftp,xt_CT,xt_MASQUERADE
nf_defrag_ipv6         24576  1 nf_conntrack
nf_defrag_ipv4         16384  1 nf_conntrack
libcrc32c              16384  2 nf_conntrack,nf_nat

Ich habe auch nf_conntrack_helper in /proc aktiviert

server ~ # cat /proc/sys/net/netfilter/nf_conntrack_helper
1

Antwort1

proftpd (mit TLS-Unterstützung)

Diese TLS-Unterstützung ist wahrscheinlich der Übeltäter.

Normalerweise müssen Sie in einer intelligenten Firewall, wenn Sie FTP zulassen, den Port für die Steuerverbindung öffnen, TCP 21. Anschließend können die Conntrack-Module im Klartext-FTP-Protokoll nach der PORTAntwort suchen und diese erkennen. Ein FTP-Conntrack-Hilfsmodul öffnet dann automatisch die Portnummer, die vom FTP-Server diesem bestimmten Client zugewiesen wird, und ermöglicht so eine sehr detaillierte Zugriffskontrolle.

Wenn die Verbindung mit TLS verschlüsselt ist, kann die Firewall die PORT-Antwort nicht mehr erkennen und öffnet daher den zugewiesenen Port nicht automatisch. Die Lösung hierfür ist:

  • Beschränken Sie den Portbereich, den der FTP-Server für passive Verbindungen verwendet, auf einen kleinen Bereich
    PassivePorts min-pasv-port max-pasv-port

  • Öffnen Sie in Ihrer Firewall sowohl Port 21 als auch den festgelegten Portbereich für Datenverbindungen

verwandte Informationen