FTP mit IPTables zulassen

FTP mit IPTables zulassen

In meinem aktuellen Szenario sind verschiedene Regeln zulässig, aber ich brauche FTP, damit es von überall aus zugänglich ist. Das Betriebssystem ist Cent 5 und ich verwende VSFTPD. Ich scheine die Syntax nicht richtig hinzubekommen. Alle anderen Regeln funktionieren ordnungsgemäß.

## 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

Im Folgenden sind die Regeln aufgeführt, die ich ausprobiert habe.

##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

Antwort1

Hier ist das Dokument, auf das ich die Leute verweise, damit sie das FTP-Protokoll befolgen können:http://slacksite.com/other/ftp.html

  • Um FTP im aktiven Modus auszuführen, müssen Sie eingehende Verbindungen zum TCP-Port 21 und ausgehende Verbindungen vom Port 20 zulassen.
  • Um FTP im passiven Modus zu nutzen, müssen Sie eingehende Verbindungen zum TCP-Port 21 und eingehende Verbindungen zu einem zufällig generierten Port auf dem Servercomputer zulassen (wofür die Verwendung eines Conntrack-Moduls im Netfilter erforderlich ist).

In Ihrem Beitrag steht nichts zu Ihrer OUTPUT-Kette, also werde ich das hier auch einschließen. Wenn Ihre OUTPUT-Kette standardmäßig gelöscht ist, ist das wichtig.

Fügen Sie Ihrer iptables-Konfiguration diese Regeln hinzu:

iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT

Um den passiven FTP-Modus zu unterstützen, müssen Sie beim Booten das Modul ip_conntrack_ftp laden. Entfernen Sie die Kommentarzeichen aus der Zeile IPTABLES_MODULES in der Datei /etc/sysconfig/iptables-config und ändern Sie sie wie folgt:

IPTABLES_MODULES="ip_conntrack_ftp"

Speichern Sie die iptables-Konfiguration und starten Sie iptables neu.

service iptables save
service iptables restart

Um VSFTPD als Problem vollständig auszuschließen, stoppen Sie VSFTPD, überprüfen Sie mit „netstat -a“, dass es nicht auf Port 21 lauscht, und führen Sie dann Folgendes aus:

nc -l 21

Dadurch wird Netcat gestartet, das auf Port 21 lauscht, und die Eingabe wird an Ihre Shell ausgegeben. Von einem anderen Host aus können Sie per TELNET eine Verbindung zu Port 21 Ihres Servers herstellen und überprüfen, ob Sie eine TCP-Verbindung erhalten und die Ausgabe in der Shell sehen, wenn Sie die TELNET-Verbindung eingeben.

Starten Sie VSFTPD abschließend wieder, stellen Sie sicher, dass es auf Port 21 lauscht, 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 nach Netcat nicht funktioniert, stimmt etwas mit Ihrer VSFTPD-Konfiguration nicht.

Antwort2

Versuchen Sie diese Regel. Hinweis: $EXTIPist Ihre externe IP-Adresse für den FTP-Server.

-A INPUT -i $EXTIP -m state --state NEW,ESTABLISHED,RELATED -p TCP -s 0.0.0.0 -d $EXTIP --dport 21 -j ACCEPT

Antwort3

In meinem Fall fehlte das Kernelmodul ip_conntrack_ftp. Es muss geladen werden. Du kannst also Folgendes versuchen:

modprobe ip_conntrack_ftp

Und fügen Sie auch ip_conntrack_ftp zu /etc/modules hinzu, damit es nach dem Neustart funktioniert

verwandte Informationen