====== vsftpd : serveur ftp ======
* Objet : Installation du serveur FTP vsftpd
* Niveau requis : {{tag>avisé}}
* Commentaires : //vsftpd est un serveur de fichiers utilisant le protocole FTP.//
* A savoir : [[:doc:reseau:ftp|présentation du protocole FTP (File Transfert Protocol)]]
* Suivi : {{tag> à-compléter à-tester}}
* Création par [[user>chiwawa]] le 27/06/2009 et [[user>MicP]] 09/2013
* Testé par <...> le <...> FIXME
* Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=1514 | ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
**Nota :**
Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !
===== Installation =====
Il suffit de mettre à jour la liste des paquetages et installer le paquetage ''vsftp'' en entrant la ligne de commande suivante en [[:doc:systeme:console]] :
apt-get update && apt-get install vsftpd
===== I Commandes utiles =====
Pour démarrer le serveur :
service vsftpd start
Et pour redémarrer le serveur (à faire pour prendre en compte les modifs ci-après)
service vsftpd restart
Pour arrêter le serveur :
service vsftpd stop
===== Configuration ====
Une fois vsftpd installé, comme tout programme débian le fichier de configuration se trouve dans le dossier ''/etc/''. \\
Le fichier de conf ce nomme très logiquement ''vsftpd.conf'', donc un petit :
nano /etc/vsftpd.conf
sera l'idéal pour configurer notre futur serveur FTP.
Voilà la liste des possibilités offerte par Vsftpd.
==== Options pour le démon ====
* **listen=YES** (c'est la directive activé par défaut) si ont veux utiliser vsftpd sur un réseau en IPV4, la laisser sur YES.
* **listen_ipv6** (pour écouter en IPV6) \\ Comme son nom l'indique il ne faut l'activer que si on veut que le serveur écoute en IPV6. \\
Par contre attention, il semble que pour le moment ont ne peut pas mettre le démon en écoute sur du IPV4 et IPV6 en même temps. \\
Il faut donc choisir entre IPV4 et IPV6 : \\ **listen=yes** \\ OU \\ **listen_ipv6=yes**
==== Options de connexion et contrôles d'accès ====
* **anonymous_enable** — Lorsque cette option est activée, les utilisateurs anonymes sont autorisés à se connecter. Les noms d'utilisateurs anonymes (dits anonymous) et ftp sont acceptés. \\ La valeur par défaut est YES.
* **banned_email_file** — Si la directive //deny_email_enable// a pour valeur YES, elle spécifie le fichier contenant une liste des mots de passe de messagerie anonyme dont l'accès au serveur est refusé. \\ La valeur par défaut est ///etc/vsftpd.banned_emails//.
* **cmds_allowed** — Spécifie une liste délimitée par des virgules, des commandes FTP permises par le serveur. Toutes les autres commandes sont refusées. \\ Il n'existe pas de valeur par défaut pour cette directive.
* **deny_email_enable** — Lorsque cette option est activée, tout utilisateur anonyme employant un mot de passe de messagerie spécifié dans ''/etc/vsftpd.banned_emails'' se voit refuser l'accès au serveur. Le nom du fichier référencé par cette directive peut être spécifié à l'aide de la directive //banned_email_file//. \\ La valeur par défaut est NO.
* **ftpd_banner** — Lorsque cette option est activée, la chaîne spécifiée dans cette directive est affichée lorsque que la connexion au serveur est établie. Cette option peut être annulé par la directive //banner_file//. \\ Par défaut, vsftpd affiche sa bannière standard.
* **local_enable** — Lorsque cette option est activée, les utilisateurs locaux sont autorisés à se connecter au système. \\ La valeur par défaut est NO.
* **pam_service_name** — Spécifie le nom de service PAM pour **vsftpd**.
* **tcp_wrappers** — Lorsque cette option est activée, les enveloppeurs TCP sont utilisés pour accorder l'accès au serveur. \\ De plus, si le serveur FTP est configuré sur de multiples adresses IP, l'option //VSFTPD_LOAD_CONF// peut être utilisée pour charger des fichiers de configuration différents en fonction de l'adresse IP demandée par le client.
* **userlist_deny** — Lorsque cette option est utilisée de concert avec la directive //userlist_enable// et que sa valeur est NO, tous les utilisateurs locaux se voient refuser l'accès, à moins que le nom d'utilisateur ne figure dans le fichier spécifié par la directive //userlist_file//. \\ La valeur par défaut est YES.
Étant donné que l'accès est refusé avant même que le client ne puisse saisir son mot de passe, le choix de la valeur NO pour cette directive empêche les utilisateurs de soumettre des mots de passe non cryptés sur le réseau.
* **userlist_enable** — Lorsque cette option est activée, les utilisateurs mentionnés dans le fichier spécifié par la directive //userlist_file// se voient refuser l'accès.
Étant donné que l'accès est refusé avant même que le client ne puisse saisir son mot de passe, les utilisateurs n'ont pas la possibilité de soumettre des mots de passe non cryptés sur le réseau.
* **userlist_file** — Spécifie le fichier référencé par **vsftpd** lorsque la directive //userlist_enable// est activée. \\ la valeur par défaut est ///etc/vsftpd.user_list//.
* **cmds_allowed** — Spécifie une liste délimitée par des virgules des commandes FTP que le serveur autorise. Toutes les autres commandes sont refusées. \\ Il n'existe pas de valeur par défaut pour cette directive.
==== Options pour les utilisateurs anonymes ====
Les options qui contrôlent l'accès des utilisateurs anonymes au serveur.
Pour utiliser ces options, les utilisateurs anonymes doivent donc être autorisés, la valeur de la **directive anonymous_enable** doit donc être YES.
* **anon_mkdir_write_enable** — Lorsque cette option est activée de concert avec la directive //write_enable//, les utilisateurs anonymes sont autorisés à créer de nouveaux répertoires au sein du répertoire parent doté des permissions d'écriture. \\ La valeur par défaut est NO.
* **anon_root** — Spécifie le répertoire pour lequel **vsftpd** change après la connexion d'un utilisateur anonyme. \\ Il n'existe pas de valeur par défaut pour cette directive.
* **anon_upload_enable** — Lorsque cette option est activée de concert avec la directive //write_enable//, les utilisateurs anonymes sont autorisés à télétransmettre des fichiers dans le répertoire parent doté des permissions d'écriture. \\ La valeur par défaut est NO.
* **anon_world_readable_only** — Lorsque cette option est activée, les utilisateurs anonymes sont autorisés à télécharger des fichiers lisibles par tout un chacun. \\ La valeur par défaut est YES.
* **ftp_username** — Spécifie le compte de l'utilisateur local (énoncé dans ''/etc/passwd'') servant pour l'utilisateur FTP anonyme. \\ Le répertoire personnel spécifié dans ''/etc/passwd'' pour l'utilisateur est le répertoire **root** de l'utilisateur FTP anonyme. \\ La valeur par défaut est ftp.
* **no_anon_password** — Lorsque cette option est activée, l'utilisateur anonyme ne doit pas saisir de mot de passe. \\ La valeur par défaut est NO.
==== Options pour les utilisateurs locaux ====
Liste des options caractérisant la manière dont ont accès au serveur les utilisateurs locaux (comptes user présent sur le serveur).
Pour l'utiliser l'option **local_enable** doit avoir la valeur **YES**.
* **chmod_enable** — Lorsque cette option est activée, la commande //FTP SITE CHMOD// est autorisée pour les utilisateurs locaux. Cette commande permet aux utilisateurs de changer les permissions s'appliquant aux fichiers. \\ La valeur par défaut est YES.
* **chroot_list_enable** — Lorsque cette option est activée, les utilisateurs locaux énoncés dans le fichier spécifié dans la directive //chroot_list_file// sont placés dans une prison chroot dès qu'ils se connectent. \\ Si cette option est activée de concert avec la directive //chroot_local_user//, les utilisateurs locaux énoncés dans le fichier spécifié dans la directive //chroot_list_file// ne sont pas placés dans une prison chroot dès qu'ils se connectent.
* **guest_enable** — Lorsque cette option est activée, tous les utilisateurs autres que les utilisateurs anonymes sont connectés en tant qu'utilisateur invité (//guest//) qui est l'utilisateur local spécifié dans la directive //guest_username//. \\ La valeur par défaut est NO.
* **guest_username** — Spécifie le nom d'utilisateur vers lequel l'utilisateur invité (//guest//) est mappé. \\ La valeur par défaut est ftp.
* **local_root** — Spécifie le répertoire pour lequel **vsftpd** change après la connexion d'un utilisateur local. \\ Il n'existe pas de valeur par défaut pour cette directive.
* **passwd_chroot_enable** — Lorsque cette option est activée de concert avec la directive //chroot_local_user//, **vsftpd** chroote les utilisateur locaux en fonction de la présence de /./ dans le champ du répertoire personnel dans ''/etc/passwd''. \\ La valeur par défaut est NO.
* **user_config_dir** — Spécifie le chemin vers un répertoire contenant les fichiers de configuration portant le nom des utilisateurs du système local qui contiennent des paramètres spécifiques pour ces utilisateurs. Toute directive figurant dans le fichier de configuration d'un utilisateur annule celles figurant dans ''/etc/vsftpd/vsftpd.conf''. \\ Il n'existe pas de valeur par défaut pour cette directive.
==== Options pour les répertoires ====
* **dirlist_enable** — Lorsque cette option est activée, les utilisateurs sont autorisés à visionner les listes de répertoires. \\ La valeur par défaut est YES.
* **dirmessage_enable** — Lorsque cette option est activée, un message apparaît chaque fois qu'un utilisateur ouvre un répertoire avec un fichier message. Ce message se trouve dans le répertoire qui est ouvert. Le nom de ce fichier est spécifié dans la directive //message_file// et part défaut prend la valeur ''.message''. \\ La valeur par défaut est NO.
* **force_dot_files** — Lorsque cette option est activée, les fichiers commençant par un point (.) sont inclus dans les listes de répertoires, à l'exception des fichiers ''.'' et ''...'' \\ La valeur par défaut est NO.
* **hide_ids** — Lorsque cette option est activée, toutes les listes de répertoires font apparaître ftp comme l'utilisateur et le groupe de chaque fichier. \\ La valeur par défaut est NO.
* **message_file** — Spécifie le nom du fichier message lorsque la directive dirmessage_enable est utilisée. \\ La valeur par défaut est .message.
* **text_userdb_names** — Lorsque cette option est activée, des noms d'utilisateur et noms de groupes tests sont utilisés au lieu des entrées UID et GID. \\ La valeur par défaut est NO.
L'activation de cette option peut entraîner un ralentissement des performances du serveur.
* **use_localtime** — Lorsque cette option est activée, les listes de répertoires révèlent l'heure locale de l'ordinateur au lieu de l'heure GMT. \\ La valeur par défaut est NO.
==== Options pour le transfert de fichiers ====
* **download_enable** — Lorsque cette option est activée, le téléchargement de fichiers est autorisé. \\ La valeur par défaut est YES.
* **chown_uploads** — Lorsque cette option est activée, tous les fichiers télétransmis par des utilisateurs anonymes deviennent la propriété de l'utilisateur spécifiés dans la directive //chown_username//. \\ La valeur par défaut est NO.
* **chown_username** — Spécifie la propriété de fichiers télétransmis anonymement si la directive //chown_uploads// est activée. \\ La valeur par défaut est //root//.
* **write_enable** — Lorsque cette option est activée, les commandes FTP permettant de modifier le système de fichiers sont permises, telles que //DELE//,//RNFR// et //STOR//. \\ La valeur par défaut est NO.
==== Les options de journalisation ====
Options ayant un impact sur le comportement de journalisation de vsftpd.
* **dual_log_enable** — Lorsque cette option est activée de concert avec //xferlog_enable//, **vsftpd** enregistre deux fichiers simultanément : un journal compatible avec **wu-ftpd** dans le fichier spécifiée dans la directive //xferlog_file// (par défaut ''/var/log/xferlog'') et un fichier journal **vsftpd** standard spécifié dans la directive //vsftpd_log_file// (par défaut ''/var/log/vsftpd.log''). \\ La valeur par défaut est NO.
* **log_ftp_protocol** — Lorsque cette option est activée de concert avec //xferlog_enable// et lorsque //xferlog_std_format// a pour valeur NO, toutes les commandes et réponses FTP sont journalisées. \\ La valeur par défaut est NO.
Cette directive est très utilise lors d'opérations de débogage.
* **syslog_enable** — Lorsque cette option est activée de concert avec //xferlog_enable//, toute journalisation normalement enregistrée dans le fichier journal standard **vsftpd** qui est spécifié dans la directive //vsftpd_log_file// (par défaut ''/var/log/vsftpd.log'') est envoyée à la place à l'enregistreur chronologique automatique du système sous le service FTPD. \\ La valeur par défaut est NO.
* **vsftpd_log_file** — Spécifie le fichier journal **vsftpd**. Pour que ce fichier soit utilisé, //xferlog_enable// doit être activée et //xferlog_std_format// doit avoir pour valeur NO ou, si //xferlog_std_format// a pour valeur YES, //dual_log_enable// doit être activée. \\ La valeur par défaut est /var/log/vsftpd.log.
Il est important de noter ici que si //syslog_enable// a pour valeur YES, le journal du système est utilisé à la place du fichier spécifié dans cette directive.
* **xferlog_enable** — Lorsque cette commande est activée, **vsftpd** journalise les connexions (seulement au format //vsftpd//) et les informations de transfert de fichier dans le fichier journal spécifié dans la directive //vsftpd_log_file// (par défaut ''/var/log/vsftpd.log''). Si //xferlog_std_format// a pour valeur YES, les informations de transfert de fichier sont journalisées mais les connexions, elles, ne le sont pas et le fichier spécifié dans //xferlog_file// (par défaut ''/var/log/xferlog'') est utilisé à la place. \\ La valeur par défaut est NO.
Il est important de noter ici que les fichiers journaux aussi bien que les formats de journaux sont utilisés si //dual_log_enable// a pour valeur YES.
* **xferlog_file** — Spécifie le fichier journal compatible avec **wu-ftpd**. Pour que ce fichier soit utilisé, //xferlog_enable// doit être activé et //xferlog_std_format// doit avoir pour valeur YES. Il est également utilisé si //dual_log_enable// a pour valeur YES. \\ La valeur par défaut est /var/log/xferlog.
* **xferlog_std_format** — Lorsque cette option est activée de concert avec //xferlog_enable//, seul un journal de transfert de fichier compatible avec **wu-ftpd** est enregistré dans le fichier spécifié dans la directive //xferlog_file// (par défaut ''/var/log/xferlog'').
Il est important de noter ici que ce fichier journalise seulement les transferts de fichier et n'enregistre pas les connexions au serveur.
==== Les options réseau ====
Directives ayant un impact sur la manière dont vsftpd interagit avec le réseau.
* **accept_timeout** — Spécifie la durée donnée à un client utilisant une connexion passive pour se connecter. \\ La valeur par défaut est 60.
* **anon_max_rate** — Spécifie le taux de transfert de données, exprimé en octets par seconde, pour les utilisateurs anonymes. \\ La valeur par défaut est 0, ce qui ne limite pas le taux de transfert.
* **connect_from_port_20** Lorsque cette option est activée, **vsftpd** tourne avec suffisamment de privilèges pour pour ouvrit le port 20 sur le serveur lors de transferts de données en mode actif. La désactivation de cette option permet à **vsftpd** de tourner avec moins de privilèges, mais cette option peut-être incompatible avec certains clients FTP. \\ La valeur par défaut est NO.
* **connect_timeout** — Spécifie la durée maximale exprimée en secondes, donnée à un client utilisant un mode actif pour répondre à une connexion de données. \\ La valeur par défaut est 60.
* **data_connection_timeout** — Spécifie la durée maximale exprimée en secondes pendant laquelle les transferts de données peuvent s'arrêter. Une fois cette option amorcée, la connexion au client distant est fermée. \\ La valeur par défaut est 300.
* **ftp_data_port** — Spécifie le port utilisé pour les connexions actives aux données lorsque //connect_from_port_20// a pour valeur YES. \\ La valeur par défaut est 20.
* **idle_session_timeout** — Spécifie la durée maximale pouvant s'écouler entre des commandes depuis un client distant. Une fois cette option amorcée, la connexion au client distant est fermée. \\ La valeur par défaut est 300.
* **listen_address** — Spécifie l'adresse IP que **vsftpd** doit écouter pour des connexions réseau. \\ Il n'existe pas de valeur par défaut pour cette directive.
* **listen_port** — Spécifie le port que **vsftpd** écoute pour des connexions au réseau. \\ La valeur par défaut est 21.
* **local_max_rate** — Spécifie le taux maximal (exprimé en octets par secondes) auquel les données sont transférées, pour les utilisateurs locaux connectés au serveur. \\ La valeur par défaut est 0, ce qui ne limite pas le taux de transfert.
* **max_clients** — Spécifie le nombre maximal de clients (exprimé en octets par seconde) autorisés à se connecter simultanément au serveur lorsqu'il tourne en mode autonome. \\ La valeur par défaut est 0, ce qui ne limite pas les connexions.
* **max_per_ip** — Spécifie le nombre maximal de clients autorisés à se connecter depuis la adresse IP source. \\ La valeur par défaut est 0, ce qui ne limite pas les connexions.
* **pasv_address** — Spécifie l'adresse IP du public faisant face à l'adresse IP du serveur pour les serveurs se trouvant derrière des pare-feu NAT (//Network Address Translation//). Cette option permet à **vsftpd** de fournir la bonne adresse de retour pour des connexions en mode passif. \\ Il n'existe pas de valeur par défaut pour cette directive.
* **pasv_enable** — Lorsque cette option est activée, les connexions en mode passif ne sont pas permises. \\ La valeur par défaut est YES.
* **pasv_max_port** — Spécifie le port le plus élevé possible qui est envoyé aux clients FTP pour des connexions en mode passif. \\ Ce paramètre est utilisé pour limiter la plage des ports afin que les règles pare-feu soient faciles à créer. \\ La valeur par défaut est 0, ce qui ne limite pas la plage des ports passifs les plus élevés.
La valeur ne doit pas dépasser 65535.
* **pasv_min_port** — Spécifie le port le plus bas possible qui est envoyé au client FTP pour des connexions en mode passif. Ce paramètre est utilisé pour limiter la plage des ports afin que les règles de pare-feu soient faciles à créer. \\ La valeur par défaut est 0, ce qui ne limite pas la plage des ports passifs les plus bas.
La valeur ne doit pas être inférieure à 1024.
* **pasv_promiscuous** — Lorsque cette option est activée, les connexions aux données ne sont pas analysées pour vérifier si elles proviennent bien de la même adresse IP. Ce paramètre est seulement utile pour certains types de tunnellisation. \\ La valeur par défaut est NO.
* **port_enable** — Lorsque cette option est activée, les connexions en mode actif ne sont pas permises. \\ La valeur par défaut est NO.
===== Références =====
* [[http://wiki.debian.org/fr/vsftpd]] vsftpd sur le wiki debian.org (FR)