it-swarm.com.de

Zulassen von FTP mit IPTables

In meinem aktuellen Szenario sind verschiedene Regeln zulässig, aber ich benötige FTP, um von überall aus darauf zugreifen zu können. Das Betriebssystem ist Cent 5 und ich verwende VSFTPD. Ich kann die Syntax nicht richtig verstehen. 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
26
IOTAMAN

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

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

Sie haben nichts bezüglich Ihrer OUTPUT-Kette in Ihrem Beitrag, also werde ich das auch hier aufnehmen. Wenn Ihre OUTPUT-Kette standardmäßig gelöscht ist, ist dies wichtig.

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

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

Um FTP im passiven Modus zu unterstützen, müssen Sie das Modul ip_conntrack_ftp beim Booten laden. Kommentieren Sie die Zeile IPTABLES_MODULES in der Datei/etc/sysconfig/iptables-config aus 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, stellen Sie sicher, dass Port 21 nicht mit einem "netstat -a" überwacht wird, und führen Sie dann Folgendes aus:

nc -l 21

Dadurch wird Netcat über Port 21 abgehört und die Eingabe in Ihre Shell wird wiederholt. Von einem anderen Host aus TELNET an Port 21 Ihres Servers und stellen Sie sicher, dass Sie eine TCP -Verbindung) erhalten und dass die Ausgabe in der Shell angezeigt wird, wenn Sie die TELNET-Verbindung eingeben.

Stellen Sie abschließend VSFTPD wieder her, überprüfen Sie, ob Port 21 überwacht wird, 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.

41
Evan Anderson

Versuchen Sie diese Regel. Hinweis: $EXTIP ist 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
0
Matt

In meinem Fall fehlte mir das Kernelmodul ip_conntrack_ftp. Es muss geladen werden. Sie können dies also versuchen:

modprobe ip_conntrack_ftp

Fügen Sie außerdem ip_conntrack_ftp zu/etc/modules hinzu, damit es nach dem Neustart funktioniert

0
Kornel