[RESOLU] Iptables ftp passif - ip_conntrack_ftp

Salut a tous,

désolé de posté sur un sujet qui est souvent abordé, mais après beaucoup de recherche, je n’ai toujours pas trouvé de solution.

J’ai un serveur linux debian, qui me sert de routeur, ce server a un server ftp vsftpd, mais je n’arrie pas a utilisé le mode passif.

Serveur Linux Echel0n 2.6.18-6-686 #1 SMP Fri Dec 12 16:48:28 UTC 2008 i686 GNU/Linux
eth0 > Ip public
eth1 > ip local 192.168.0.254

/etc/vsftpd.conf

ftpd_banner=Welcome to Echel0n VsFTPd server! Only SSL!
listen=YES
###
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
log_ftp_protocol=YES
use_localtime=YES
###
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=NO
force_local_logins_ssl=YES
###
pasv_enable=YES
pasv_promiscuous=NO
pasv_max_port=40100
pasv_min_port=40000
port_promiscuous=NO
pasv_address=88.xxx.xx.xxx
#pasv_addr_resolve=YES
connect_from_port_20=YES
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
###
guest_enable=YES
guest_username=virtual
chroot_local_user=YES
max_clients=8
max_per_ip=20
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
secure_chroot_dir=/var/run/vsftpd
###
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
user_config_dir=/etc/vsftpd/vsftpd_user_conf

Mon parefeu

[code]
#!/bin/sh

*************************************

** Firewall Scripting By Guill@ume **

*************************************

echo " — Initialisation Du pare feu — "

* Activer l’ip Forward *

echo 1 > /proc/sys/net/ipv4/ip_forward

echo “Ip Forward … [Ok]”

if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]
then
for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 0 > filtre
done
fi

* Nettoyage des regles existantes *

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

echo “Nettoyage des Tables … [Ok]”

* Modules *

modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
modprobe ipt_limit
modprobe ipt_state
modprobe ipt_multiport
modprobe iptable_filter
modprobe iptable_mangle
modprobe iptable_nat

echo “Chargement des modules … [Ok]”

* Regles par defaut *

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

* NAT / MASQUERADING *

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

* Accept tout ce qui se passe sur le reseau *

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT

* Accept les connexions deja etablis *

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

*** INPUT regles ***

iptables -A INPUT -i eth0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A INPUT -i eth0 -p tcp --dport 40000:40100 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 14769 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport http -j ACCEPT

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

iptables -A INPUT -p icmp -j DROP
iptables -A INPUT -p igmp -j DROP

* Forward de ports *

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 192.168.0.1
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 10158 -j DNAT --to 192.168.0.1
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 10159 -j DNAT --to 192.168.0.1

echo “Application des regles … [Ok]”

* Protection des scans et ping de la mort *

iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

* Fail2ban *

fail2ban-client reload

echo " — Pare Feu Operationnel ! — "[/code]

Lorsque j’essai de me connecter en passif je n’arrive pas.
Pourtant les bon module sont chargés.
Je suis obligé de decommenter la ligne:
#iptables -A INPUT -i eth0 -p tcp --dport 40000:40100 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
Pour que cela fonctionne.

Merci pour votre aide.

[quote=“K0t0x”]
Lorsque j’essai de me connecter en passif je n’arrive pas.
Pourtant les bon module sont chargés.
Je suis obligé de decommenter la ligne:
#iptables -A INPUT -i eth0 -p tcp --dport 40000:40100 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
Pour que cela fonctionne.

Merci pour votre aide.[/quote]
C’est normal, essaye en mettant

sinon les ports resteront fermés. La nuance est le NEW qui dégage…

Oui je suis d’accord.

Seulement je pensais que le module ip_conntrack_ftp
m’eviterai d’ajouter cette règle.
Ce module permet de gérer le mode passif, nan?

Non, le module permet de voir qu’une connexion s’établissant sur un port 40010 est relative à la connexion sur le port ftp et est donc «RELATED».

Ok merci de ta réponse je comprend mieux.
Encore une question, est ce que cela fonctionne aussi avec le SSL?
Car j’ai des difficultés lorsque je suis en SSL.

Le module intercepte le numéro de port dans le traffic FTP. Si tu utilises du FTP-SSL, le port est transmis en crypté et le noyau ne peut le connaitre. C’est la principale difficulté du FTP-SSL, tu es obligé de gérer le passif toi même.

Merci pour tes réponses très clair, je comprend enfin!