Comment configurer vsftpd pour fonctionner en mode passif


49

Chaque fois que j'installe vsftpdsur centos, je configuration que l'environnement de prison pour les utilisateurs et le reste est la configuration par défaut vsftpd. Je crée un utilisateur et essaie de me connecter avec le filezilaclient FTP, mais je ne pouvais pas me connecter en mode passif. Je change toujours le transfer settingsen mode actif pour ftp serverme connecter avec succès sinon je reçois

 Error: Failed to retrieve directory listing

Donc, y a-t-il un moyen de changer n'importe quelle directive dans un vsftp.conffichier et nous pouvons nous connecter en mode passif au serveur?

Réponses:


86

Pour configurer le mode passif pour vsftpd, vous devez définir certains paramètres dans vsftpd.conf.

pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090

Cela active le mode passif et le limite à l’utilisation des onze ports pour les connexions de données. Ceci est utile car vous devez ouvrir ces ports sur votre pare-feu.

iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT

Si, après le test, cela fonctionne, alors enregistrez l’état de votre pare-feu avec

service iptables save

qui mettra à jour le /etc/sysconfig/iptablesfichier.

Pour ce faire, CentOS 7 vous devez utiliser le nouveau pare-feu, pas iptables:

Trouvez votre zone:

# firewall-cmd --get-active-zones
public
  interfaces: eth0

Ma zone est "publique", alors je mets cette zone sur public, j'ajoute la plage de ports, puis nous rechargeons:

# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload

Que se passe-t-il lorsque vous établissez une connexion?

  • Votre client établit une connexion avec le serveur vsftpd sur le port 21.

  • Le serveur répond au client en lui indiquant le port auquel se connecter à partir de la plage spécifiée ci-dessus.

  • Le client établit une connexion de données sur le port spécifié et la session se poursuit.

Il existe une grande explication des différents modes ftp ici.


Vous vous demandez pourquoi vous placez le maxport après le min... mais surtout, si vous ouvrez les ports 10090 à 10100, vous obtenez 11 ports et non pas 10 comme vous le dites.
Alexis Wilke

Je crois que c'est alphabétique, cela n'a pas d'importance car il s'agit de directives distinctes.
user9517 prend en charge GoFundMonica

3
Cela ne fonctionne pas pour moi sans pasv_address.
fbmd

Cela m’a pris un temps fou à trouver cela, aucun des guides vsftpd ne le mentionne ... brillant
Pete

Merveilleux - cette configuration de vsftp a résolu tous mes problèmes de pare-feu FTP :)
BurninLeo

24

Pour activer le mode passif, définissez les options de configuration suivantes dans votre vsftp.conf:

pasv_enable=YES
pasv_min_port=41361
pasv_max_port=65534
pasv_address=xxx.xxx.xxx.xxx

Vous pouvez bien sûr changer les ports de début et de fin, et devriez remplacer les xxx par l’adresse IP publique de votre serveur.

En outre, vous devez ouvrir la plage de ports en mode passif dans votre pare-feu. Sur centos, vous pouvez charger le ip_conntrack_ftpmodule pour gérer les connexions FTP dans votre pare-feu. Modifiez /etc/sysconfig/iptables-configet ajoutez ip_conntrack_ftp à l'option IPTABLES_MODULES. Ensuite, relancez iptables:

/sbin/service iptables restart

3
pasv_addressC’est quoi le truc quand tout le reste a été mis en place et que ça ne marche toujours pas.
fbmd

1
@fbmd avant d’essayer pasv_address, il faut également vérifier si pasv_max et min_port sont dans le bon ordre. Il m'est arrivé d'avoir la valeur max configurée dans le pasv_min_port, et vsftpd l'ignore simplement. C’est un défaut / bogue silencieux connu qui, visuellement, vous fait penser que les ports précédents sont correctement configurés, mais ils ne le sont pas. Cela m'est arrivé et a résolu mon problème.
Pedro Sousa

Si vous souhaitez spécifier une adresse DNS dans pasv_address, vous devez ajouter pasv_addr_resolve=YES(par défaut à NO)
Pierre-Damien

6

À côté de pasv_enable=YES, spécifiez une plage de ports dans laquelle VSFTP exécutera le mode PASV:

pasv_min_port=50000
pasv_max_port=50999
port_enable=YES

N'oubliez pas de configurer iptables permet la transmission de paquets sur ces ports:

iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT

Sur un système CentOS standard, il existe un ensemble DROP qui iptables -A INPUT ... ignore les règles ajoutées
utilisateur9517 prend en charge GoFundMonica

Assurez-vous d'inclure pasv_addressle fichier vsftpd.conf.
Pedro Madrid

3

Généralement, ce n'est pas le serveur ftp, vsftpd, mais le pare-feu comme iptable qui empêche l'utilisation du mode passif (blocage de la connexion TCP nécessaire au transfert de données).


En fait, vsftpd pourrait être assez intelligent pour ouvrir un port dans le pare-feu ... mais d'après les réponses que je vois ici, il ne semble pas qu'il soit capable d'un tel exploit.
Alexis Wilke

3
@ Alexsis. Un pare-feu ne sert à rien si les applications ignorent les règles et ouvrent les ports de toute façon.
ekerner
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.