IPTABLES connexion FTP Problème

Bonsoir,

Je me connecte bien au serveur FTP distant. Mon problème est lorsque je veux passer une commande sur le serveur cela ne fonctionne pas…

Un simple ls ne marche pas. Je désactive alors mon Firewall Iptables et cela fonctionne…

J’ai ouvert le port 20 et 21 et rien ne change. Voici mon Script iptables :


iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP

iptables -t filter -P OUTPUT DROP

iptables -t filter -F
iptables -t filter -X

### INPUT
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

### OUTPUT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 20 -j ACCEPT


# Spoofing
iptables -t filter -N SPOOFED
iptables -t filter -A SPOOFED -s 127.0.0.0/8 -j DROP
iptables -t filter -A SPOOFED -s 169.254.0.0/12 -j DROP
iptables -t filter -A SPOOFED -s 172.16.0.0/12 -j DROP
iptables -t filter -A SPOOFED -s 192.168.0.0/16 -j DROP
iptables -t filter -A SPOOFED -s 10.0.0.0/8 -j DROP
iptables -t filter -A INPUT -j SPOOFED

# Syn-floof et UDP flood
iptables -t filter -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT
iptables -t filter -A FORWARD -p udp -m limit --limit 1/second -j ACCEPT

[quote]Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all – anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp – anywhere anywhere tcp dpt:ftp
ACCEPT tcp – anywhere anywhere tcp dpt:ftp-data
ACCEPT all – anywhere anywhere
ACCEPT icmp – anywhere anywhere[/quote]

J’ai même essayé de charger les module ip_conntrack ip_conntrack_ftp et ip_nat_ftp mais sans succès…

Une idée ?
Merci

La règle qui accepte le port destination 20 en sortie ne sert à rien car les paquets concernés sont dans l’état ESTABLISHED (réponse du client à la demande de connexion de données du serveur en mode actif avec le port source 20). Par contre le module ip_conntrack_ftp, ou nf_conntrack_ftp pour les noyaux récents, devrait être efficace, sauf si la connexion de commande est chiffrée avec TLS ou SSL. Ça fait pareil avec tous les serveurs FTP ? Tu as essayé en mode passif et actif ? Tu as fait une capture du trafic ?

PS :

  • A quoi sert la chaîne SPOOFED ? Pour moi à rien car appelée en fin de chaîne INPUT elle bloque des paquets qui seraient de toute façon bloqués par la politique par défaut.
  • La plage “link local” est 169.254.0.0/16, pas 169.254.0.0/12.
  • A quoi servent les règles de la chaîne FORWARD ? Cette machine ne fonctionne a priori pas en routeur, car ces règles ne sont pas suffisantes pour autoriser une connexion complète.