Cet article décrit comment installer et configurer un serveur FTP sur Ubuntu 20.04 que vous utilisez pour partager des fichiers entre vos appareils.
FTP (File Transfer Protocol) est un protocole réseau standard utilisé pour transférer des fichiers vers et depuis un réseau distant. Il existe plusieurs serveurs FTP open source disponibles pour Linux. Les plus connus et les plus utilisés sont PureFTPd , ProFTPD et vsftpd . Nous allons installer vsftpd (Very Secure Ftp Daemon), un serveur FTP stable, sécurisé et rapide. Nous vous montrerons également comment configurer le serveur pour restreindre les utilisateurs à leur répertoire personnel et crypter l'intégralité de la transmission avec SSL/TLS.
Bien que FTP soit un protocole très populaire, pour des transferts de données plus sécurisés et plus rapides, vous devez utiliser SCP ou SFTP .
Installer vsftpd sur Ubuntu 20.04 #
Le package vsftpd est disponible dans les référentiels Ubuntu. Pour l'installer, exécutez les commandes suivantes :
mise à jour sudo apt
sudo apt installer vsftpd
Le service ftp démarrera automatiquement une fois le processus d'installation terminé. Pour le vérifier, imprimez l'état du service :
statut sudo systemctl vsftpd
La sortie doit montrer que le service vsftpd est actif et en cours d'exécution :
● vsftpd.service - serveur FTP vsftpd Chargé : chargé (/lib/systemd/system/vsftpd.un service; activée; préréglage du fournisseur : activé) Actif : actif (en cours d'exécution) depuis le mar 2021-03-02 15:17:22 UTC ; il y a 3s…
Configuration de vsftpd #
La configuration du serveur vsftpd est stockée dans le /etc/vsftpd.conf
déposer.
La plupart des paramètres du serveur sont bien documentés dans le fichier. Pour toutes les options disponibles, visitez la page de documentation vsftpd.
Dans les sections suivantes, nous passerons en revue certains paramètres importants nécessaires pour configurer une installation sécurisée de vsftpd.
Commencez par ouvrir le fichier de configuration vsftpd :
sudo nano /etc/vsftpd.conf
1. # d'accès FTP
Nous n'autoriserons l'accès au serveur FTP qu'aux utilisateurs locaux. Rechercher le anonyme_activer
et local_enable
directives et vérifiez que votre configuration correspond aux lignes ci-dessous :
anonyme_enable=NON local_enable=OUI
2. Activation des téléchargements #
Localisez et décommentez le write_enable
directive pour autoriser les modifications du système de fichiers, telles que le téléchargement et la suppression de fichiers :
write_enable=OUI
3. Prison chroot #
Pour empêcher les utilisateurs FTP locaux d'accéder aux fichiers en dehors de leurs répertoires personnels, décommentez la ligne commençant par chroot_local_user
:
chroot_local_user=OUI
Par défaut, pour des raisons de sécurité, lorsque 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 solutions ci-dessous pour autoriser les téléchargements lorsque le chroot est activé :
Méthode 1. - L'option recommandée est de garder la fonctionnalité chroot activée et de configurer les répertoires FTP. Dans cet exemple, nous allons créer un
/etc/vsftpd.confftp
répertoire à l'intérieur de la maison de l'utilisateur, qui servira de chroot et d'écrituretéléchargements
répertoire de téléchargement des fichiers :user_sub_token=$USER local_root=/home/$USER/ftp
Méthode 2. - Une autre option consiste à activer le
/etc/vsftpd.confallow_writeable_chroot
directif:allow_writeable_chroot=OUI
Utilisez cette option uniquement si vous devez accorder un accès en écriture à votre utilisateur à son répertoire personnel.
4. Connexions FTP passives #
Par défaut, vsftpd utilise le mode actif. Pour utiliser le mode passif, définissez la plage minimale et maximale de ports :
/etc/vsftpd.confpasv_min_port=30000 pasv_max_port=31000
Vous pouvez utiliser n'importe quel port pour les connexions FTP passives. Lorsque le mode passif est activé, le client FTP ouvre une connexion au serveur sur un port aléatoire dans la plage que vous avez choisie.
5. Limiter le numéro de connexion de l'utilisateur
Vous pouvez configurer vsftpd pour autoriser uniquement certains utilisateurs à se connecter. Pour ce faire, ajoutez les lignes suivantes à la fin du fichier :
/etc/vsftpd.confuserlist_enable=OUI userlist_file=/etc/vsftpd.user_list userlist_deny=NON
Lorsque cette option est activée, vous devez spécifier explicitement quels utilisateurs peuvent se connecter en ajoutant les noms d'utilisateur au /etc/vsftpd.liste d'utilisateur
fichier (un utilisateur par ligne).
6. Sécuriser les transmissions avec SSL/TLS #
Pour crypter 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 rapidement générer un certificat SSL Let's Encrypt gratuit.
Nous allons générer une clé privée de 2048 bits et un certificat SSL auto-signé qui sera valable dix ans :
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
La clé privée et le certificat seront enregistrés dans le même fichier.
Une fois le certificat SSL créé, ouvrez le fichier de configuration vsftpd :
sudo nano /etc/vsftpd.conf
Trouvez le fichier_cert_rsa
et rsa_private_key_file
directives, remplacez leurs valeurs par les pam
chemin du fichier et définissez le ssl_enable
directive à OUI
:
rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=OUI
Sauf indication contraire, le serveur FTP utilisera uniquement TLS pour établir des connexions sécurisées.
Redémarrez le service vsftpd #
Une fois l'édition terminée, le fichier de configuration vsftpd (à l'exclusion des commentaires) devrait ressembler à ceci :
/etc/vsftpd.conflisten=NON listen_ipv6=OUI anonyme_enable=NON local_enable=OUI write_enable=OUI dirmessage_enable=OUI use_localtime=OUI xferlog_enable=OUI connect_from_port_20=OUI chroot_local_user=OUI secure_chroot_dir=/var/ft_dir/vs/ftpd/nom_cert/pvs/ftpd/empty privé/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=OUI user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 userlist_enable=OUI userlist_file=/etc/vsftpd.user_list userlist_deny=NON
Enregistrez le fichier et redémarrez le service vsftpd pour que les modifications prennent effet :
sudo systemctl redémarrer 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 de ports passifs), exécutez les commandes suivantes :
sudo ufw autoriser 20:21/tcp
sudo ufw autoriser 30000:31000/tcp
Pour éviter d'être verrouillé, assurez-vous que le port 22
est ouvert:
sudo ufw autoriser OpenSSH
Rechargez les règles UFW en désactivant et en réactivant UFW :
sudo ufw désactiver
sudo ufw activer
Pour vérifier l'exécution des modifications :
statut sudo ufw
Statut : actif À l'action De -- ------ ---- 20:21/tcp ALLOW Anywhere 30000:31000/tcp ALLOW Anywhere OpenSSH ALLOW Anywhere 20:21/tcp (v6) ALLOW Anywhere (v6) 30000 : 31000/tcp (v6) AUTORISER n'importe où (v6) OpenSSH (v6) AUTORISER n'importe où (v6)
Création d'un numéro d'utilisateur FTP
Pour tester le serveur FTP, nous allons créer un nouvel utilisateur.
- Si l'utilisateur auquel vous souhaitez accorder l'accès FTP existe déjà, ignorez la 1ère étape.
- Si vous définissez
allow_writeable_chroot=OUI
dans votre fichier de configuration, ignorez la 3ème étape.
Créer un nouvel utilisateur nommé
newftpuser
:sudo adduser newftpuser
Ajoutez l'utilisateur à la liste des utilisateurs FTP autorisés :
echo "newftpuser" | sudo tee -a /etc/vsftpd.liste d'utilisateur
Créez l'arborescence des répertoires FTP et définissez les autorisations appropriées :
sudo mkdir -p /home/newftpuser/ftp/upload
sudo chmod 550 /home/newftpuser/ftp
sudo chmod 750 /home/newftpuser/ftp/upload
sudo 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/téléchargement
annuaire.
À ce stade, votre serveur FTP est entièrement fonctionnel. Vous devriez pouvoir vous connecter au 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 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, créez un nouveau shell qui imprimera un message indiquant à l'utilisateur que son compte est limité à l'accès FTP uniquement.
Exécutez les commandes suivantes pour créer le /bin/ftponly
fichier et le rendre exécutable :
echo -e '#!/bin/sh\necho "Ce compte est limité à l'accès FTP uniquement."' | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly
Ajoutez le nouveau shell à la liste des shells valides dans le /etc/coquilles
déposer:
echo "/bin/ftponly" | sudo tee -a /etc/coquilles
Changez le shell de l'utilisateur en /bin/ftponly
:
sudo usermod newftpuser -s /bin/ftponly
Vous pouvez utiliser la même commande pour changer le shell de tous les utilisateurs auxquels vous souhaitez donner uniquement un accès FTP.
Conclusion #
Nous vous avons montré comment installer et configurer un serveur FTP sécurisé et rapide sur votre Ubuntu 20.04 système.
Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire.