Contenu | Rechercher | Menus

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
vsftpd [Le 18/06/2014, 20:52]
78.208.224.4 [Parade contre le bogue de la version 2.3.5]
vsftpd [Le 28/03/2017, 10:33] (Version actuelle)
194.214.165.66 [Partage de dossier et chroot]
Ligne 1: Ligne 1:
-{{tag>Dapper ​ftp serveur sécurité}}+{{tag>Maverick ​ftp serveur sécurité}}
  
 ---- ----
Ligne 27: Ligne 27:
 Autre corollaire: Ceux qui ont déjà OpenSSH Server sur leur machine peuvent éviter un doublon et préférer utiliser SFTP. Cependant, SFTP donnant accès à toute l'​arborescence (A priori il y a une option pour changer cela dans le CVS), il faudra souvent restreindre l'​accès à l'​utilisateur créé : cet utilisateur sera créé avec un shell restreint (type rssh) ne donnant accès qu'aux commandes SFTP et/ou SCP. Il faudra par ailleurs lui créer un environnement chrooté pour le bloquer dans une sous-arborescence (son home par exemple). D'​autres tutoriels traitent ces points. Autre corollaire: Ceux qui ont déjà OpenSSH Server sur leur machine peuvent éviter un doublon et préférer utiliser SFTP. Cependant, SFTP donnant accès à toute l'​arborescence (A priori il y a une option pour changer cela dans le CVS), il faudra souvent restreindre l'​accès à l'​utilisateur créé : cet utilisateur sera créé avec un shell restreint (type rssh) ne donnant accès qu'aux commandes SFTP et/ou SCP. Il faudra par ailleurs lui créer un environnement chrooté pour le bloquer dans une sous-arborescence (son home par exemple). D'​autres tutoriels traitent ces points.
  
-====== Serveur FTP : Very secure FTP daemon ​======+===== Serveur FTP : Very secure FTP daemon =====
  
 VsFTPd est un serveur FTP conçu avec la problématique d'une sécurité maximale. Contrairement aux autres serveurs FTP (ProFTPd, PureFTPd, etc.), aucune faille majeure de sécurité n'a jamais été décelée dans VsFTPd. VsFTPd est un serveur FTP conçu avec la problématique d'une sécurité maximale. Contrairement aux autres serveurs FTP (ProFTPd, PureFTPd, etc.), aucune faille majeure de sécurité n'a jamais été décelée dans VsFTPd.
  
-Néanmoins deux  [[http://​www.debian.org/​security/​2011/​dsa-2305|failles ​permettent ​un DoS]] avaient été détectées,​ la première était due à une faille d'un vieux noyau linux (avant 2.6.35), et la deuxième ​à été très vite corrigée.+Néanmoins deux  [[http://​www.debian.org/​security/​2011/​dsa-2305|failles ​permettant ​un DoS]] avaient été détectées,​ la première était due à une faille d'un vieux noyau linux (avant 2.6.35), et la deuxième ​été très vite corrigée.
  
-Ce serveur est notamment ​utilisé à grande échelle par des entreprises telles que Red Hat.+Ce serveur est utilisé à grande échelle, notamment ​par des entreprises telles que Red Hat.
  
 La configuration __par défaut__ de VsFTPd est très restrictive :  La configuration __par défaut__ de VsFTPd est très restrictive : 
Ligne 43: Ligne 43:
 Remarques :\\ Remarques :\\
 Aussi sécurisé que soit un serveur ftp, le protocole ftp en lui même **n'​est pas sûr** ! En effet l'​échange du nom d'​utilisateur et du mot de passe transite en clair sur le réseau. Aussi sécurisé que soit un serveur ftp, le protocole ftp en lui même **n'​est pas sûr** ! En effet l'​échange du nom d'​utilisateur et du mot de passe transite en clair sur le réseau.
-Si vous utilisez ce serveur sur votre LAN pas de soucis, mais attention si vous comptez utiliser le serveur ftp depuis internet, de fait n'​utilisez pas un compte qui a les droits sudo via ftp (en fait n'​utilisez de l'​extérieur ce compte QUE via ssh ou tout autre protocole sécurisé, POPs, etc.)</​note>​+Si vous utilisez ce serveur sur votre LANpas de soucis, mais attention si vous comptez utiliser le serveur ftp depuis internet. De faitn'​utilisez pas un compte qui a les droits sudo via ftp (en fait n'​utilisez de l'​extérieur ce compte QUE via ssh ou tout autre protocole sécurisé, POPs, etc.)</​note>​
  
  
Ligne 61: Ligne 61:
  
 La configuration de VsFTPd est centralisée dans un seul et même fichier **/​etc/​vsftpd.conf**. Choisissez [[:​tutoriel:​comment_editer_un_fichier|votre éditeur de texte favori]] (en mode [[:​sudo|super utilisateur]]) et appliquez les modifications suivantes en fonction du mode de fonctionnement de VsFTPd. La configuration de VsFTPd est centralisée dans un seul et même fichier **/​etc/​vsftpd.conf**. Choisissez [[:​tutoriel:​comment_editer_un_fichier|votre éditeur de texte favori]] (en mode [[:​sudo|super utilisateur]]) et appliquez les modifications suivantes en fonction du mode de fonctionnement de VsFTPd.
- 
-**La version 2.3.5 livrée en standard avec Ubuntu est boguée**.\\ 
-L'​utilisation du mode "​prison"​ provoque une erreur : //500 OOPS: vsftpd: refusing to run with writable root inside chroot()//​\\ 
-L'​utilisateur ne peut pas accéder à son répertoire personnel. Une [[#​parade_contre_le_bug_de_la_version_235|"​parade"​]] est décrite plus bas en attendant que la version 3.x soit présente dans les dépôts. 
  
 ==== Configuration de base ==== ==== Configuration de base ====
   * Vous pouvez personnaliser le texte de connexion au serveur  ​   * Vous pouvez personnaliser le texte de connexion au serveur  ​
- 
     ftpd_banner=Bienvenue sur le serveur ftp de LUCAS     ftpd_banner=Bienvenue sur le serveur ftp de LUCAS
  
Ligne 101: Ligne 96:
 Il faut ensuite modifier la configuration générale (/​etc/​vsftpd.conf) et ajouter ces lignes: Il faut ensuite modifier la configuration générale (/​etc/​vsftpd.conf) et ajouter ces lignes:
  
-  chroot_local_user=NO+  chroot_local_user=YES
   chroot_list_enable=YES   chroot_list_enable=YES
   ​   ​
   chroot_list_file=/​etc/​vsftpd/​chroot.list   chroot_list_file=/​etc/​vsftpd/​chroot.list
  
-<note important>​Attention,​ si chroot_local_user ​est à YES, cette liste devient la liste des utilisateurs qui ne seront PAS dans leur "​prison"​ </​note>​+<note important>​Attention,​ si chroot_list_enable ​est à NO, cette liste devient la liste des utilisateurs qui ne seront PAS dans leur "​prison"​ </​note>​
  
 ==== Configuration avancée ==== ==== Configuration avancée ====
Ligne 114: Ligne 109:
   listen_port=222   listen_port=222
  
-  * Pour avoir un monitoring  ​basic (voir les utilisateurs connectés) :+  * Pour avoir un monitoring  ​basique ​(voir les utilisateurs connectés) :
  
    ​setproctitle_enable=YES    ​setproctitle_enable=YES
  
- ​Ensuite,​ pour voir la des utilisateurs il suffit de taper la commande suivante dans un terminal :+ ​Ensuite,​ pour voir la liste des utilisateurs il suffit de taper la commande suivante dans un terminal :
  
    ps -aef | grep vsftpd    ps -aef | grep vsftpd
Ligne 147: Ligne 142:
 La commande à utiliser est mount avec l'​option --bind La commande à utiliser est mount avec l'​option --bind
  
-  ​mkdir ~/​PointDeMontage +<​code>​mkdir ~/​PointDeMontage 
-  sudo mount --bind <​path_complet_du_dossier_à_relier>​ /​home/<​utilisateur>/​PointDeMontage+sudo mount --bind <​path_complet_du_dossier_à_relier>​ /​home/<​utilisateur>/​PointDeMontage</​code>​
  
 +Si vous souhaitez monter ce dossier automatiquement au démarrage de l'​ordinateur il faut éditer le fichier fstab :
  
-==== "​Parade"​ contre le bogue de la version 2.3.5 ====+<​code>​gksu gedit /​etc/​fstab</​code>​
  
-===NOUVELLE METHODE=== +et y ajouter ​cette ligne :
-<note warning>​**Note du Mercredi 18 Juin 2014 :** le PPA est indisponible (erreur 404) et donc impossible d'​effectuer ​cette nouvelle méthode.</​note>​ +
-Pour contourner le bug, quelqu'​un a réalisé un backport de l'​option allow_writeable_chroot depuis vsftpd 3+
  
-Ajouter l'​option ​//allow_writeable_chroot=YES// dans vsftpd.conf,​ puis :+<​code><​path_complet_du_dossier_à_relier> ​/home/<​utilisateur>​/PointDeMontage ​ none  bind  0  0</code>
  
-<​code>​ 
-sudo apt-get install python-software-properties 
-sudo add-apt-repository ppa:​thefrontiergroup/​vsftpd 
-sudo apt-get update 
-sudo apt-get install vsftpd ​ 
-</​code>​ 
  
  
----- 
-===AUTRE METHODE=== 
  
-  * Dans chaque répertoire utilisateur,​ on crée un répertoire "​FTP"​ appartenant à '​root'​ sur lequel on enlève les droits d'​écriture. 
  
-  sudo mkdir /​home/<​Utilisateur>/​FTP 
-  sudo chmod 555 /​home/<​Utilisateur>/​FTP 
- 
-On crée ensuite un point de montage à l'​intérieur qui appartient à l'​utilisateur 
- 
-  sudo mkdir /​home/<​Utilisateur>/​FTP/​homedir 
-  sudo chown <​Utilisateur>:<​Utilisateur> ​ /​home/<​Utilisateur>/​FTP/​homedir 
- 
-Et on monte en mode '​bind'​ le répertoire réel dans ce répertoire. 
- 
-  mount --bind ​ /​home/<​Utilisateur> ​ /​home/<​Utilisateur>/​FTP/​homedir 
- 
-Répétez ces opération pour chaque utilisateur "​emprisonné"​ 
- 
-On va maintenant préciser à vsftpd, les chemins exacts où l'​utilisateur doit arriver. Pour cela, en plus du fichier liste, on crée un répertoire contenant un fichier par utilisateur 
- 
-  sudo mkdir /​etc/​vsftpd/​users 
-  gksu gedit /​etc/​vsftpd/​users/​utilisateur_1 
- 
-Dans ce fichier, on précise le chemin FTP avec cette syntaxe: 
- 
-  local_root=/​home/​utilisateur_1/​FTP 
- 
-Si tout vos utilisateurs sont emprisonnés,​ vous pouvez utiliser cette commande qui va créer tous les fichiers du répertoire "​users":​ 
- 
-  sudo -s 
-  for h in `ls -1 /home`; do   if [ ! -f /​etc/​vsftpd/​users/​$h ]; then echo local_root=/​home/​$h/​FTP >/​etc/​vsftpd/​users/​$h;​ fi; done 
-  exit 
- 
-On va signaler à vsftpd que l'on utilise un répertoire de gestion des utilisateurs dans son fichier de configuration (/​etc/​vsftpd.conf) 
- 
-  user_config_dir=/​etc/​vsftpd/​users/​ 
-  ​ 
-Lorsque l'​utilisateur va se connecter en FTP, il n'y aura pas d'​erreur puisque le répertoire FTP est en lecture seule et il se retrouvera face à un répertoire ne contenant que sa "​homedir"​. 
- 
-  * Automatisation au démarrage 
- 
-Ajoutez ces lignes au fichier **/​etc/​rc.local** au dessus de la ligne contenant "​exit":​ 
- 
-<​code>#​ mount en bind pour bogue vsftpd 2.3.5 
-for h in `ls -1 /home`; 
-do 
-  if [ ! -d /​home/​$h/​FTP ]; then mkdir /​home/​$h/​FTP;​fi 
-  chmod 555 /​home/​$h/​FTP 
-  if [ ! -d /​home/​$h/​FTP/​homedir ]; then mkdir /​home/​$h/​FTP/​homedir;​fi 
-  chown $h:$h /​home/​$h/​FTP/​homedir 
-  mount --bind /home/$h/ /​home/​$h/​FTP/​homedir ​ 
-done 
-</​code>​ 
 ===== vsftpd et SSL ===== ===== vsftpd et SSL =====
  
Ligne 453: Ligne 389:
 </​code>​ </​code>​
  
-<note important>​attention après un **"​YES"​** ou **"​NO"​** dans fichier de configuration il faut bien un **retour a la ligne seul ** et **ne pas laisser trainer** un **espace** suivi du **retour a la ligne**. Vous arriverez peut-être à relancer le démon mais à la connexion vous obtiendrez une erreur du style **"500 OOPS: bad bool value in config file for:"​** suivie du nom de l'​option où il y a l'​espace en fin de ligne, en le supprimant tout revient dans l'​ordre.</​note>​+<note important>​attention après un **"​YES"​** ou **"​NO"​** dans le fichier de configuration il faut bien un **retour a la ligne seul ** et **ne pas laisser trainer** un **espace** suivi du **retour a la ligne**. Vous arriverez peut-être à relancer le démon mais à la connexion vous obtiendrez une erreur du style **"500 OOPS: bad bool value in config file for:"​** suivie du nom de l'​option où il y a l'​espace en fin de ligne, en le supprimant tout revient dans l'​ordre.</​note>​
  
 ==== Gérer les droits des utilisateurs virtuels ==== ==== Gérer les droits des utilisateurs virtuels ====
Ligne 603: Ligne 539:
  
 //​Contributeur : [[utilisateurs:​ju]],​ [[utilisateurs:​sginer]],​ Yoann Vareille, [[utilisateurs:​snoopy_p]],​ [[utilisateurs:​capripot]],​ [[utilisateurs:​kujakuchan]],​ [[utilisateurs:​kwakpiper]],​ [[utilisateurs:​McPeter]]//​ //​Contributeur : [[utilisateurs:​ju]],​ [[utilisateurs:​sginer]],​ Yoann Vareille, [[utilisateurs:​snoopy_p]],​ [[utilisateurs:​capripot]],​ [[utilisateurs:​kujakuchan]],​ [[utilisateurs:​kwakpiper]],​ [[utilisateurs:​McPeter]]//​
 +
 +===== Problèmes courants =====
 +
 +==== 500 OOPS: vsftpd: refusing to run with writable root inside chroot() ====
 +
 +La version 2.3.5 de vsftpd contient une sécurité qui empêche l'​utilisation du mode « prison » avec accès en écriture dans le dossier racine, d'où l'​erreur « //500 OOPS: vsftpd: refusing to run with writable root inside chroot()//​ ».
 +
 +La solution la plus simple consiste à supprimer l'​accès en écriture du répertoire racine, et à ajouter un sous-répertoire avec accès en écriture.
 +
 +Ainsi, pour la configuration proposée plus haut pour les utilisateurs virtuels, il suffit d'​avoir les répertoires suivants :
 +
 +  $ ls -ld /​chemin_du_dossier
 +  dr-xr-xr-x 3 ftp ftp 4096 févr. ​ 3 11:45 /​chemin_du_dossier
 +
 +  $ ls -ld /​chemin_du_dossier/​sous-dossier
 +  drwxr-xr-x 2 ftp ftp 4096 févr. ​ 3 13:03 /​chemin_du_dossier/​sous-dossier
 +
 +Les utilisateurs ne peuvent pas écrire dans le dossier racine /​chemin_du_dossier (erreur « //553 Could not create file.//​ »),​ mais peuvent écrire dans le sous-dossier.
 +
 +Sinon en mieux...
 +
 +Télécharger la mise à jour de Vsftpd...
 +
 +  $ wget http://​ftp.cyconet.org/​debian/​pool/​main/​v/​vsftpd/​vsftpd_2.3.5-10~update.1_amd64.deb
 +
 +Mettre à jour...
 +
 +  $ dpkg -i vsftpd_2.3.5-10~update.1_amd64.deb
 +
 +Puis ajouter dans le fichier /​etc/​vsftpd.conf "​allow_writeable_chroot=YES"​
 +
 +et redémarrer Vsftpd
 +
 +  $ service vsftpd restart


Le contenu de ce wiki est sous licence : CC BY-SA v3.0