GNU/Linux >> Tutoriels Linux >  >> Linux

Configurer un serveur FTP avec vsFTPd sur le Raspberry Pi

Dans cet article, je vais vous montrer comment configurer un serveur FTP sur le Raspberry Pi qui peut être utilisé pour partager des fichiers sur vos appareils. Nous utiliserons vsFTPd car il est très stable, sécurisé et un serveur FTP très rapide. Je montrerai également comment configurer vsFTPd pour limiter les utilisateurs à leurs répertoires HOME, tout en cryptant l'intégralité de la connexion à l'aide de SSL/TLS.

Si vous souhaitez suivre ce matériel, vous devez avoir installé le système d'exploitation Raspberry Pi sur votre Raspberry Pi. L'exécution d'un serveur FTP ne nécessite pas d'interface graphique, je recommande donc d'installer Raspberry Pi OS Lite avec le service SSH activé, permettant l'accès à distance.

Installer ou vsFTPd sans Raspberry Pi

Le package vsftpd est disponible à partir des dépôts officiels du système d'exploitation Raspberry Pi, il peut donc être installé avec les commandes suivantes :

sudo apt update
sudo apt install vsftpd

Après l'installation, le service du serveur FTP démarre automatiquement. Pour vérifier l'état de ce service, exécutez :

sudo systemctl status vsftpd

Le retour de cette commande devrait renvoyer "Actif :actif (en cours d'exécution) depuis…", quelque chose comme :

vsftpd.service - vsftpd FTP server
   Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2021-05-23 07:02:41 BST; 14s ago
...

Comment migrer de CentOS 8 vers Rocky Linux 8/Alma Linux 8

Configurer le serveur FTP avec vsFTPd

La configuration de vsFTPd se fait via le fichier /etc/vsftpd.conf .

La plupart des paramètres sont bien documentés, en anglais, dans le fichier de configuration. Si vous souhaitez évaluer toutes les options disponibles, je vous recommande le site officiel à :Page de manuel de VSFTPD.CONF

1. Accès au serveur FTP

Pour vous assurer que seuls les utilisateurs locaux du système d'exploitation peuvent accéder au serveur FTP, recherchez les entrées anonyme_enable et local_enable dans le fichier de configuration, en les laissant comme suit :

anonymous_enable=NO
local_enable=YES

2. Activation des téléchargements

Localisez et décommentez le paramètre write_enable pour autoriser les modifications du système de fichiers, permettant aux utilisateurs de télécharger et de supprimer des fichiers :

write_enable=YES

3. Cage de chroot

Pour empêcher les utilisateurs FTP d'accéder aux fichiers en dehors de leur dossier personnel, nous devons créer une prison chroot, en décommentant le paramètre chroot_local_user :

chroot_local_user=YES

Lorsque la fonction chroot est activée, vsFTPd désactivera le téléchargement de fichiers si le répertoire utilisateur est verrouillé.

Utilisez l'une des options ci-dessous pour laisser l'environnement chrooté en mode écriture.

Option 1 - la méthode recommandée pour activer le téléchargement de fichiers et laisser le chroot actif, en configurant les répertoires FTP. Dans l'exemple suivant, je vais créer un répertoire ftp dans le dossier personnel de l'utilisateur, qui servira de dossier utilisé par chroot et permettra d'y télécharger les fichiers.

user_sub_token=$USER
local_root=/home/$USER/ftp

Option 2 - Une autre alternative consiste à ajouter le paramètre allow_writeable_chroot dans le fichier vsftpd.conf. Cette option activera l'option d'écriture dans le dossier de départ des utilisateurs.

allow_writeable_chroot=YES

4. Connexions passives sur serveur FTP

Par défaut, vsFTPd utilise le mode actif. Pour utiliser le mode passif, définissez la plage minimale et maximale de ports utilisés.

pasv_min_port=30000
pasv_max_port=31000

vsFTPd peut utiliser n'importe quel port en mode passif. Lorsque le mode passif est activé, le client FTP ouvre une connexion sur un port aléatoire lors de la connexion au serveur FTP, à l'intervalle que vous avez défini dans le fichier de configuration.

5. Limiter la connexion à certains utilisateurs

Nous pouvons configurer vsFTPd pour n'autoriser que quelques utilisateurs à se connecter. Pour effectuer cette configuration, ajoutez les lignes suivantes au fichier de paramètres :

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


Lorsque ce paramètre est activé, vous devez spécifier quels utilisateurs pourront se connecter, en ajoutant leurs noms d'utilisateur dans le fichier /etc/vsftpd.user_list, avec un utilisateur par ligne.

6. Transmission sécurisée avec SSL/TLS

Pour crypter la transmission FTP avec SSL/TLS, vous devez disposer d'un certificat SSL et configurer le serveur FTP pour l'utiliser. Nous pouvons utiliser un certificat SSL existant signé par un émetteur certifié ou créer un certificat auto-signé.

Si vous avez un domaine ou un sous-domaine pointant vers l'adresse IP de votre serveur FTP, vous pouvez générer un certificat SSL gratuit à l'aide de Let's Encrypt. Si vous ne l'avez jamais utilisé auparavant, suivez la documentation officielle :Getting Started – Let's Encrypt – Free SSL/TLS Certificates

Dans cet article, nous allons générer une clé auto-signée à l'aide de la commande openssl.

Exécutez la commande ci-dessous pour créer une clé privée (certificat) de 2 048 bits, auto-signée, valable 10 ans et valable 10 ans. Les clés publiques et privées seront stockées dans le 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

Après avoir créé les clés, ouvrez à nouveau le fichier de paramètres vsFTPd :

sudo nano /etc/vsftpd.conf

Trouvez les paramètres rsa_cert_file et rsa_private_key_file en modifiant leurs valeurs dans le fichier pem et définissez le paramètre ssl_enable sur YES.

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

Si ces paramètres ne sont pas configurés correctement, le serveur FTP n'utilisera TLS que pour sécuriser les connexions.

Redémarrer ou serveur FTP

Lorsque les paramètres ci-dessus sont effectués, le fichier de paramètres vsFTPd devrait ressembler à ceci (sans les commentaires) :

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
allow_writeable_chroot=YES
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES

Enregistrez le fichier et redémarrez le service vsFTPd pour que les modifications apportées à ce fichier prennent effet :

sudo systemctl restart vsftpd

Ouverture du pare-feu

Si vous utilisez le pare-feu UFW dans votre distribution, vous devez libérer le trafic FTP, en ouvrant les ports 20 (données FTP), 21 (commandes FTP) et 30000-31000 (ports en mode passif), à l'aide des commandes suivantes :

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

Maintenant, relisez les règles UFW, en les désactivant et en les réactivant.

sudo ufw disable
sudo ufw enable

Créer un utilisateur pour FTP

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

  • Si vous avez déjà un utilisateur qui sera utilisé et que vous souhaitez simplement lui donner accès, ignorez la première étape.
  • Si vous avez défini allow_writeable_chroot=YES dans votre fichier de configuration, ignorez la troisième étape.

01. Créez un utilisateur appelé novouserftp :

sudo adduser novouserftp

Lorsque vous y êtes invité, définissez le mot de passe de l'utilisateur.

02. Ajoutez l'utilisateur à la liste de ceux qui peuvent utiliser le serveur FTP.

echo "novouserftp" | sudo tee -a /etc/vsftpd.user_list

03. Créez un répertoire FTP et définissez les autorisations correctes.

sudo mkdir -p /home/novouserftp/ftp/upload
sudo chmod 550 /home/novouserftp/ftp
sudo chmod 750 /home/novouserftp/ftp/upload
sudo chown -R novouserftp: / home / novouserftp / ftp

Comme indiqué précédemment, l'utilisateur pourra télécharger des fichiers dans le dossier ftp/upload de son répertoire personnel.

À ce stade, votre serveur FTP est entièrement fonctionnel et vous pouvez vous y connecter à l'aide de clients FTP comme FileZilla !

Désactiver l'accès au shell

Par défaut, lorsqu'un utilisateur est créé, si aucune configuration supplémentaire n'est effectuée, cet utilisateur dispose d'un accès SSH au serveur. Pour désactiver cet accès, créez un nouveau shell qui affiche simplement un message indiquant à l'utilisateur que ce compte est limité à l'accès FTP uniquement.

Créer le shell /bin/ftponly et rendez-le exécutable.

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

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

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

Remplacez le shell utilisateur créé par /bin/ftponly :

sudo usermod novouserftp -s / bin / ftponly

Utilisez cette dernière commande pour tous les utilisateurs qui n'auront accès qu'au serveur FTP.

Conclusion

J'espère que vous savez comment installer et configurer un serveur FTP rapide et sécurisé sur votre système Raspberry Pi.


Linux
  1. Apprendre Linux avec le Raspberry Pi

  2. Comment installer un serveur FTP sur CentOS 7 avec VSFTPD

  3. Comment installer un serveur FTP sur Rocky Linux 8 avec VSFTPD

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

  5. Pourquoi le chroot_local_user de vsftpd n'est-il pas sécurisé ?

Comment installer le serveur VsFTPD avec TLS sur Ubuntu 18.04 LTS

Comment installer un serveur FTP ?

Télécharger des fichiers avec Monsta FTP

Comment configurer un serveur FTP avec ProFTPD dans Ubuntu 18.04

Comment configurer un serveur FTP avec VSFTPD

Configurer un serveur NFS avec Linux clé en main