it-swarm.com.de

Iptables, um eingehendes FTP zuzulassen

Ich möchte eingehenden FTP-Verkehr zulassen.

CentOS 5.4:

Das ist mein /etc/sysconfig/iptables Datei.

# Generated by iptables-save v1.3.5 on Thu Oct  3 21:23:07 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [133:14837]
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -p tcp -m tcp --sport 20 -j ACCEPT
COMMIT
# Completed on Thu Oct  3 21:23:07 2013

Außerdem wird standardmäßig das Modul ip_conntrack_netbios_n geladen.

#service iptables restart

Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading iptables modules:                                [  OK  ]
Applying iptables firewall rules:                          [  OK  ]
Loading additional iptables modules: ip_conntrack_netbios_n[  OK  ]

Aber das Problem ist nicht mit diesem Modul, da ich versucht habe, es zu entladen und immer noch kein Glück.

Wenn ich iptables deaktiviere, kann ich mein Backup von einem anderen Computer auf FTP übertragen. Wenn iptables erzwungen wird, ist die Übertragung fehlgeschlagen.

33
Being Gokul

Das Hinzufügen von NEW hat es behoben, glaube ich.

Jetzt sieht meine iptables-Datei so aus.

# Generated by iptables-save v1.3.5 on Thu Oct  3 22:25:54 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [824:72492]

-A INPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 20:65535 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 20:65535 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Thu Oct  3 22:25:54 2013

Tippe es als Antwort, da zu viele Zeichen in Kommentaren nicht erlaubt sind. Vielen Dank für deine Hilfe.

5
Being Gokul

Ihr FTP-Server benötigt einen Kanal zum Übertragen von Daten. Port 21 Wird zum Herstellen der Verbindung verwendet. Um die Datenübertragung zu ermöglichen, müssen Sie auch Port 20 Aktivieren. Siehe folgende Konfiguration

Laden Sie zuerst das folgende Modul, um sicherzustellen, dass passive FTP-Verbindungen nicht abgelehnt werden

modprobe ip_conntrack_ftp

Zulassen von eingehenden und ausgehenden FTP-Verbindungen an Port 21

iptables -A INPUT  -p tcp -m tcp --dport 21 -m conntrack --ctstate ESTABLISHED,NEW -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
iptables -A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"

Erlaube FTP-Port 20 Für aktive eingehende und ausgehende Verbindungen

iptables -A INPUT  -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
iptables -A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"

Zuletzt erlauben Sie passiven eingehenden FTP-Verkehr

iptables -A INPUT  -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections"
iptables -A OUTPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow passive inbound connections"

Weitere Informationen zu FTP- und Firewall-Problemen finden Sie unter: http://slacksite.com/other/ftp.html#active

Bearbeiten: NEW zur Eingaberegel für Port 21 hinzugefügt.

27

Ich habe so umfangreiche Regeln bereits in mehreren Blogs usw. gesehen und mich gefragt, warum ich sie nicht einfach verwenden soll

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

zusammen mit dem Modul nf_conntrack_ftp. Dies ist präziser und lesbarer, was im Allgemeinen eine gute Sache ist, insbesondere bei Firewalls ...

FWIW, es scheint, dass es eine Änderung in Kernel 4.7 gab, so dass Sie entweder net.netfilter.nf_conntrack_helper=1 Über sysctl setzen müssen (z. B. in /etc/sysctl.d/conntrack.conf Einfügen) oder verwenden müssen

iptables -A PREROUTING -t raw -p tcp --dport 21 -j CT --helper ftp

(siehe hier für weitere Details)

15
Jakob

FTP-Client :

lsmod | grep ftp
modprobe nf_conntrack_ftp
lsmod | grep ftp
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

FTP-SERVER :

lsmod | grep ftp
modprobe nf_conntrack_ftp
lsmod | grep ftp
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Umschalten zwischen passivem und aktivem Modus auf der Clientseite

ftp> passive
Passive mode on.
ftp> passive
Passive mode off.
6
Sathish

Wenn Sie sowohl aktive als auch passive Verbindungen benötigen und bereits ESTABLISHED -Verbindungen akzeptieren, z.

iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

Dann müssen Sie nur noch Port 21 öffnen und eine spezielle Regel für passive Ports hinzufügen. Für Port 20 wird keine Regel benötigt, da diese bereits von der obigen Regel ESTABLISHED akzeptiert wird.

Akzeptieren Sie zuerst neue Verbindungen auf port 21:

iptables -A INPUT -p tcp --dport 21 -j ACCEPT

Fügen Sie dann den CT-Helfer für passive Ports hinzu 1024::

iptables -A PREROUTING -t raw -p tcp --dport 21 -j CT --helper ftp
iptables -A INPUT -p tcp -m conntrack --ctstate RELATED -m helper --helper ftp --dport 1024: -j ACCEPT

Siehe auch:

Hinweis: Sie müssen das 1024: wie auf Ihrem FTP-Server: Suchen Sie in Ihrer FTP-Konfiguration nach den passiven Standardports. Andernfalls würden Sie zu viele Ports öffnen, die möglicherweise nicht FTP-relativ sind.

Wichtiger Hinweis: Ich habe keine OUTPUT Regeln hinzugefügt, da meine Standardeinstellungen mit iptables -P OUTPUT ACCEPT. Das heißt, ich vertraue darauf, was aus meiner Box kommt. Dies ist möglicherweise keine gute Option, insbesondere in einem NAT Setup).

Sehr wichtiger Hinweis: FTPS funktioniert mit einem solchen Setup nicht, da der passive Port versteckt (verschlüsselt) ist und daher iptables, um den guten Port zu erraten. Siehe Ändern von IPTables, um FTP über TLS mithilfe passiver Ports zuzulassen und https://serverfault.com/questions/811431/are-my-iptables-for-ftps-with-tls-ok

0
Yvan