Mein aktuelles Szenario beinhaltet das Zulassen verschiedener Regeln, aber ich brauche FTP, um von überall aus erreichbar zu sein. Das Betriebssystem ist Cent 5 und ich verwende VSFTPD. Die Syntax scheint nicht korrekt zu sein. Alle anderen Regeln funktionieren korrekt.
## Filter all previous rules
*filter
## Loopback address
-A INPUT -i lo -j ACCEPT
## Established inbound rule
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
## Management ports
-A INPUT -s x.x.x.x/24 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/23 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s x.x.x.x/23 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/23 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
## Allow NRPE port (Nagios)
-A INPUT -s x.x.x.x -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT
-A INPUT -s x.x.x.x -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT
##Allow FTP
## Default rules
:INPUT DROP [0:0]
:FORWARD DROP
:OUTPUT ACCEPT [0:0]
COMMIT
Die folgenden Regeln habe ich ausprobiert.
##Allow FTP
-A INPUT --dport 21 any -j ACCEPT
-A INPUT --dport 20 any -j ACCEPT
-A INPUT -p tcp --dport 21 -j ACCEPT
-A INPUT -p tcp --dport 20 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
-A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 20 -j ACCEPT
-A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 21 -j ACCEPT
-A INPUT -s 0.0.0.0/0 -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -s 0.0.0.0/0 -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
Antworten:
Hier ist das Dokument, auf das ich die Leute verweise, damit sie dem FTP-Protokoll folgen können: http://slacksite.com/other/ftp.html
Sie haben nichts bezüglich Ihrer OUTPUT-Kette in Ihrem Post, also werde ich das auch hier aufnehmen. Wenn Ihre OUTPUT-Kette default-drop ist, ist dies von Bedeutung.
Fügen Sie diese Regeln zu Ihrer iptables-Konfiguration hinzu:
Um den passiven FTP-Modus zu unterstützen, müssen Sie das ip_conntrack_ftp-Modul beim Booten laden. Kommentieren Sie die Zeile IPTABLES_MODULES in der Datei / etc / sysconfig / iptables-config aus und ändern Sie sie, um Folgendes zu lesen:
Speichern Sie die iptables-Konfiguration und starten Sie iptables neu.
Um ein Problem mit VSFTPD vollständig auszuschließen, stoppen Sie VSFTPD, vergewissern Sie sich, dass es nicht mit "netstat -a" auf Port 21 wartet, und führen Sie dann Folgendes aus:
Dadurch wird Netcat gestartet, das Port 21 abhört, und es wird eine Echoeingabe an Ihre Shell gesendet. TELNET von einem anderen Host zu Port 21 Ihres Servers und stellen Sie sicher, dass Sie eine TCP-Verbindung erhalten und die Ausgabe in der Shell angezeigt wird, wenn Sie die TELNET-Verbindung eingeben.
Zum Schluss bringen Sie VSFTPD wieder in Betrieb, vergewissern sich, dass es Port 21 überwacht, und versuchen Sie erneut, eine Verbindung herzustellen. Wenn die Verbindung zu Netcat funktioniert hat, sind Ihre Iptables-Regeln in Ordnung. Wenn die Verbindung zu VSFTPD nicht funktioniert, nachdem Netcat dies getan hat, stimmt etwas mit Ihrer VSFTPD-Konfiguration nicht.
quelle
Probieren Sie diese Regel aus. Hinweis:
$EXTIP
ist Ihre externe IP-Adresse für den FTP-Server.quelle
In meinem Fall fehlte mir das Kernelmodul ip_conntrack_ftp. Es muss geladen werden. So können Sie dies versuchen:
Fügen Sie außerdem ip_conntrack_ftp zu / etc / modules hinzu, damit es nach dem Neustart funktioniert
quelle