Ich möchte eingehenden FTP-Verkehr zulassen.
CentOS 5.4:
Dies ist meine /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 ]
Das Problem liegt jedoch nicht bei diesem Modul, da ich versucht habe, es zu entladen, aber trotzdem kein Glück hatte.
Wenn ich iptables deaktiviere, kann ich mein Backup von einem anderen Rechner auf FTP übertragen. Wenn iptables dies erzwingt, schlägt die Übertragung fehl.
Antwort1
Ihr FTP-Server benötigt einen Kanal, um Daten zu übertragen. Der Port 21
wird zum Herstellen der Verbindung verwendet. Um die Datenübertragung zu ermöglichen, müssen Sie also 20
auch den Port aktivieren. Siehe die folgende Konfiguration
Laden Sie zunächst das folgende Modul, um sicherzustellen, dass passive FTP-Verbindungen nicht abgelehnt werden
modprobe ip_conntrack_ftp
Erlaube FTP-Verbindungen auf Port 21
ein- und ausgehend
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"
20
FTP-Port für aktive eingehende und ausgehende Verbindungen zulassen
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"
Endlich passiven eingehenden FTP-Verkehr zulassen
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 .
Antwort2
Ich habe solche umfangreichen Regeln bereits in mehreren Blogs usw. gesehen und mich gefragt, warum nicht einfach
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
zusammen mit dem nf_conntrack_ftp
Modul. Dies ist prägnanter und lesbarer, was im Allgemeinen eine gute Sache ist, insbesondere bei Firewalls ...
FWIW, es scheint, dass es eine Änderung im Kernel 4.7 gab, so dass Sie entweder net.netfilter.nf_conntrack_helper=1
via setzen müssen sysctl
(z. B. setzen Sie es in /etc/sysctl.d/conntrack.conf
) oder verwenden
iptables -A PREROUTING -t raw -p tcp --dport 21 -j CT --helper ftp
(sehenHierfür mehr Details)
Antwort3
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
So wechseln Sie clientseitig zwischen passivem und aktivem Modus
ftp> passive
Passive mode on.
ftp> passive
Passive mode off.
Antwort4
Wenn Sie sowohl aktive als auch passive Verbindungen benötigen und bereits ESTABLISHED
Verbindungen akzeptieren, wie zum Beispiel:
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 ist keine Regel erforderlich, da dieser bereits von der ESTABLISHED
obigen Regel akzeptiert wird.
Akzeptieren Sie neue Verbindungen zunächst am 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:
- https://github.com/rtsisyk/linux-iptables-contrack-exploit
- http://home.regit.org/wp-content/uploads/2011/11/secure-conntrack-helpers.html
Notiz:Sie müssen dies in Ihrem FTP-Server wie folgt einstellen 1024:
: Suchen Sie in Ihrer FTP-Konfiguration nach den standardmäßigen passiven Ports. 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 so sind iptables -P OUTPUT ACCEPT
. Das bedeutet, dass ich dem vertraue, was aus meiner Box kommt. Das ist möglicherweise keine gute Option, insbesondere in einem NAT-Setup.
Ganz wichtiger Hinweis:FTPS funktioniert mit einem solchen Setup nicht, da der passive Port versteckt (verschlüsselt) ist und es daher keine Möglichkeit gibt, iptables
den richtigen Port zu erraten. SieheÄndern von IPTables, um FTP über TLS unter Verwendung passiver Ports zuzulassenUndhttps://serverfault.com/questions/811431/sind-meine-iptables-für-ftps-mit-tls-ok