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 12/10/2020, 09:07]
L'Africain
vsftpd [Le 24/10/2022, 15:25] (Version actuelle)
83.202.18.219
Ligne 6: Ligne 6:
 Je n'ai pas tout vérifié en détail mais je vous conseille de vérifier les paramètres donnés avec le man du site officiel!</​note>​ Je n'ai pas tout vérifié en détail mais je vous conseille de vérifier les paramètres donnés avec le man du site officiel!</​note>​
  
-====== Préambule : FTP et "​FTP-Like"​ sécurisés ====== ​+====== Préambule : FTP et "​FTP-Like"​ sécurisés ======
  
 Au niveau des protocoles de transfert de fichiers, il y a le FTP classique: Tout y passe en clair (y compris les infos de login/mot de passe). Ce protocole utilise un canal de contrôle et un canal de données (par défaut, port 21 en destination pour le canal contrôle). Au niveau des protocoles de transfert de fichiers, il y a le FTP classique: Tout y passe en clair (y compris les infos de login/mot de passe). Ce protocole utilise un canal de contrôle et un canal de données (par défaut, port 21 en destination pour le canal contrôle).
Ligne 28: Ligne 28:
 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 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 a été très vite corrigée.+Néanmoins deux  [[https://​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 a été très vite corrigée.
  
 Ce serveur est utilisé à grande échelle, notamment 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 :
  
   - Seul le compte **anonyme** est autorisé à se connecter au serveur   - Seul le compte **anonyme** est autorisé à se connecter au serveur
Ligne 44: Ligne 44:
  
 ===== Installation ===== ===== Installation =====
- 
 [[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt>​vsftpd]]**. [[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt>​vsftpd]]**.
 +<code bash> sudo apt install vsftpd </​code>​
 Il est parfois nécessaire de créer un compte ftp, l'​absence de l'​option *system* crée une faille de sécurité et bloque la désinstallation du paquet. Il est parfois nécessaire de créer un compte ftp, l'​absence de l'​option *system* crée une faille de sécurité et bloque la désinstallation du paquet.
 <code bash>​sudo useradd --system ftp </​code>​ <code bash>​sudo useradd --system ftp </​code>​
 Pensez à redémarrer le service : Pensez à redémarrer le service :
-<code bash>​sudo systemctl ​start vsftpd +<code bash>​sudo systemctl ​restart ​vsftpd</​code>​ 
-sudo systemctl enable vsftpd</​code>​+Vérifier l'​état du service. 
 +<code bash>​sudo systemctl status vsftpd</​code>​ 
 +<code bash>sudo systemctl enable vsftpd</​code>​
 Et à ouvrir les ports de votre pare-feu si nécessaire :​ Et à ouvrir les ports de votre pare-feu si nécessaire :​
 <code bash>​sudo ufw allow 20/tcp <code bash>​sudo ufw allow 20/tcp
Ligne 61: Ligne 62:
  
 ==== Configuration de base ==== ==== Configuration de base ====
-  * Vous pouvez personnaliser le texte de connexion au serveur ​  +  * Vous pouvez personnaliser le texte de connexion au serveur : <file bash>ftpd_banner=Bienvenue sur le serveur ftp de LUCAS</​file>​
-    ​ftpd_banner=Bienvenue sur le serveur ftp de LUCAS+
  
-  * Pour permettre des utilisateurs anonymes de se connecter au serveur en lecture seule+  * Pour permettre des utilisateurs anonymes de se connecter au serveur en lecture seule <​file ​bash
-<​file ​conf+anonymous_enable=YES 
-  anonymous_enable=YES +anon_upload_enable=NO 
-  anon_upload_enable=NO +anon_mkdir_write_enable=NO 
-  anon_mkdir_write_enable=NO +anon_other_write_enable=NO 
-  anon_other_write_enable=NO +anon_world_readable_only=YES 
-  anon_world_readable_only=YES +anon_root=<​Path_du_répertoire_anonyme>​ 
-  anon_root=<​Path_du_répertoire_anonyme>​ +</file>
-<​file>​+
   * Pour permettre à vos utilisateurs locaux (ceux qui ont un compte sur la machine) de se connecter au serveur et d'​écrire:​ <file bash>​local_enable=YES   * Pour permettre à vos utilisateurs locaux (ceux qui ont un compte sur la machine) de se connecter au serveur et d'​écrire:​ <file bash>​local_enable=YES
 write_enable=YES write_enable=YES
 local_umask=022</​file>​ local_umask=022</​file>​
   * Pour permettre à vsftpd de charger une liste d'​utilisateurs décommentez la ligne : <file bash>​userlist_enable=YES</​file>​   * Pour permettre à vsftpd de charger une liste d'​utilisateurs décommentez la ligne : <file bash>​userlist_enable=YES</​file>​
-Il faudra alors ajouter le nom des utilisateurs qui auront les accès dans le fichier **etc/​vsftpd.userlist**+Il faudra alors ajouter le nom des utilisateurs qui auront les accès dans le fichier **/etc/​vsftpd.userlist**
  
   * Vous pouvez « emprisonner » certains utilisateurs dans leur dossier personnel afin qu'il ne puissent pas naviguer dans le système de fichier.   * Vous pouvez « emprisonner » certains utilisateurs dans leur dossier personnel afin qu'il ne puissent pas naviguer dans le système de fichier.
-Il faut créer ​un répertoire ​dédié à la configuration de vsftpd ​et y mettre le fichier liste.+Il faut créer ​le fichier ​dédié à la configuration de vsftpd ​**/​etc/​vsftpd/​chroot.list**,​ [[sudo|avec les droits d'​administration]].
  
-  sudo mkdir /​etc/​vsftpd +Les identifiants des utilisateurs concernés doivent être renseignés dans ///​etc/​vsftpd/​chroot.list//​ sous la forme d'une simple liste : ​<​file>​utilisateur_1 
-  gksu gedit /​etc/​vsftpd/​chroot.list +utilisateur_2 
- +...</​file>​
-Les identifiants des utilisateurs concernés doivent être renseignés dans ///​etc/​vsftpd/​chroot.list//​ sous la forme d'une simple liste: +
- +
-  ​utilisateur_1 +
-  utilisateur_2 +
-  ...+
  
 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:
- +<file bash> 
-  # Pas besoin d'​avoir un accès root +# Pas besoin d'​avoir un accès root 
-  chroot_local_user=NO +chroot_local_user=NO 
-  # Emprisonner dans son répertoire home les utilisateurs +# Emprisonner dans son répertoire home les utilisateurs 
-  chroot_list_enable=YES ​        +chroot_list_enable=YES 
-  # La lise des prisonniers +# La lise des prisonniers 
-  chroot_list_file=/​etc/​vsftpd/chroot.list +chroot_list_file=/​etc/​vsftpd.chroot_list 
-  # Evite l'​erreur 500 OOPS: vsftpd: refusing to run with writable root inside chroot(). +# Evite l'​erreur 500 OOPS: vsftpd: refusing to run with writable root inside chroot(). 
-  # Les prisonniers peuvent écrire dans leur propre répertoire ​    ​ +# Les prisonniers peuvent écrire dans leur propre répertoire 
-  allow_writeable_chroot=YES +allow_writeable_chroot=YES 
 +</​file>​
 <note important>​Attention,​ si ''​chroot_list_enable''​ est à NO, 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>​
  
Ligne 108: Ligne 102:
  
 Si vous voulez changer le port pour transmettre les commandes qui est par défaut (21) : Si vous voulez changer le port pour transmettre les commandes qui est par défaut (21) :
- +<​file>​listen_port=222</​file>​
-  ​listen_port=222+
  
   * Pour avoir un monitoring ​ basique (voir les utilisateurs connectés) :   * Pour avoir un monitoring ​ basique (voir les utilisateurs connectés) :
- +<​file>​setproctitle_enable=YES</​file>​
-   setproctitle_enable=YES+
  
  ​Ensuite,​ pour voir la liste 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 :
- +<code bash>ps -aef | grep vsftpd</​code>​
-   ps -aef | grep vsftpd+
  
 ou pour suivre les connexions en continu : ou pour suivre les connexions en continu :
- +<code bash>watch -n 1 'ps ax | grep vsftpd | grep -v grep'</​code>​
-   watch -n 1 'ps ax | grep vsftpd | grep -v grep'+
  
  ​**Attention,​ tous les utilisateurs du système ayant accès à la commande "​ps" ​ pourront également visualiser la liste des utilisateurs connectés.**  ​**Attention,​ tous les utilisateurs du système ayant accès à la commande "​ps" ​ pourront également visualiser la liste des utilisateurs connectés.**
Ligne 161: Ligne 151:
 ===== vsftpd et SSL ===== ===== vsftpd et SSL =====
  
-[[http://​www.brennan.id.au/​14-FTP_Server.html|Principale source d'​informations]]+[[https://​www.brennan.id.au/​14-FTP_Server.html|Principale source d'​informations]]
  
 Le principal défaut du protocole FTP est que le couple nom d'​utilisateur / mot de passe transite en clair sur le réseau. Il est cependant possible d'​ajouter une couche de sécurité supplémentaire,​ à savoir SSL, pour chiffrer les échanges d'​authentification et/ou de données. Le principal défaut du protocole FTP est que le couple nom d'​utilisateur / mot de passe transite en clair sur le réseau. Il est cependant possible d'​ajouter une couche de sécurité supplémentaire,​ à savoir SSL, pour chiffrer les échanges d'​authentification et/ou de données.
Ligne 169: Ligne 159:
 === Création du certificat === === Création du certificat ===
  
-Il vous faut [[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] **[[apt://openssl|openssl]]**+Il vous faut [[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] **[[apt>openssl]]**
  
    sudo openssl req -new -x509 -days 365 -nodes -out /​etc/​ssl/​private/​vsftpd.cert.pem -keyout /​etc/​ssl/​private/​vsftpd.key.pem    sudo openssl req -new -x509 -days 365 -nodes -out /​etc/​ssl/​private/​vsftpd.cert.pem -keyout /​etc/​ssl/​private/​vsftpd.key.pem
  
-Openssl va vous poser quelques questions, la plus critique est celle ci : +Openssl va vous poser quelques questions, la plus critique est celle ci :
  
   Common Name (eg, YOUR name) []:   Common Name (eg, YOUR name) []:
  
-Il faut écrire le nom ou l'ip que les clients utiliseront. ​+Il faut écrire le nom ou l'ip que les clients utiliseront.
 Il est possible de faire un certificat signé par sa propre autorité de certification et donc générer des certificats valides, une fois que vos clients ont reconnu votre autorité de certification : [[http://​www.debian-administration.org/​articles/​284|Creating and Using a self signed SSL Certificates in debian]] Il est possible de faire un certificat signé par sa propre autorité de certification et donc générer des certificats valides, une fois que vos clients ont reconnu votre autorité de certification : [[http://​www.debian-administration.org/​articles/​284|Creating and Using a self signed SSL Certificates in debian]]
  
-Un certificat (vsftpd.cert.pem) ainsi qu'une clé privée (vsftpd.key.pem) ont été générés dans le dossier /​etc/​ssl/​private/​. ​+Un certificat (vsftpd.cert.pem) ainsi qu'une clé privée (vsftpd.key.pem) ont été générés dans le dossier /​etc/​ssl/​private/​.
 Sécurisons-les : Sécurisons-les :
   sudo chown root:root /​etc/​ssl/​private/​vsftpd.cert.*   sudo chown root:root /​etc/​ssl/​private/​vsftpd.cert.*
Ligne 209: Ligne 199:
 </​file>​ </​file>​
 force_local_data_ssl=NO ​ <-- vous pouvez mettre à "​YES"​ si vous utilisez Kasablanca. force_local_data_ssl=NO ​ <-- vous pouvez mettre à "​YES"​ si vous utilisez Kasablanca.
-A priori, un : +A priori, un :
   sudo service vsftpd reload ​   sudo service vsftpd reload ​
 devrait bien se passer. devrait bien se passer.
Ligne 248: Ligne 238:
 1- à redémarrer le serveur avec la commande suivante 1- à redémarrer le serveur avec la commande suivante
  
-<​code>​ +<​code ​bash>sudo service vsftpd reload
-  ​sudo service vsftpd reload+
 </​code>​ </​code>​
  
Ligne 256: Ligne 245:
 3- et à configurer votre client ftp de façon à ce que celui-ci réalise des connexions en mode passif (mode passif dans les paramètres du pare-feu de Filezilla par exemple) 3- et à configurer votre client ftp de façon à ce que celui-ci réalise des connexions en mode passif (mode passif dans les paramètres du pare-feu de Filezilla par exemple)
  
-<note important>​Attention : Les versions inférieures ou égales à 2.0.6 de vsFTPd ont un défaut de négociation de la connexion avec SSL et il faut utiliser la version 2.0.7 ou supérieure qui corrige ce problème. À l'​heure actuelle, vous pouvez utiliser la dernière version (hautement recommandé) qui est donc la 2.3.0. Autrement, il faut donc compiler le serveur soi-même (plus compliqué mais bien utile quand on s'en sert correctement). Voir [[http://​forum.filezilla-project.org/​viewtopic.php?​f=2&​t=7688 | ce lien]].</​note>​+<note important>​Attention : Les versions inférieures ou égales à 2.0.6 de vsFTPd ont un défaut de négociation de la connexion avec SSL et il faut utiliser la version 2.0.7 ou supérieure qui corrige ce problème. À l'​heure actuelle, vous pouvez utiliser la dernière version (hautement recommandé) qui est donc la 2.3.0. Autrement, il faut donc compiler le serveur soi-même (plus compliqué mais bien utile quand on s'en sert correctement). Voir [[https://​forum.filezilla-project.org/​viewtopic.php?​f=2&​t=7688 | ce lien]].</​note>​
  
 ===== Configurer VSFTPD pour utiliser des utilisateurs virtuels ===== ===== Configurer VSFTPD pour utiliser des utilisateurs virtuels =====
  
 Nous allons configurer VSFTPD pour utiliser seulement des utilisateurs virtuels et non pas les utilisateurs locaux de votre machine. Nous allons configurer VSFTPD pour utiliser seulement des utilisateurs virtuels et non pas les utilisateurs locaux de votre machine.
-Pour cela nous allons créer des dossiers afin d'y placer nos futurs fichiers de configuration: ​+Pour cela nous allons créer des dossiers afin d'y placer nos futurs fichiers de configuration:​
  
 <​code>​ <​code>​
Ligne 276: Ligne 265:
 ====Créer la base de données des utilisateurs virtuels==== ====Créer la base de données des utilisateurs virtuels====
  
-<note tip>Vous allez avoir maintenant besoin d'​installer un programme permettant d'​interragir avec des fichiers sous forme de base de donnée: [[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt://libdb5.1,​db5.1-util,​db5.1-doc|libdb4.8 db4.8-util db4.8-doc]]** . Il est conseillé d'​utiliser la version la plus récente qui est à ce jour la 4.8 mais qui est susceptible d'​évoluer au cours du temps, n'​oubliez donc pas d'​adapter le tutoriel.</​note>​+<note tip>Vous allez avoir maintenant besoin d'​installer un programme permettant d'​interragir avec des fichiers sous forme de base de donnée: [[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt>libdb5.1,​db5.1-util,​db5.1-doc|libdb4.8 db4.8-util db4.8-doc]]**. Il est conseillé d'​utiliser la version la plus récente qui est à ce jour la 4.8 mais qui est susceptible d'​évoluer au cours du temps, n'​oubliez donc pas d'​adapter le tutoriel.</​note>​
  
-<note tip>Si les paquets sont introuvables,​ recherchez une autre version, par exemple : [[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt://libdb5.3,​db5.3-util]]**,​ remplacez plus loin la ligne de commande db4.8_load par db5.3_load</​note>​+<note tip>Si les paquets sont introuvables,​ recherchez une autre version, par exemple : [[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt>libdb5.3,​db5.3-util]]**,​ remplacez plus loin la ligne de commande db4.8_load par db5.3_load</​note>​
  
 Création du fichier PAM : Création du fichier PAM :
-Il faut effacer le contenu du fichier **/​etc/​pam.d/​vsftpd** et le remplacer par : +Il faut effacer le contenu du fichier **/​etc/​pam.d/​vsftpd** et le remplacer par :
  
 <​file>​ <​file>​
Ligne 304: Ligne 293:
 </​note>​ </​note>​
  
-Créons un fichier **login.txt** dans **/​etc/​vsftpd/​** , avec vos utilisateurs et mots de passe : +Créons un fichier **login.txt** dans **/​etc/​vsftpd/​** , avec vos utilisateurs et mots de passe :
  
 <​file>​ <​file>​
Ligne 323: Ligne 312:
 </​code>​ </​code>​
  
-on sécurise nos fichiers : +on sécurise nos fichiers :
  
 <​code>​ <​code>​
Ligne 330: Ligne 319:
 ====Configuration du fichier /​etc/​vsftpd.conf==== ====Configuration du fichier /​etc/​vsftpd.conf====
  
-<​file>​+<​file ​bash>
 # Ceci configure vsFTPd en mode "​standalone"​ # Ceci configure vsFTPd en mode "​standalone"​
 listen=YES listen=YES
Ligne 385: Ligne 374:
 </​file>​ </​file>​
  
-Relançons le serveur : +Relançons le serveur :
  
 <​code>​ <​code>​
Ligne 397: Ligne 386:
 Par défaut les utilisateurs virtuels n'ont aucun droit, il faut donc les définir pour chacun d'​entre eux : Par défaut les utilisateurs virtuels n'ont aucun droit, il faut donc les définir pour chacun d'​entre eux :
  
-Pour celà il faut créer un fichier de configuration pour chacun de vos utilisateurs dans le dossier **/​etc/​vsftpd/​vsftpd_user_conf/​**\\ +Pour celà il faut créer un fichier de configuration pour chacun de vos utilisateurs dans le dossier **/​etc/​vsftpd/​vsftpd_user_conf/​**
 Par exemple pour '​util1'​ il faut configurer le fichier **/​etc/​vsftpd/​vsftpd_user_conf/​util1** Par exemple pour '​util1'​ il faut configurer le fichier **/​etc/​vsftpd/​vsftpd_user_conf/​util1**
  
-Exemple de fichier : +Exemple de fichier :
  
 <​file>​ <​file>​
Ligne 427: Ligne 416:
 </​file>​ </​file>​
  
-<note important>​Ne pas oublier de rajouter ​+<note important>​Ne pas oublier de rajouter
   ## Activer la configuration per-user   ## Activer la configuration per-user
   user_config_dir=/​etc/​vsftpd/​vsftpd_user_conf   user_config_dir=/​etc/​vsftpd/​vsftpd_user_conf
Ligne 438: Ligne 427:
 </​code>​ </​code>​
  
-Ce scripte donne tous les droits à chacun de vos utilisateurs virtuels et ne supprime pas le dossier d'un utilisateur lors de sa suppression de la base de données.\\ +Ce scripte donne tous les droits à chacun de vos utilisateurs virtuels et ne supprime pas le dossier d'un utilisateur lors de sa suppression de la base de données.
 Libre à vous de modifier ce script ou de changer les droits utilisateurs dans vos fichiers de configuration. Libre à vous de modifier ce script ou de changer les droits utilisateurs dans vos fichiers de configuration.
  
Ligne 507: Ligne 496:
  
 == Sous  Windows== == Sous  Windows==
-  * FileZilla ou smartFtP option :  "FTP over TLS Explicit" ​+  * FileZilla ou smartFtP option :  "FTP over TLS Explicit"​
   * Winscp   * Winscp
   * CoreFTP Lite   * CoreFTP Lite
Ligne 520: Ligne 509:
   * ftp (sans chiffrement)   * ftp (sans chiffrement)
   * lftp [[http://​lftp.yar.ru/​|home page]]   * lftp [[http://​lftp.yar.ru/​|home page]]
-  * kasablanca - Kasablanca est un client graphique FTP. Parmi ses fonctions, on peut citer le support du chiffrement (par authentification TLS, et non SFTP),FXP (accès direct entre deux serveurs FTP,un gestionnaire de signets et un système de mise en queue. ​+  * kasablanca - Kasablanca est un client graphique FTP. Parmi ses fonctions, on peut citer le support du chiffrement (par authentification TLS, et non SFTP),FXP (accès direct entre deux serveurs FTP,un gestionnaire de signets et un système de mise en queue.
      ​Tourne sous Kde (mais aussi sous gnome avec les lib Kde) [[http://​kasablanca.berlios.de/​|home page]]      ​Tourne sous Kde (mais aussi sous gnome avec les lib Kde) [[http://​kasablanca.berlios.de/​|home page]]
   * Kftpgrabber (FTP utilisant TLS/SSL explicite et implicite)   * Kftpgrabber (FTP utilisant TLS/SSL explicite et implicite)
-  * gftp sous Debian/​Ubuntu ne supporte pas ssl [[http://​bugs.debian.org/​cgi-bin/​bugreport.cgi?​bug=251121|rapport de bogue]]+  * gftp sous Debian/​Ubuntu ne supporte pas ssl [[https://​bugs.debian.org/​cgi-bin/​bugreport.cgi?​bug=251121|rapport de bogue]]
 Par contre, il supporte parfaitement le SFTP (selectionner SSH2 à la place de FTP), qui ne pose pas les problèmes de licence de SSL. Par contre, il supporte parfaitement le SFTP (selectionner SSH2 à la place de FTP), qui ne pose pas les problèmes de licence de SSL.
  
   * FireFTP, extension pour Firefox   * FireFTP, extension pour Firefox
  
-  * Filezilla,  +  * Filezilla,​ 
-  * Nautilus,  +  * Nautilus, 
-  * gftp sous ubuntu, ​+  * gftp sous ubuntu,
   * et... si vous en connaissez un autre ---> "​Éditer"​ :-D   * et... si vous en connaissez un autre ---> "​Éditer"​ :-D
  
  • vsftpd.1602486426.txt.gz
  • Dernière modification: Le 12/10/2020, 09:07
  • par L'Africain