GNU/Linux >> Tutoriels Linux >  >> Debian

Comment configurer un serveur FTP avec VSFTPD sur Debian 9

FTP (File Transfer Protocol) est un protocole réseau standard utilisé pour transférer des fichiers vers et depuis un réseau distant. Pour des transferts de données plus sécurisés et plus rapides, utilisez SCPou SFTP.

Il existe de nombreux serveurs FTP open source disponibles pour Linux. Les plus populaires et les plus utilisés sont PureFTPd, ProFTPD et vsftpd.

Ce tutoriel explique comment installer et configurer vsftpd (Very Secure Ftp Daemon) sur Debian 9. vsftpd un serveur FTP stable, sécurisé et rapide. Nous vous montrerons également comment configurer vsftpd pour limiter les utilisateurs à leur répertoire personnel et crypter l'intégralité de la transmission avec SSL/TLS.

Prérequis #

L'utilisateur avec lequel vous êtes connecté doit avoir les privilèges sudo pour pouvoir installer les packages.

Installer vsftpd sur Debian 9 #

Le paquet vsftpd est disponible dans les dépôts Debian. L'installation est assez simple :

sudo apt updatesudo apt install vsftpd

Le service vsftpd démarrera automatiquement une fois le processus d'installation terminé. Vérifiez-le en imprimant l'état du service :

sudo systemctl status vsftpd

La sortie ressemblera à quelque chose comme ci-dessous, montrant que le service vsftpd est actif et en cours d'exécution :

● vsftpd.service - vsftpd FTP server
   Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-12-10 11:42:51 UTC; 53s ago
 Main PID: 1394 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─1394 /usr/sbin/vsftpd /etc/vsftpd.conf

Configuration de vsftpd #

Le serveur vsftpd peut être configuré en modifiant le vsftpd.conf fichier, trouvé dans le /etc répertoire.

La plupart des paramètres sont bien documentés dans le fichier de configuration. Pour toutes les options disponibles, visitez la page officielle vsftpd.

Dans les sections suivantes, nous passerons en revue certains paramètres importants nécessaires pour configurer une installation vsftpd sécurisée.

Commencez par ouvrir le fichier de configuration vsftpd :

sudo nano /etc/vsftpd.conf

1. N° d'accès FTP

Localisez le anonymous_enable et local_enable directives et vérifiez que votre configuration correspond aux lignes ci-dessous :

/etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES

Cela garantit que seuls les utilisateurs locaux peuvent accéder au serveur FTP.

2. Activation des téléchargements #

Décommentez le write_enable paramètre pour autoriser les modifications du système de fichiers telles que le téléchargement et la suppression de fichiers.

/etc/vsftpd.conf
write_enable=YES

3. Chroot Prison #

Pour empêcher les utilisateurs FTP d'accéder à des fichiers en dehors de leurs répertoires personnels, décommentez le chroot réglage.

/etc/vsftpd.conf
chroot_local_user=YES

Par défaut, pour éviter une faille de sécurité, lorsque le chroot est activé, vsftpd refusera de télécharger des fichiers si le répertoire dans lequel les utilisateurs sont verrouillés est accessible en écriture.

Utilisez l'une des méthodes ci-dessous pour autoriser les téléchargements lorsque le chroot est activé.

  • Méthode 1. - La méthode recommandée pour autoriser le téléchargement est de garder le chroot activé et de configurer les répertoires FTP. Dans ce tutoriel, nous allons créer un ftp répertoire à l'intérieur de l'accueil de l'utilisateur qui servira de chroot et de uploads accessible en écriture répertoire pour télécharger des fichiers.

    /etc/vsftpd.conf
    user_sub_token=$USER
    local_root=/home/$USER/ftp
  • Méthode 2. - Une autre option consiste à ajouter la directive suivante dans le fichier de configuration vsftpd. Utilisez cette option si vous devez accorder à votre utilisateur un accès en écriture à son répertoire personnel.

    /etc/vsftpd.conf
    allow_writeable_chroot=YES

4. Connexions FTP passives #

vsftpd peut utiliser n'importe quel port pour les connexions FTP passives. Nous spécifierons la plage minimale et maximale de ports et ouvrirons ultérieurement la plage dans notre pare-feu.

Ajoutez les lignes suivantes au fichier de configuration :

/etc/vsftpd.conf
pasv_min_port=30000
pasv_max_port=31000

5. Limitation du numéro de connexion de l'utilisateur

Pour autoriser uniquement certains utilisateurs à se connecter au serveur FTP, ajoutez les lignes suivantes à la fin du fichier :

/etc/vsftpd.conf
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

Lorsque cette option est activée, vous devez spécifier explicitement quels utilisateurs peuvent se connecter en ajoutant les noms d'utilisateur à /etc/vsftpd.user_list fichier (un utilisateur par ligne).

6. Sécurisation des transmissions avec SSL/TLS #

Afin de chiffrer les transmissions FTP avec SSL/TLS, vous devez disposer d'un certificat SSL et configurer le serveur FTP pour l'utiliser.

Vous pouvez utiliser un certificat SSL existant signé par une autorité de certification de confiance ou créer un certificat auto-signé.

Si vous avez un domaine ou un sous-domaine pointant vers l'adresse IP du serveur FTP, vous pouvez facilement générer un certificat Let's EncryptSSL gratuit.

Dans ce tutoriel, nous allons générer un certificat SSL auto-signé en utilisant le openssl commande.

La commande suivante créera une clé privée de 2048 bits et un certificat auto-signé valable 10 ans. La clé privée et le certificat seront enregistrés dans un même fichier :

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Une fois le certificat SSL créé, ouvrez le fichier de configuration vsftpd :

sudo nano /etc/vsftpd.conf

Trouvez le rsa_cert_file et rsa_private_key_file directives, remplacez leurs valeurs par pam chemin du fichier et définissez le ssl_enable directive à YES :

/etc/vsftpd.conf
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES

Sauf indication contraire, le serveur FTP utilisera uniquement TLS pour établir des connexions sécurisées.

Redémarrer le service vsftpd #

Une fois que vous avez terminé l'édition, le fichier de configuration vsftpd (à l'exclusion des commentaires) devrait ressembler à ceci :

/etc/vsftpd.conf
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

Enregistrez le fichier et redémarrez le service vsftpd pour que les modifications prennent effet :

sudo systemctl restart vsftpd

Ouverture du pare-feu #

Si vous utilisez un pare-feu UFW, vous devrez autoriser le trafic FTP.

Pour ouvrir le port 21 (port de commande FTP), port 20 (port de données FTP) et 30000-31000 (Plage des ports passifs), exécutez les commandes suivantes :

sudo ufw allow 20:21/tcpsudo ufw allow 30000:31000/tcp

Pour éviter d'être bloqué, nous ouvrirons également le port 22 :

sudo ufw allow OpenSSH

Rechargez les règles UFW en désactivant et en réactivant UFW :

sudo ufw disablesudo ufw enable

Pour vérifier les modifications, procédez comme suit :

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
20:21/tcp                  ALLOW       Anywhere
30000:31000/tcp            ALLOW       Anywhere
OpenSSH                    ALLOW       Anywhere
20:21/tcp (v6)             ALLOW       Anywhere (v6)
30000:31000/tcp (v6)       ALLOW       Anywhere (v6)
OpenSSH (v6)               ALLOW       Anywhere (v6)

Création de l'utilisateur FTP #

Pour tester notre serveur FTP, nous allons créer un nouvel utilisateur.

  • Si vous avez déjà un utilisateur auquel vous souhaitez accorder un accès FTP, ignorez la 1ère étape.
  • Si vous définissez allow_writeable_chroot=YES dans votre fichier de configuration ignorez la 3ème étape.
  1. Créez un nouvel utilisateur nommé newftpuser :

    sudo adduser newftpuser
  2. Ajoutez l'utilisateur à la liste des utilisateurs FTP autorisés :

    echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
  3. Créez l'arborescence du répertoire FTP et définissez les autorisations appropriées :

    sudo mkdir -p /home/newftpuser/ftp/uploadsudo chmod 550 /home/newftpuser/ftpsudo chmod 750 /home/newftpuser/ftp/uploadsudo chown -R newftpuser: /home/newftpuser/ftp

    Comme indiqué dans la section précédente, l'utilisateur pourra télécharger ses fichiers sur le ftp/upload répertoire.

À ce stade, votre serveur FTP est entièrement fonctionnel et vous devriez pouvoir vous connecter à votre serveur à l'aide de n'importe quel client FTP pouvant être configuré pour utiliser le cryptage TLS tel que FileZilla.

Désactivation de l'accès au shell #

Par défaut, lors de la création d'un utilisateur, s'il n'est pas explicitement spécifié, l'utilisateur aura un accès SSH au serveur.

Pour désactiver l'accès au shell, nous allons créer un nouveau shell qui imprimera simplement un message indiquant à l'utilisateur que son compte est limité à l'accès FTP uniquement.

Créez le /bin/ftponly shell et rendez-le exécutable :

echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a  /bin/ftponlysudo chmod a+x /bin/ftponly

Ajoutez le nouveau shell à la liste des shells valides dans le /etc/shells fichier :

echo "/bin/ftponly" | sudo tee -a /etc/shells

Remplacez le shell utilisateur par /bin/ftponly :

sudo usermod newftpuser -s /bin/ftponly

Utilisez la même commande pour modifier le shell de tous les utilisateurs auxquels vous souhaitez accorder uniquement un accès FTP.


Debian
  1. Comment installer un serveur FTP sur CentOS 7 avec VSFTPD

  2. Comment configurer vsftpd sur Debian

  3. Comment configurer le serveur Rsyslog sur Debian 11

  4. Comment installer le serveur FTP vsftpd et le sécuriser avec TLS sur Debian 11

  5. Easy vsFTPD – Serveur FTP avec utilisateurs virtuels sur Debian 8 Jessie

Comment configurer un serveur FTP sécurisé sur Debian 10 avec Pure-FTPd

Configuration initiale du serveur avec Debian 11

Comment configurer LAMP avec Debian 11

Comment installer le serveur vsftpd sur Debian 11

Comment installer un serveur FTP sur Debian 11

Comment configurer un serveur FTP avec VSFTPD