problème de connexion vsftpd

je viens d’installer un serveur ftp (vsftpd) sur mon poste, après configuration, je ne peut pas, jusqu’à maintenant, accéder à ce serveur depuis internet:
voici ma configuration:

listen=YES
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=ftp
write_enable=NO
anon_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=60000
connect_from_port_20=YES
nopriv_user=ftp
ftpd_banner=Welcome to FTP service.
user_config_dir=/etc/vsftpd
max_clients=10
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem

j’ai créer un utilisateur virtuel avec ses propres paramètres de configuration, le serveur fonctionne parfaitement en local et sans parefeu iptables.

dès que j’active le pare feu, plus de connexion! malgré que j’ai ajouté ces deux règles:
#FTP active - donnés & controle
iptables -A INPUT -p tcp --sport 20:21 -j ACCEPT
#FTP passive
iptables -A INPUT -p tcp --sport 50000:60000 -j ACCEPT

le serveur se trouve dans la zone démilitarisée et les deux modules suivants sont chargés au démarrage (/etc/modules):
ip_conntrack_ftp
ip_nat_ftp

merci

Bonjour 051106,
J’utilise également vsftpd, et j’ai rencontré un problème de connection similaire au début.
Le serveur n’était pas accessible depuis l’extérieur car l’adresse ip fournie par mon serveur pour le passage en mode passif (utilisé par le client windows et sans doute par firefox ou IE) était l’adresse locale (192.168.XXX.XXX) et non l’adresse publique.
Essaies de te connecter à ton serveur en utilisant filezilla par exemple pour voir les logs affichées lors de la tentative de connection à ton serveur.

Si tu as une adresse IP statique, il te suffit d’ajouter cette adresse dans le fichier de configuration /etc/vsftpd.conf :

# Adresse IP du serveur pasv_address=XXX.XXX.XXX.XXX
Si, comme moi, tu es l’heureux propriétaire d’une livebox qui a la facheuse habitude de changer d’IP régulièrement, il faut passser par no-ip ou dyn-dns et utiliser un script pour mettre à jour ce fichier.

En espérant t’avoir aidé,
Bonne chance!
Charlie.

En remplaçant --sport par --dport, ça devrait marcher mieux, en supposant que les règles dans la chaîne OUTPUT acceptent le suivi des connexions existantes.

Quelques remarques supplémentaires sur les règles iptables.

  • Il est inutile d’accepter le port 20 en entrée sur le serveur : il ne reçoit pas de connexions entrantes sur ce port mais établit des connexions de données sortantes depuis ce port en mode actif.

  • Si la machine hébergeant le serveur FTP ne fait pas elle-même de NAT, le module ip_nat_ftp est inutile.

  • Si le module ip_conntrack_ftp est chargé et le chiffrement TLS/SSL des connexions de commande n’est pas activé (ssl_enable=NO), alors il est inutile de créer des règles spécifiques pour les connexions de données : il suffit d’accepter les paquets TCP vers le port 21 dans l’état NEW en entrée et les paquets dans l’état RELATED ou ESTABLISHED en entrée et en sortie.

Charlie :
A partir de la version 2.0.4 de vsftpd (etch contient la version 2.0.5), l’option pasv_addr_resolve=YES permet de spécifier dans l’option pasv_address un nom de domaine au lieu d’une adresse IP, donc plus besoin de modifier le fichier de configuration. Par contre si vsftpd est lancé en mode “standalone” (listen=YES) et non par (x)inetd (listen=NO), il faut le redémarrer après que le nom de domaine dynamique ait été rafraîchi avec une nouvelle adresse car vsftpd ne résoud le nom de domaine qu’une seule fois au démarrage.

Néanmoins si le chiffrement TLS/SSL des connexions de commande n’est pas utilisé et le routeur NAT sait prendre en charge le protocole FTP, alors il n’est pas nécessaire d’utiliser l’option pasv_address, car le routeur modifie lui-même l’adresse passive annoncée par le serveur avant de retransmettre le paquet au client.

En effet, la résolution se fait bien, je n’ai plus besoin de remplacer l’adresse IP dans le fichier de config, chouette!

Merci!

Merci pour l’aide
c’est résolu! :slightly_smiling: