logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
utilisateurs:hypathie:tutos:vsftpd [01/10/2014 10:59]
Hypathie [Installation et configuration]
utilisateurs:hypathie:tutos:vsftpd [02/10/2014 18:40] (Version actuelle)
Hypathie [Installation et utilisations]
Ligne 1: Ligne 1:
-====== vsftpd ======+====== ​Le serveur ​vsftpd ======
  
-  * Objet : mettre en place un serveur ​de partage de fichier FTP +  * Objet : Installation et configuration du serveur ​ftp vsftpd. ​ 
-  * Niveau requis : FIXME {{tag>débutant ​avisé}} +  * Niveau requis : {{tag>​avisé}}
-  * Commentaires : //Contexte d'​utilisation du sujet du tuto. // FIXME+
   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
 +
 +===== Introduction =====
 +Ce wiki a pour but de détailler les différentes étapes pour mettre en place un serveur de partage de fichier FTP, en utilisant vsftpd (Very Secure FTP Daemon).\\ ​
 +
 +Un serveur vsftpd permet comme un serveur FTP de déterminer un le lieu sur votre serveur depuis lequel il est possible de transférer des fichiers depuis son ordinateur personnel sur lequel est installé un client ftp.\\ ​
 +
 +Il y a plusieurs façon de créer des espaces ftp:
 +
 +- En utilisant ou en créant un utilisateur linux dont le répertoire personnel sera l'​espace ftp.
 +
 +- En utilisant une base de donnée de type Berkeley (mode utilisateurs viruels)
 +
 +Nous allons d'​abord mettre en œuvre la solution un utilisateur linux pour chaque espace ftp car c'est certainement la solution la plus simple. Elle ne convient pas pour un grand nombre d'​espaces FTP. 
 +
 +La faille majeur d'un serveur vsftpd est que tout passe en clair. Il faudra donc installer un certificat ssl qui permet le chiffrement de la connexion au serveur.
 + 
 +===== Installation et utilisations=====
 +====Installation et configuration basique de vsftpd====
 +===Installation de vsftpd===
 +<code root>​apt-get install vsftpd</​code>​
 +
 +===Mon serveur vsftp est-il en fonction? ===
 +Pour le savoir deux méthodes :
 +<code root>​netstat -a | grep ftp</​code>​
 +<​code>​tcp ​   0      0 *:ftp     ​*:​* ​     LISTEN</​code>​
 +
 +-> C'est ok !
 +
 +<code root>/​etc/​init.d/​vsftpd status</​code>​
 +<​code>​vsftpd is running</​code>​
 +
 +-> C'est ok aussi !
 +
 +===Configuration basique===
 +Attention il faut être derrière un routeur c'​est-à-dire en local.
 +  * On fait quelques menues modification au fichier de configuration "/​etc/​vsftpd.conf"​
 +<code root>vim /​etc/​vsftpd.conf</​code>​
 +<​code>​listen=YES
 +anonymous_enable=NO
 +local_enable=YES
 +ftpd_banner=Bienvenue !</​code>​
 +
 +===Première connexion avec le compte de l'​utilisateur principal sur le serveur===
 +Depuis le client une autre machine virtuelle par exemple que celle sur laquelle on a installé vsftpd on tape simplement :
 +<code user>ftp 192.168.0.10</​code>​
 +> 192.168.0.10 : étant l'IP du serveur vsftpd
 +<​code>​Connected to 192.168.0.10.
 +220 Bienvenue !
 +Name (192.168.0.10:​hypathie):​ hypathie
 +331 Please specify the password.
 +Password:
 +230 Login successful.
 +Remote system type is UNIX.
 +Using binary mode to transfer files.
 +ftp> exit
 +221 Goodbye.</​code>​
 +
 +> où ''​Password''​ : est le mot de passe du compte de l'​utilisateur "​hypathie"​ sur le système Linux.
 +
 +Voyons maintenant le détail des options possibles et l'​installation d'un certificat ssl pour chiffrer le mot de passe de l'​utilisateur.
 +
 +====Configuration de vsftpd avec ssl ====
 +===Installation de open-ssl ===
 +<code root>​apt-get install openssl</​code>​
 +
 +===Création du certificat===
 +Peut importe d'où la commande suivante va être lancé on déplacera le fichier qu'​elle va créer.
 +
 +<code root>​openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem</​code>​
 +<​note>​Répondre comme bon vous semblera à toutes les questions sauf :\\ 
 +''​Common Name''​ : mettre l'IP du serveur ou le nom de domaine si un DNS en local est installé.</​note>​
 +
 +<code root>mv vsftpd.pem /​etc/​ssl/​certs</​code>​
 +
 +  * Pour sécuriser tout ça :
 +
 +<code root>​chown root:root /​etc/​ssl/​certs/​vsftpd.pem</​code>​
 +
 +<code root>​chmod 600 /​etc/​ssl/​certs/​vsftpd.pem</​code>​
 +
 +Et voilà !\\ 
 +Il faut maintenant éditer à nouveau le fichier /​etc/​vsftpd.conf
 +
 +===Détail des options par défaut de vsftpd avec ssl===
 +Voici les options utilisées et commentées à partir de man vsftpd, histoire de comprendre ce qu'on fait. C'est sûr, c'est long ...
 +
 +Pour les options qui ne sont pas utilisées dans cette configuration,​ voir le man ou en ligne ici : [[https://​security.appspot.com/​vsftpd/​vsftpd_conf.html]]
 +
 +  * Éditons à nouveau /​etc/​vsftpd.conf :
 +<code root>vim /​etc/​vsftpd.conf</​code>​
 +<​code>​
 +# Pour mettre en mode standalone : ce mode permet au service FTP d'​avoir
 +# son propre démon au lieu de fonctionner sous le démon des autres
 +# service du sytème, le démon xinetd
 +#
 +listen=YES
 +#
 +# On n'​utilisera pas ipv6
 +#​listen_ipv6=YES
 +#
 +# On ne veut pas de connexions en mode anonymous qui permet à quiconque
 +# de se connecter au serveur
 +#
 +anonymous_enable=NO
 +#
 +# On veut que les utilisateurs locaux puissent se connecter
 +local_enable=YES
 +#
 +# On veut que les utilisateurs puissent remonter des fichiers sur le serveur
 +write_enable=YES
 +#
 +# Umask par défaut pour les utilisateurs locaux est 077 
 +# On peut changer cela en 022, si les utilisateurs s'​attendent à ce que 
 +# (022 soit utilisé par la plupart des autres serveurs FTP). 
 +local_umask=022
 +#
 +#
 +# On interdit l’upload anonyme
 +anon_upload_enable=NO
 +#
 +# On interdit l'​upload anonyme
 +anon_mkdir_write_enable=NO
 +#
 +# 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.
 +# man page précise que par défaut la valeur est NO mais qu'une simple ​
 +# configuration peut mettre la valeur YES. Cela varie selon les distributions.
 +dirmessage_enable=NO
 +#
 +# Les heures d’enregistrement des fichiers seront affichées à l’heure locale.
 +use_localtime=YES
 +#
 +# Pour que les actions des utilisateurs soient loggées.
 +xferlog_enable=YES
 +#
 +# On vérifie que la demande de port provienne forcément du port 20 
 +# de la machine cliente.
 +connect_from_port_20=YES
 +#
 +# Lorsque cette option est activée, tous les fichiers téléléchargés ​
 +# vers les serveurs par des utilisateurs anonymes deviennent ​
 +# la propriété de l'​utilisateur spécifié dans la directive chown_username.
 +chown_uploads=yes
 +# Spécifie la propriété de fichiers téléchargés anonymement ​
 +# vers le serveur si la directive chown_uploads est activée.
 +chown_username=hypathie
 +#
 +# Les logs seront enregistres dans le fichier /​var/​log/​vsftpd.log
 +xferlog_file=/​var/​log/​vsftpd.log
 +#
 +#Lorsque l'​option "​xferlog_std_format=YES" ​ est activée de concert avec 
 +# xferlog_enable,​ alors un seul un journal de transfert de fichiers ​
 +# 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 fichiers et n'​enregistre pas les connexions au serveur.
 +
 +#Lorsque l'​option "​xferlog_std_format=NO",​ on peut ajouter les directives ​
 +# "​log_ftp_protocol=YES"​ et "​xferlog_enable=YES"​
 +# ainsi toutes les commandes et réponses FTP seront journalisées. ​
 +# Cela est très utilise lors d'​opérations de débogage. ​
 +xferlog_std_format=YES
 +#
 +# On declare les valeurs de timeout. Spécifie la durée maximale pouvant ​
 +# s'​écouler entre des commandes depuis un client distant. ​
 +# Une fois cette durée écoulée, la connexion au client distant est fermée.
 +idle_session_timeout=600
 +#
 +# Spécifie la durée maximale exprimée en secondes, ​
 +# pendant laquelle les transferts de données peuvent s'​arrêter.
 +data_connection_timeout=120
 +#
 +#On ajoute une indication sur la durée maximale exprimée en secondes, ​
 +# donnée à un client utilisant un mode actif pour répondre ​
 +# à une connexion de données. ​
 +connect_timeout=60
 +#On ajoute une indication sur la durée donnée à un client ​
 +# utilisant une connexion passive pour se connecter.
 +accept_timeout=60 ​
 +# Il est recommandé que vous définissez sur votre système un utilisateur ​
 +# unique que le serveur FTP peut utiliser comme un utilisateur non 
 +# privilégié et totalement isolé.
 +# Cela restreint complétement les privilèges d'​exécution du processus vsftpd ​
 +# non privilégié (lancé au moment de l'​attente d'​authentification ​
 +# puis lors de l'​automutilation) en lui dédiant un utilisateur (par défaut ​
 +# nobody). Mais il faut de créer cet utilisateur non-privilégié (par
 +# exemple vsftpd) et de le spécifier par la directive nopriv_user=vsftpd.
 +# Si on ne crée pas cet utilisateur plus personne peut être accepté.
 +# man page indique que par défaut la valeur est "​Default:​ nobody"​. ​
 +#​nopriv_user=ftpsecure
 +nopriv_user=nobody
 +#
 +# Par sécurité, on interdit la commande ABOR
 +# Elle permet de stopper un téléchargement asynchrone en cours. ​
 +# Elle est considérée comme complexe et inélégante,​ parce qu’async ABOR 
 +# produit des effets différents en fonction des clients. On l'​utilise quand 
 +# on ne sait pas quel type de client est susceptible de se connecter.
 +async_abor_enable=NO
 +#
 +# Les transferts en ASCII sont souvent source de confusions.
 +ascii_upload_enable=NO
 +ascii_download_enable=NO
 +#
 +# On change la bannière pour reconnaître note serveur et c'est plus joli !
 +ftpd_banner=Bienvenue !
 +#
 +# Utile pour prévenir certaines attaques : Lorsque cette option est activée, ​
 +# tout utilisateur anonyme employant des mots de passe de messagerie ​
 +# spécifiés 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
 +# On l'​utilise avec l'​autorisation des connexions anonymes, ce qu'on a refusé.
 +#​deny_email_enable=YES
 +# (default follows)
 +#​banned_email_file=/​etc/​vsftpd.banned_emails
 +#
 +### Si on veut limiter les utilisateurs à leur repertoire
 +chroot_local_user=NO
 +#
 +# Mais il est à noter d'​abord que :
 +# 1) Si on a choisi "​chroot_local_user=YES" ​
 +# alors on doit mettre "​chroot_list_enable=NO"​
 +# sinon la liste_enable indique les utilisateurs qui ne sont pas chrootés.
 +#
 +# 2) Une mesure de sécurité ajoutée à vsftpd dans sa version 2.3.5, refuse ​
 +# de chrooter un client dans un répertoire pour lequel l'​utilisateur possède ​
 +# les droits d'​écriture. Du coup avec :"​chroot_local_user=YES"​
 +# un refus de connexion à lieu lorsque un utilisateur tente de se logger :
 +# "500 OOPS: vsftpd: refusing to run with writable root inside chroot()
 +#Login failed.
 +#
 +# Avec "​chroot_local_user=YES"​ la méthode pour contourner cette sécurité:
 +#"​chroot_local_user=YES"​
 +#"​allow_writeable_chroot=YES"​
 +# Et ""​chroot_list_enable=NO"​
 +# ne fonctionne pas
 +#
 +### Il en va de même pour  l'​option "​chroot_list_enable=YES" ​
 +# (avec "​chroot_local_user=NO"​) qui devrait permettre de fournir ​
 +# une liste des utilisateurs locaux dont le répertoire personnel peut 
 +# placé dans un chroot () lors de la connexion. ​
 +# Par défaut, le fichier contenant cette liste devrait être
 +# /​etc/​vsftpd.chroot_list ​
 +# Mais cela ne fonctionne pas.
 +#​chroot_list_file=/​etc/​vsftpd.chroot_list
 +#
 +## Désactive le listage récursif des répertoires par la commande "ls -R",
 +# afin d'​éviter trop d'​appels sur le système de fichier.
 +# Certain clients FTP comme "​ncftp"​ ou "​mirror"​ réclame l'​option "​-R"​
 +# pour fonctionner.
 +# ls_recurse_enable=NO
 +#
 +# Customization
 +#
 +# Some of vsftpd'​s settings don't fit the filesystem layout by
 +# default.
 +#
 +# Cette option doit être le nom d'un répertoire qui est vide. 
 +# En outre, le répertoire ne doit pas être accessible en écriture ​
 +# par l'​utilisateur ftp. 
 +# Ce répertoire est utilisé comme un chroot sécurisé.
 +# Par exemple pour emprisonner le démon vsftpd : 
 +# "​secure_chroot_dir=/​var/​run/​vsftpd"​.
 +# Mais tout va bien par défaut, à l'​installation /​var/​run/​vsftpd/​empty
 +# possède les bons droits et il est vide.
 +secure_chroot_dir=/​var/​run/​vsftpd/​empty
 +#
 +# Spécifie le nom du service PAM pour vsftpd:
 +# Le PAM est système d'​authentification utilisé en standard sous Linux.
 +# DOC en français : http://​www-igm.univ-mlv.fr/​~dr/​XPOSE2003/​augereau/​2.html
 +pam_service_name=vsftpd
 +#
 +###mise en place du chiffrement ssl
 +#
 +#Remarque sur l'​utilisation de ssl: 
 +#Soit on met certificat et clé privée dans /​etc/​ssl/​private/​vstfpd.pem
 +#Soit on met le certificat (copie) dans 
 +#  et dans ce cas, on ajoute la directive ​
 +#  "​rsa_private_key_file=/​fichier/​clé/​privée"​
 +# Cette option spécifie l'​emplacement de la clé privée RSA à 
 +# utiliser pour les connexions cryptées SSL. 
 +# emplacement par défaut : Default: (none)
 +ssl_enable=YES
 +validate_cert=NO
 +ssl_ciphers=HIGH
 +require_ssl_reuse=NO
 +allow_anon_ssl=NO
 +force_local_data_ssl=YES
 +force_local_logins_ssl=YES
 +ssl_tlsv1=YES
 +ssl_sslv2=NO
 +ssl_sslv3=NO
 +# Emplacement du certificat RSA à utiliser pour les connections SSL.
 +rsa_cert_file=/​etc/​ssl/​certs/​vsftpd.pem
 +#
 +pasv_address=192.168.0.10
 +</​code>​
 +
 +<note tip>
 +C'​était long ! En voici encore un peu..\\ ​
 +
 +__**Pour la signification des options concernant ssl :​**__\\ ​
 +
 +
 +**ssl_enable**:​ Si elle est activée, vsftpd utilise OpenSSL, et vsftpd soutiendra les connexions sécurisées via SSL.\\ Cela s'​applique à la connexion de contrôle (y compris login) et les connexions de données.\\ Vous aurez besoin d'un client avec le support SSL.\\ **REMARQUE !! Méfiez-vous de cette option.\\ vsftpd ne donne aucune garantie quant à la sécurité des bibliothèques OpenSSL**. En activant cette option, vous déclarez que vous faites confiance à la sécurité de votre bibliothèque OpenSSL.\\ ​
 +
 +**validate_cert** : Si définie à "​yes",​ tous les certificats clients SSL reçus doivent validés. Certificats auto-signés ne constituent pas une validation. (Dans ce wiki ont a auto-signé,​ pour pouvoir chiffrer, mais l'​utilisation est locale !)\\  ​
 +
 +**ssl_ciphers** : Cette option peut être utilisée pour sélectionner les chiffrements SSL vsftpd qui permettront des connexions SSL chiffrées.\\ Voir la page de man sur les chiffrement pour plus de détails.\\ Par défaut: DES-CBC3-SHA\\ ​
 +
 +**require_ssl_reuse** : Si définie à "​yes",​ toutes les connexions de données SSL dépendent de la session SSL. Mieux vaut la désactiver. Pour une discussion sur les conséquences,​ voir http://​scarybeastsecurity.blogspot.com/​2009/​02/​vsftpd-210-released.html (Ajouté à v2.1.0).\\ Par défaut: OUI\\ 
 +
 +**allow_anon_ssl** : Ne s'​applique que si "​ssl_enable"​ est actif. Si la valeur est "​YES",​ les utilisateurs anonymes seront autorisés à utiliser des connexions SSL sécurisées.\\ Default: NO\\ 
 +
 +**force_local_data_ssl** : Ne s'​applique que si "​ssl_enable"​ est activée. Si elle est activée, toutes les connexions non anonymes sont contraints d'​utiliser une connexion SSL sécurisée pour envoyer et recevoir des données sur les connexions de données.\\ Par défaut: OUI\\ 
 +
 +**force_local_logins_ssl** : Ne s'​applique que si "​ssl_enable"​ est activée. Si elle est activée, toutes les connexions non anonymes sont contraints d'​utiliser un mot de passe.\\ Par défaut: OUI\\ 
 +
 +**ssl_tlsv1** : Ne s'​applique que si "​ssl_enable"​ est activée. Si elle est activée, cette option permettra les //TLS// connexions de protocole v1. Les connexions TLS de sont préférables.\\ Par défaut: OUI\\ 
 +
 +**ssl_sslv2** : Ne s'​applique que si "​ssl_enable"​ est activée. Si elle est activée, cette option permettra les connexions de protocole SSL v2. Les connexions TLS de sont très bonnes.\\ Par défaut: NON\\ 
 +
 +**ssl_sslv3** : Ne s'​applique que si ssl_enable est activée. Si elle est activée, cette option permettra les connexions de protocole SSL v3. Les connexions TLS de sont très bonnes.\\ Par défaut: NON\\ 
 +
 +**pasv_address** : Utilisez cette option pour remplacer l'​adresse IP que vsftpd affichera en réponse de la commande PASV. Fournir une adresse IP numérique, à moins pasv_addr_resolve soit activée, dans ce cas, vous pouvez fournir un nom d'​hôte qui résolu par un DNS mis en place lors du démarrage.\\ Valeur par défaut: (aucune)
 +
 +</​note>​
 +
 +====Connexion au serveur vsftpd avec ssl====
 +===Installation sur le client de ftp-ssl===
 +
 +<code root>​apt-get install ftp-ssl</​code>​
 +
 +<note imprtant>​Cela va désinstaller ftp client !\\ 
 +Donc il faudra forcement passer par ftp-ssl, et on ne pourra plus se connecter au serveur comme dans la première partie du wiki.\\ ​
 +Mais ça veut mieux !
 +</​note>​
 +
 +===Connexion avec ftp-ssl ===
 +<code user>​ftp-ssl 192.168.0.10</​code>​
 +>où ''​192.168.0.10''​ est à remplacer par l'IP de votre serveur vsftpd
 +
 +<​code>​Connected to 192.168.0.10.
 +220 Bienvenue !
 +Name (192.168.0.10:​hypathie):​ hypathie
 +234 Proceed with negotiation.
 +[SSL Cipher AES256-GCM-SHA384]
 +331 Please specify the password.
 +Password:
 +230 Login successful.
 +Remote system type is UNIX.
 +Using binary mode to transfer files.
 +ftp> exit
 +221 Goodbye.</​code>​
 +
 +> où ''​Password''​ : est le mot de passe du compte de l'​utilisateur "​hypathie"​ sur le système Linux.
 +
 +Et voilà !
 +
 +=====Apprendre à utiliser les commandes FTP=====
 +
 +
 +===== Utilisation =====
  
  
utilisateurs/hypathie/tutos/vsftpd.1412153966.txt.gz · Dernière modification: 01/10/2014 10:59 (modification externe)

Pied de page des forums

Propulsé par FluxBB