Mon scénario actuel implique d'autoriser diverses règles, mais j'ai besoin que ftp soit accessible de n'importe où. Le système d'exploitation est Cent 5 et j'utilise VSFTPD. Je n'arrive pas à obtenir la syntaxe correcte. Toutes les autres règles fonctionnent correctement.
## 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
Voici les règles que j'ai essayées.
##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
Voici le document auquel je réfère les gens pour qu'ils puissent suivre le protocole FTP: http://slacksite.com/other/ftp.html
Vous n'avez rien à propos de votre chaîne de SORTIE dans votre message, je vais donc l'inclure ici aussi. Si votre chaîne de SORTIE est par défaut-drop alors cela importe.
Ajoutez ces règles à votre configuration iptables:
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
Pour prendre en charge le mode passif FTP, vous devez alors charger le module ip_conntrack_ftp au démarrage. Décommentez et modifiez la ligne IPTABLES_MODULES dans le fichier/etc/sysconfig/iptables-config pour lire:
IPTABLES_MODULES="ip_conntrack_ftp"
Enregistrez la configuration d'iptables et redémarrez iptables.
service iptables save
service iptables restart
Pour exclure complètement VSFTPD comme étant un problème, arrêtez VSFTPD, vérifiez qu'il n'écoute pas sur le port 21 avec un "netstat -a", puis exécutez a:
nc -l 21
Cela démarrera l'écoute de netcat sur le port 21 et fera écho à l'entrée de votre Shell. À partir d'un autre hôte, TELNET vers le port 21 de votre serveur et vérifiez que vous obtenez une connexion TCP et que vous voyez la sortie dans le shell lorsque vous tapez la connexion TELNET.
Enfin, ramenez VSFTPD, vérifiez qu'il écoute sur le port 21 et essayez de vous reconnecter. Si la connexion à netcat a fonctionné, vos règles iptables sont correctes. Si la connexion à VSFTPD ne fonctionne pas après le netcat, alors quelque chose ne va pas avec votre configuration VSFTPD.
Essayez cette règle. Remarque: $EXTIP
est votre adresse IP externe pour le serveur FTP.
-A INPUT -i $EXTIP -m state --state NEW,ESTABLISHED,RELATED -p TCP -s 0.0.0.0 -d $EXTIP --dport 21 -j ACCEPT
Dans mon cas, il me manquait le module du noyau ip_conntrack_ftp. Il doit être chargé. Vous pouvez donc essayer ceci:
modprobe ip_conntrack_ftp
Et ajoutez également ip_conntrack_ftp à/etc/modules pour que cela fonctionne après le redémarrage