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
Dernière révision Les deux révisions suivantes
utilisateurs:hypathie:tutos:vsftpd [30/09/2014 19:30]
Hypathie [Installation et configuration]
utilisateurs:hypathie:tutos:vsftpd [02/10/2014 18:16]
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à !.]] :-)
  
-===== Installation et configuration ​===== +===== Introduction ​===== 
-===Installation=== +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).\\ ​
-<code root>​apt-get install ​vsftpd</​code>​+
  
-Pendant la configuration on arrête ​le serveur ​:+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.\\ ​
  
-<code root>/​etc/​init.d/​vsftpd stop</​code>​+Il y a plusieurs façon de créer des espaces ftp:
  
-===Configuration=== +- En utilisant ou en créant un utilisateur linux dont le répertoire personnel sera l'​espace ftp.
-Le but ici est d'​utiliser ​le serveur FTP uniquement avec des utilisateurs virtuels, et non avec les utilisateurs locaux du système Unix.\\ +
  
-(Se faire une sauvegarde du fichier ​de configuration)+- En utilisant ​une base de donnée de type Berkeley (mode utilisateurs viruels)
  
-  * Éditer le fichier de configuration /​etc/​vsftpd.conf +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. 
-<code root>vim /​etc/​vsftpd.conf</​code>​ +
-On dé-commente les lignes suivantes : +
-<​code>​ +
-anonymous_enable=NO # Par défaut, mais là on met en place des utilisations virtuels +
-local_enable=YES #autoriser les utilisateurs locaux à utiliser le FTP, +
-                 # y compris les utilisateurs virtuels +
-write_enable=NO ​ # On désactive l'écriture +
-nopriv_user=ftpsecure # (1) +
-chroot_local_user=YES # emprisonner l'utilisateur dans son propre répertoire+
  
-#ajout pour utilisateur ftpsecure +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. 
-guest_enable=YES +  
-guest_username=ftpvirtual+===== Installation et utilisations===== 
 +====Installation et configuration basique de vsftpd==== 
 +===Installation de vsftpd=== 
 +<code root>​apt-get install vsftpd</​code>​
  
-#Ajout pour activer la configuration par utilisateur +===Mon serveur vsftp est-il en fonction? === 
-user_config_dir=/​etc/​vsftpd_user_conf +Pour le savoir deux méthodes : 
-</​code>​ +<code root>​netstat -a | grep ftp</​code>​ 
-(1) Le démon vsftpd peut utiliser un utilisateur sans privilège. Par défaut, il utilisera nobody, comme tout autre démon ​en dé-commentant,​ on lui dédie un utilisateur comme ftpsecure.+<code>tcp    0      0 *:ftp     *:*      LISTEN</​code>​
  
-===On dédie l'​utilisateur "​ftpsecure"​=== +-> C'est ok !
-<code root>​useradd ​-r -s /bin/false ftpsecure</​code>+
  
-===Création ​d'un répertoire utilisateur ftp ===+<code root>/​etc/​init.d/vsftpd status</​code>​ 
 +<​code>​vsftpd is running</​code>​
  
-<code root>​useradd ​-m ftpvirtual</​code> +-> C'est ok aussi !
- +
-===Ajout des droits en écriture sur le répertoire ftpvirtual === +
-<code root>​chmod a-w /​home/​ftpvirtual/</​code>​ +
- +
-===Créer le répertoire de configuration de l'utilisateur virtuel=== +
-<code root>​mkdir /​etc/​vsftpd_user_conf</​code>​ +
- +
-====Configurer SSL pour vsFTPd ==== +
-Il faut éditer le fichier de configuration de vsftpd.+
  
 +===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 root>vim /​etc/​vsftpd.conf</​code>​
 +<​code>​listen=YES
 +anonymous_enable=NO
 +local_enable=YES
 +ftpd_banner=Bienvenue !</​code>​
  
-<​code>​ +===Première connexion avec le compte de l'​utilisateur principal sur le serveur=== 
-ssl_enable=YES +Depuis le client une autre machine virtuelle par exemple que celle sur laquelle on a installé vsftpd on tape simplement : 
-rsa_private_key_file=/​etc/​ssl/​private/vsftpd.key.pem +<​code ​user>ftp 192.168.0.10<​/code> 
-rsa_cert_file=/​etc/​ssl/​certs/​vsftpd.cert.pem</​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.
  
-===Création ​des clés privée/​publique ===+Voyons maintenant le détail ​des options possibles et l'​installation d'un certificat ssl pour chiffrer le mot de passe de l'​utilisateur.
  
-<code root>​openssl genrsa -des3 -out /etc/ssl/​private/​vsftpd.key.pem</​code>​ +====Configuration de vsftpd avec ssl ==== 
- +===Installation ​de open-ssl === 
-On donne les droits ​de lecture : +<code root>apt-get install openssl</​code>​
-<code root>chmod 400 /​etc/​ssl/​private/​vsftpd.key.pem</​code>​+
  
 ===Création du certificat=== ===Création du certificat===
-<code root>​openssl req -new -key /​etc/​ssl/​private/​vsftpd.key.pem -out /​etc/​ssl/​certs/​vsftpd.cert.pem</​code>​+Peut importe d'où la commande suivante va être lancé on déplacera le fichier qu'​elle va créer.
  
-====Créer une base de donnée ==== +<code root>openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem</code
-<code root>cd /etc/</​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>vim vsftpd_logins.txt</code> +<code root>mv vsftpd.pem /etc/​ssl/​certs</​code>​
-<​code>​user +
-password +
-user2 +
-password2</​code>​+
  
-  * Installer les outils pour une base de donnée de type Berkeley ​:+  * Pour sécuriser tout ça :
  
-<code root>apt-get install db-util</​code>​+<code root>chown root:root /​etc/​ssl/​certs/​vsftpd.pem</​code>​
  
-  * Convertir le fichier utilisateur/​mot-de-passe : +<code root>chmod 600 /etc/ssl/certs/vsftpd.pem</​code>​
-<code root>db_load -T -t hash -f /etc/vsftpd_logins.txt ​/etc/vsftpd_login.db</​code>​+
  
-  * Modifier les droits des deux fichiers : +Et voilà !\\  
-<code root>​chmod 600 /etc/vsftpd_login.txt /​etc/​vsftpd_login.db</​code>​+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 ...
  
-====Créer un fichier de règle PAM ==== +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]]
-Cela permet d'​utiliser ​cette base de données lors de l'​authentification des utilisateurs.+
  
-  * Supprimer ​le fichier PAM existant ​:+  * É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>​
  
-<code root>mv /etc/pam.d/vsftpd ​/​home/​hypathie/​PAM-OLD</​code>​+====Connexion au serveur ​vsftpd ​avec ssl==== 
 +===Installation sur le client de ftp-ssl===
  
-  * En éditer un nouveau : +<code root>apt-get install ftp-ssl</​code>​
-<code root>vim /​etc/​pam.d/​vsftpd</​code>​ +
-<​code>​</​code>​+
  
-====Créer un fichier de configuration par utilisateur==== +<note imprtant>​Cela va désinstaller ftp client !\\  
-Pour l'​instantl'​utilisateur virtuel peut lire les fichiers présents ​dans le répertoire de dépôt FTP+Donc il faudra forcement passer par ftp-sslet on ne pourra plus se connecter au serveur comme dans la première partie du wiki.\\  
-On va lui donner les droits d'​uploader lui-même des fichiers.+Mais ça veut mieux ! 
 +</​note>​
  
-Pour cela, chaque utilisateur virtuel devra avoir sa propre configuration située dans le répertoire ​/etc/​vsftpd_user_conf.+===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
  
-  * Editer le fichier de configuration d'un utilisateur virtuel ​:+<​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>​
  
-<code root>vim /​etc/​vsftpd_user_conf/​user</​code+où ''​Password''​ : est le mot de passe du compte de l'​utilisateur "​hypathie"​ sur le système Linux. 
-<​code>​ + 
-anon_world_readable_only=NO +Et voilà !
-write_enable=YES +
-anon_upload_enable=YES +
-anon_mkdir_write_enable=YES +
-anon_other_write_enable=YES +
-</​code>​+
  
-====Redémarrer et tester==== 
-  * Redémarrer le service vsftpd : 
-<code root>/​etc/​init.d/​vsftpd start</​code>​ 
  
-  * Se connecter au serveur : 
-<code root>ftp localhost</​code>​ 
  
 ===== Utilisation ===== ===== Utilisation =====
  
  
utilisateurs/hypathie/tutos/vsftpd.txt · Dernière modification: 02/10/2014 18:40 par Hypathie

Pied de page des forums

Propulsé par FluxBB