Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Différences

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

Lien vers cette vue comparative

logiciel:internet:ftp:vsftpd:start [2021/01/03 10:21] – [Commandes] adminlogiciel:internet:ftp:vsftpd:start [2022/08/13 22:14] (Version actuelle) – modification externe 127.0.0.1
Ligne 3: Ligne 3:
 ====== VSFTPd : un serveur FTP sécurisé avec des utilisateurs virtuels ====== ====== VSFTPd : un serveur FTP sécurisé avec des utilisateurs virtuels ======
  
-Ce tutoriel explique comment installer et configurer sur Raspberry Pi **vsftpd**un serveur FTP stable, sécurisé et rapide.+**vsftpd** est un serveur FTP stable, sécurisé et rapide.
  
-Par défaut, VsFTPd est configuré de manière très restrictive +Nous allons l'installer et le configurer ainsi 
-  Seuls les utilisateurs locaux sont autorisés à se connecter au serveur +  Seuls les utilisateurs locaux sont autorisés à se connecter au serveur 
-  En lecture seule +  En lecture seule 
-  Les utilisateurs ne peuvent pas accéder à leurs répertoires+  Les utilisateurs ne peuvent pas accéder à leurs répertoires 
 +  * Les options seront réglées utilisateur par utilisateur 
 +  * les utilisateurs seront restreints à leur répertoire d'origine 
 +  * les transmissions seront cryptées avec un certificat auto-signé SSLTLS. 
 +  * nous utiliserons le paramétrage par **utilisateurs virtuels**, avec une base de données de type **Berkeley**.\\ Chaque enregistrement n’est constitué que d'un login et d'un mot de passe.\\ Pour créer un nouvel utilisateur, il suffit de lui créer : 
 +    * une entrée dans la base Berkeley 
 +    * et un fichier de configuration personnel.
  
-De nombreuses options permettant un paramétrage très fin des autorisations, au besoin utilisateur par utilisateur. +Quatre scénarios illustreront les possibilités.
- +
-Nous verrons comment configurer vsftpd pour restreindre les utilisateurs à leur répertoire d'origine et crypter l'ensemble de la transmission avec SSLTLS. +
- +
-Puis nous examinerons quatre scénarios extrêmes montrant à quel point cet outil peut sécuriser les accès sur votre machine...+
  
 <WRAP center round important 60%> <WRAP center round important 60%>
Ligne 28: Ligne 30:
 </WRAP> </WRAP>
  
-Pour gérer plusieurs comptes FTP, nous utiliserons le paramétrage par **utilisateur virtuel**, avec une base de données de type **Berkeley**. +===== Pré-requis =====
- +
-Chaque enregistrement n’est constitué que d'un login et d'un mot de passe. +
- +
-Pour créer un nouvel utilisateur, il suffit de lui créer : +
-  * une entrée dans la base Berkeley +
-  * et un fichier de configuration personnel. +
- +
-====== Pré-requis ======+
  
-====== Installation ======+===== Installation =====
  
   - **Mettez à jour** :<cli prompt='$ '>...@...:~$ sudo apt update</cli>   - **Mettez à jour** :<cli prompt='$ '>...@...:~$ sudo apt update</cli>
Ligne 84: Ligne 78:
 www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin</cli> www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin</cli>
 </WRAP> </WRAP>
-====== Configuration ====== 
  
-Le fichier de configuration du serveur est **[[logiciel:internet:ftp:vsftpd:config:start|]]**. +===== Configuration ===== 
-Voir la page de man **[[logiciel:internet:ftp:vsftpd:config:man:start|]]**+ 
 +Le fichier de configuration du serveur est **[[logiciel:internet:ftp:vsftpd:config:start]]**. 
 +Voir la page de man **[[logiciel:internet:ftp:vsftpd:config:man:start]]**
  
 <WRAP center round info 60%> <WRAP center round info 60%>
Ligne 103: Ligne 98:
     * Montez **/srv** :<cli prompt='$ '>...@...:~$ sudo mount /srv</cli>     * Montez **/srv** :<cli prompt='$ '>...@...:~$ sudo mount /srv</cli>
  
-===== Configuration par défaut ====+==== Configuration par défaut ====
  
 Éditez avec les droits d'administration le fichier **/etc/vsftpd.conf** pour ajouter à la fin les commandes suivantes. Éditez avec les droits d'administration le fichier **/etc/vsftpd.conf** pour ajouter à la fin les commandes suivantes.
  
-==== Commandes ====+=== Commandes ===
  
-  - **Options pour le démon** :<code - /etc/vsftpd.conf>+Nous plaçons à la fin du fichier **/etc/vsftpd.conf** nos réglages par défaut : 
 +  - **Paramètres généraux** :<code - /etc/vsftpd.conf>
 ... ...
 ########## Paramètres personnalisés ########## ########## Paramètres personnalisés ##########
-listen=NO 
- 
-# Bannière de bienvenue 
 ftpd_banner=Bienvenue sur le serveur FTP de ... ftpd_banner=Bienvenue sur le serveur FTP de ...
  
-connexion et contrôle d'accès +un message apparaît chaque fois 
-   Pas d'accès anonymeque des utilisateurs locaux +# qu'un utilisateur ouvre un répertoire avec un fichier .message 
-   (dont les utilisateurs virtuels, mappés sur un utilisateur local+dirmessage_enable=YES 
-   les vrais utilisateurs locaux sont désactivés avec le fichier user_list + 
-anonymous_enable=NO +heure locale de l'ordinateur au lieu de l'heure GMT 
-local_enable=YES+use_localtime=YES 
 + 
 +# Nombre maximum de connexions simultanées 
 +#   Au-delàles nouveaux clients recevront un message du genre : 
 +#   "erreur: serveur occupé" 
 +max_clients=200 
 +# Nombre maximum de connexions venant de la même IP 
 +max_per_ip=4 
 + 
 +# journalisation des transferts 
 +xferlog_enable=YES 
 +</code> 
 +  - **Utilisateurs virtuels** :<code - /etc/vsftpd.conf> 
 +Activation des utilisateurs virtuels 
 +guest_enable=YES 
 +# nom de l'utilisateur (ftpsous lequel ils vont fonctionner 
 +  tous les utilisateurs virtuels -> utilisateur ftp avec son home /srv/ftp 
 +ftp_username=ftp 
 +guest_username=ftp 
 +nopriv_user=ftp
  
 # Fichier de config PAM # Fichier de config PAM
 pam_service_name=vsftpd pam_service_name=vsftpd
 +</code>
 +  - **Connexion et contrôle d'accès** :<code - /etc/vsftpd.conf>
 +# Pas d'accès anonyme, que des utilisateurs locaux
 +# (dont les utilisateurs virtuels, mappés sur un utilisateur local)
 +# les vrais utilisateurs locaux sont désactivés avec le fichier user_list
 +anonymous_enable=NO
 +local_enable=YES
  
-# Limitation des accès des utilisateurs 
 # On refuse les utilisateurs du fichier /etc/vsftpd.user_list # On refuse les utilisateurs du fichier /etc/vsftpd.user_list
 # un utilisateur par ligne # un utilisateur par ligne
Ligne 135: Ligne 152:
 userlist_file=/etc/vsftpd/user_list userlist_file=/etc/vsftpd/user_list
  
-compte de l'utilisateur local employé pour l'utilisateur FTP anonyme +Les utilisateurs locaux restent chez eux 
-ftp_username=ftp +chroot_local_user=YES 
 +allow_writeable_chroot=YES 
 +</code> 
 +  - **Permissions** :<code - /etc/vsftpd.conf>
 # Interdiction de toute action d'écriture : # Interdiction de toute action d'écriture :
 # On spécifiera les droits utilisateur par utilisateur. # On spécifiera les droits utilisateur par utilisateur.
 +write_enable=NO
 anon_mkdir_write_enable=NO anon_mkdir_write_enable=NO
 anon_other_write_enable=NO anon_other_write_enable=NO
 anon_upload_enable=NO anon_upload_enable=NO
 anon_world_readable_only=NO anon_world_readable_only=NO
- 
-# Un utilisateur virtuel peut télécharger un fichier public 
-anon_other_write_enable=NO 
  
 # droits par défaut des fichiers uploadés # droits par défaut des fichiers uploadés
Ligne 155: Ligne 172:
 chmod_enable=YES chmod_enable=YES
 virtual_use_local_privs=YES virtual_use_local_privs=YES
- 
-# Les utilisateurs locaux restent chez eux 
-chroot_local_user=YES 
-allow_writeable_chroot=YES 
- 
-# Activation de la configuration utilisateur par utilisateur 
-user_config_dir=/etc/vsftpd/user_conf 
- 
-# Activation des utilisateurs virtuels 
-guest_enable=YES 
-# nom de l'utilisateur (ftp) sous lequel ils vont fonctionner 
-#   tous les utilisateurs virtuels -> utilisateur ftp avec son home /srv/ftp 
-guest_username=ftp 
-nopriv_user=ftp 
- 
-# local_root 
-# local_umask 
- 
-# un message apparaît chaque fois 
-# qu'un utilisateur ouvre un répertoire avec un fichier .message 
-dirmessage_enable=YES 
- 
-# heure locale de l'ordinateur au lieu de l'heure GMT 
-use_localtime=YES 
- 
-# Téléchargement autorisé 
-# download_enable=YES 
  
 # On n’autorise pas les utilisateurs à se faire passer pour d’autres # On n’autorise pas les utilisateurs à se faire passer pour d’autres
Ligne 190: Ligne 180:
 hide_ids=YES hide_ids=YES
  
-Pas d'écriture +Activation de la configuration utilisateur par utilisateur 
-write_enable=NO +user_config_dir=/etc/vsftpd/user_conf
- +
-# Nombre maximum de connexions simultanées +
-#   Au-delà, les nouveaux clients recevront un message du genre : +
-#   "erreur: serveur occupé" +
-max_clients=200 +
-# Nombre maximum de connexions venant de la même IP +
-max_per_ip=4 +
- +
-# journalisation des transferts +
-xferlog_enable=YES+
 </code> </code>
-  - **Sécurisation des transmissions avec SSL/TLS** +  - **Sécurisation des transmissions avec SSL/TLS** :<code - /etc/vsftpd.conf
-    * Créez une clé privée de 2048 bits et un certificat autosigné valable 10 ans (la clé privée et le certificat sont enregistrés dans un même fichier) :<cli prompt='$ '>...@...:~$ sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem</cli+rsa_cert_file=/etc/ssl/private/vsftpd.pem
-    * Trouvez les directives rsa_cert_file et rsa_private_key_file, changez leurs valeurs pour le chemin du fichier pam et mettez la directive ssl_enable à YES :<code - >rsa_cert_file=/etc/ssl/private/vsftpd.pem+
 rsa_private_key_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem
 ssl_enable=YES ssl_enable=YES
-</code>+</code>après avoir créé la clé privée de 2048 bits et le certificat autosigné valable 10 ans (la clé privée et le certificat sont enregistrés dans un même fichier) :<cli prompt='$ '>...@...:~$ sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem</cli>
  
-===== Utilisateurs virtuels =====+==== Utilisateurs virtuels ====
  
 <WRAP center round info 60%> <WRAP center round info 60%>
Ligne 320: Ligne 299:
 </WRAP> </WRAP>
  
-===== Personnalisation pour chaque utilisateur =====+==== Personnalisation pour chaque utilisateur ====
  
 Par défaut les utilisateurs virtuels n'ont aucun droit. Par défaut les utilisateurs virtuels n'ont aucun droit.
Ligne 431: Ligne 410:
 Redémarrez le serveur pour valider les modifications :<cli prompt='$ '>...@...:~$ sudo systemctl restart vsftpd.service</cli> Redémarrez le serveur pour valider les modifications :<cli prompt='$ '>...@...:~$ sudo systemctl restart vsftpd.service</cli>
  
-===== Tests =====+==== Tests ====
  
   - **admin** :<cli prompt='$ '>...@...:~$ ftp localhost   - **admin** :<cli prompt='$ '>...@...:~$ ftp localhost
Ligne 488: Ligne 467:
     * ni en **anonyme**     * ni en **anonyme**
  
-===== Cinq exemples de configuration =====+==== Cinq exemples de configuration ====
  
 Voir la page [[logiciel:internet:ftp:vsftpd:exemples:start]] Voir la page [[logiciel:internet:ftp:vsftpd:exemples:start]]
  
-====== Utilisation ======+===== Utilisation =====
  
-===== Gestion du service =====+==== Gestion du service ====
  
 Via systemctl :<cli prompt='$ '>...@...:~$ sudo systemctl COMMANDE vsftpd</cli>Valeurs de COMMANDE : Via systemctl :<cli prompt='$ '>...@...:~$ sudo systemctl COMMANDE vsftpd</cli>Valeurs de COMMANDE :
-  start+  start
   : Démarrer le serveur   : Démarrer le serveur
-  stop+  stop
   : Arrêter le serveur   : Arrêter le serveur
-  restart+  restart
   : Redémarrer le serveur   : Redémarrer le serveur
-  status+  status
   : État du serveur   : État du serveur
  
-===== Se connecter en utilisant le serveur FTP comme un simple dossier =====+==== Se connecter en utilisant le serveur FTP comme un simple dossier ====
  
-==== Sous Ubuntu ====+=== Sous Ubuntu ===
  
   * Raccourcis (menu en haut)   * Raccourcis (menu en haut)
Ligne 523: Ligne 502:
 Ne pas oublier de se déconnecter (démonter) Ne pas oublier de se déconnecter (démonter)
  
-==== Sous Windows ====+=== Sous Windows ===
  
   * Double-clic sur Favoris réseau   * Double-clic sur Favoris réseau
Ligne 539: Ligne 518:
   * et ainsi accéder aux dossiers et fichiers qu'il contient dans la limite des droits accordés.   * et ainsi accéder aux dossiers et fichiers qu'il contient dans la limite des droits accordés.
  
-====== Désinstallation ======+===== Désinstallation =====
  
   - **Désinstallation partielle** : Pour désinstaller le serveur vsftpd, en gardant les fichiers de configuration :<cli>$ sudo apt-get remove vsftpd</cli>   - **Désinstallation partielle** : Pour désinstaller le serveur vsftpd, en gardant les fichiers de configuration :<cli>$ sudo apt-get remove vsftpd</cli>
Ligne 552: Ligne 531:
 </WRAP> </WRAP>
  
- +===== Voir aussi =====
- +
- +
-====== Voir aussi ======+
  
   * **(fr)** [[https://linuxize.com/post/how-to-setup-ftp-server-with-vsftpd-on-raspberry-pi/]]   * **(fr)** [[https://linuxize.com/post/how-to-setup-ftp-server-with-vsftpd-on-raspberry-pi/]]