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 02/10/2015, 16:52] (Version actuelle)
2.5.177.61 [Serveur FTP : Very secure FTP daemon]
Ligne 31: Ligne 31:
 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 ====
Ligne 101: Ligne 97:
 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 110:
   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 143:
 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+<code><path_complet_du_dossier_à_relier> ​/home/<​utilisateur>/​PointDeMontage ​ none  bind  0  0</code>
  
-Ajouter l'​option //​allow_writeable_chroot=YES//​ dans vsftpd.conf,​ puis : 
  
-<​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 603: Ligne 540:
  
 //​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