Comment configurer vsftpd pour les téléchargements anonymes sur Ubuntu 16.04

introduction

FTP, abréviation de File Transfer Protocol, est un protocole réseau qui était autrefois largement utilisé pour transférer des fichiers entre un client et un serveur. Depuis, il a été remplacé par des moyens plus rapides, plus sûrs et plus pratiques de livrer des fichiers. De nombreux internautes occasionnels s’attendent à télécharger directement à partir de leur navigateur Web avec + https + et les utilisateurs de ligne de commande sont plus susceptibles d’utiliser des protocoles sécurisés tels que le + scp + ou https://www.digitalocean.com/community/tutorials / comment-utiliser-sftp-pour-transférer en toute sécurité des fichiers avec un serveur distant [sFTP].

FTP est souvent utilisé pour prendre en charge des applications héritées et des workflows ayant des besoins très spécifiques. Si vous avez le choix du protocole à utiliser, explorez les options les plus modernes. Cependant, lorsque vous avez besoin de FTP, vsftpd est un excellent choix. Optimisé pour la sécurité, les performances et la stabilité, vsftpd offre une protection efficace contre de nombreux problèmes de sécurité rencontrés sur d’autres serveurs FTP. Il s’agit par défaut de nombreuses distributions Linux.

Dans ce didacticiel, nous allons vous montrer comment configurer vsftpd pour un site de téléchargement FTP anonyme destiné à diffuser largement des fichiers publics. Plutôt que d’utiliser FTP pour gérer les fichiers, les utilisateurs locaux dotés des privilèges sudo + sont censés utiliser + scp +, + sFTP + ou tout autre protocole sécurisé de leur choix pour transférer et gérer les fichiers.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

  • * Un serveur Ubuntu 16.04 avec un utilisateur non root avec les privilèges + sudo + *: Vous pouvez en savoir plus sur la configuration d’un utilisateur avec ces privilèges dans notre https://www.digitalocean.com/community/tutorials/initial -server-setup-with-ubuntu-16-04 Guide [Configuration initiale du serveur avec Ubuntu 16.04].

Une fois le serveur en place, vous êtes prêt à commencer.

Étape 1 - Installation de vsftpd

Nous allons commencer par mettre à jour notre liste de paquets et installer le démon + vsftpd +:

sudo apt-get update
sudo apt-get install vsftpd

Une fois l’installation terminée, nous copierons le fichier de configuration afin de pouvoir commencer avec une configuration vierge et enregistrer l’original en tant que sauvegarde.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Avec une sauvegarde de la configuration en place, nous sommes prêts à configurer le pare-feu.

Étape 2 - Ouverture du pare-feu

Commençons par vérifier l’état du pare-feu pour voir s’il est activé et, le cas échéant, voir ce qui est actuellement autorisé. Ainsi, lorsqu’il sera temps de tester la configuration, vous ne rencontrerez pas de règles de pare-feu vous bloquant.

sudo ufw status

Dans notre cas, nous voyons ce qui suit:

OutputOutput
Status: active

To Action  From
-- ------  ----
OpenSSH ALLOW   Anywhere
OpenSSH (v6)   ALLOW   Anywhere (v6)

Vous pouvez avoir d’autres règles en place ou aucune règle de pare-feu du tout. Dans cet exemple, seul le trafic + ssh + est autorisé. Il est donc nécessaire d’ajouter des règles pour le trafic FTP.

Avec de nombreuses applications, vous pouvez utiliser + sudo ufw app list + et les activer par leur nom, mais FTP n’en fait pas partie. Comme ufw vérifie également / etc / services pour le port et le protocole d’un service, nous pouvons toujours ajouter FTP par nom. Nous avons besoin à la fois de + ftp-data sur le port 20 et de` + ftp + `(pour les commandes) sur le port 21:

sudo ufw allow ftp-data
sudo ufw allow ftp
sudo ufw status

Maintenant, nos règles de pare-feu ressemblent à ceci:

OutputStatus: active

To Action  From
-- ------  ----
OpenSSH  ALLOW   Anywhere


OpenSSH (v6)   ALLOW   Anywhere (v6)

Avec + vsftpd + installé et les ports nécessaires ouverts, nous sommes prêts à continuer.

Étape 3 - Préparation de l’espace pour les fichiers

Nous allons d’abord créer le répertoire dans lequel nous prévoyons d’héberger les fichiers, en utilisant l’indicateur + -p + pour créer le répertoire intermédiaire. La structure de répertoires vous permettra de conserver tous les répertoires FTP ensemble et d’ajouter ultérieurement d’autres dossiers nécessitant une authentification:

sudo mkdir -p /var/ftp/pub

Ensuite, nous allons définir les permissions du répertoire sur + nobody: nogroup +. Nous configurerons ensuite le serveur FTP pour que tous les fichiers soient la propriété de l’utilisateur et du groupe ftp.

sudo chown nobody:nogroup /var/ftp/pub

Enfin, nous allons créer un fichier dans le répertoire pour le tester ultérieurement.

echo "vsftpd test file" | sudo tee /var/ftp/pub/test.txt

Avec cet exemple de fichier en place, nous sommes prêts à configurer le démon vsftpd.

Étape 4 - Configuration de l’accès anonyme

Nous configurons des utilisateurs avec les privilèges sudo + pour conserver des fichiers destinés à une large diffusion au public. Pour ce faire, nous allons configurer + vsftpd + pour permettre le téléchargement anonyme. Nous nous attendons à ce que les administrateurs de fichiers utilisent + scp +, '+ sftp + `ou toute autre méthode sécurisée pour conserver les fichiers. Par conséquent, nous n’activerons pas le téléchargement de fichiers via FTP.

Le fichier de configuration contient certaines des nombreuses options de configuration pour vsftpd.

Nous allons commencer par changer ceux qui sont déjà définis:

sudo nano /etc/vsftpd.conf

Recherchez les valeurs suivantes et modifiez-les afin qu’elles correspondent aux valeurs ci-dessous:

/etc/vsftpd.conf

. . .
# Allow anonymous FTP? (Disabled by default).
anonymous_enable=
#

We’ll set the local_enable setting to “NO” because we’re not going to allow users with local accounts to upload files via FTP. The comment in the configuration file can be a little confusing, too, because the line is uncommented by default.
# Uncomment this to allow local users to log in.
local_enable=
. . .

En plus de modifier les paramètres existants, nous allons ajouter une configuration supplémentaire.

Ajoutez ces paramètres au fichier de configuration. Ils ne dépendent pas de la commande, vous pouvez donc les placer n’importe où dans le fichier.

#
# Point users at the directory we created earlier.
anon_root=/var/ftp/
#
# Stop prompting for a password on the command line.
no_anon_password=YES
#
# Show the user and group as ftp:ftp, regardless of the owner.
hide_ids=YES
#
# Limit the range of ports that can be used for passive FTP
pasv_min_port=40000
pasv_max_port=50000

Une fois ceux-ci ajoutés, enregistrez et fermez le fichier. Ensuite, redémarrez le démon avec la commande suivante:

sudo systemctl restart vsftpd

+ systemctl + n’affiche pas le résultat de toutes les commandes de gestion des services. Si vous voulez être sûr d’avoir réussi, utilisez la commande suivante:

sudo systemctl status vsftpd

Si la dernière ligne indique ce qui suit, vous avez réussi:

OutputAug 17 17:49:10 vsftpd systemd[1]: Starting vsftpd FTP server...
Aug 17 17:49:10 vsftpd systemd[1]: Started vsftpd FTP server.

Nous sommes maintenant prêts à tester votre travail.

Étape 5 - Test de l’accès anonyme

Depuis un navigateur Web, entrez ftp: // suivi de l’adresse IP de votre serveur.

ftp: //

Si tout fonctionne comme prévu, vous devriez voir le répertoire + pub +:

image: https: //assets.digitalocean.com/articles/vsftp-anon/anonftp-pub.png [Image du dossier 'pub' dans un navigateur]

Vous devriez également pouvoir cliquer sur + pub +, voir + test.txt +, puis faites un clic droit pour enregistrer le fichier.

image: https: //assets.digitalocean.com/articles/vsftp-anon/anonftp-test1.png [Image du fichier 'test.txt' dans un navigateur]

Vous pouvez également tester à partir de la ligne de commande, ce qui donnera beaucoup plus d’informations sur votre configuration. Nous allons ftp sur le serveur en mode passif, qui est l’indicateur + -p + sur de nombreux clients en ligne de commande. Le mode passif permet aux utilisateurs d’éviter de modifier les configurations du pare-feu local pour permettre au serveur et au client de se connecter.

ftp -p

Lorsque vous êtes invité à entrer un nom d’utilisateur, vous pouvez entrer «ftp» ou «anonyme». Ils sont équivalents, nous allons donc utiliser le «ftp» plus court:

Connected to 203.0.113.0.
220 (vsftpd 3.0.3)
Name (203.0.113.0:21:sammy):

Après avoir appuyé sur Entrée, vous devriez recevoir ce qui suit:

Output
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Assurez-vous que le mode passif fonctionne comme prévu:

ls
Output227 Entering Passive Mode (45,55,187,171,156,74).
150 Here comes the directory listing.
drwxr-xr-x    2 ftp      ftp          4096 Aug 17 19:30 pub
226 Directory send OK.

En tant qu’utilisateur anonyme, vous devriez pouvoir transférer le fichier sur votre ordinateur local avec la commande + get +:

cd pub
get test.txt
Outputftp> get test.txt
227 Entering Passive Mode (45,55,187,171,156,73).
150 Opening BINARY mode data connection for test.txt (14 bytes).
226 Transfer complete.
16 bytes received in 0.0121 seconds (1325 bytes/s)

Cette sortie vous indique que vous avez réussi à télécharger le fichier et que vous pouvez jeter un coup d’œil pour vérifier qu’il se trouve sur votre système de fichiers local, si vous le souhaitez.

Nous voulons également nous assurer que les utilisateurs anonymes ne rempliront pas notre système de fichiers. Par conséquent, pour effectuer un test, nous allons essayer de remettre le même fichier sur le serveur, mais avec un nouveau nom:

put test.txt upload.txt
Output227 Entering Passive Mode (104,236,10,192,168,254).
550 Permission denied.

Maintenant que nous l’avons confirmé, nous allons quitter le moniteur en vue de la prochaine étape:

bye

Maintenant que nous avons confirmé que la connexion anonyme fonctionne comme prévu, nous allons nous intéresser à ce qui se passe lorsque l’utilisateur tente de se connecter.

Étape 6 - Essayer de se connecter en tant qu’utilisateur

Vous voudrez peut-être aussi vous assurer que vous ne pouvez pas vous connecter en tant qu’utilisateur avec un compte local, car cette configuration ne crypte pas leurs identifiants de connexion. Au lieu d’entrer «ftp» ou «anonyme» lorsque vous êtes invité à vous connecter, essayez d’utiliser votre utilisateur sudo:

ftp -p
OutputConnected to 203.0.113.0:21.
220 (vsFTPd 3.0.3)
Name (203.0.113.0:21:)
530 This FTP server is anonymous only.
ftp: Login failed.
ftp>

Ces tests confirment que vous avez configuré le système pour le téléchargement anonyme uniquement.

Conclusion

Dans ce tutoriel, nous avons expliqué comment configurer vsftpd pour les téléchargements anonymes uniquement. Cela nous permet de prendre en charge des applications héritées incapables d’utiliser des protocoles plus modernes ou des URL FTP largement publiées qu’il serait difficile de mettre à jour. Pour en savoir plus sur la gestion des fichiers, consultez Comment utiliser SFTP transférer des fichiers en toute sécurité avec un serveur distant peut vous guider.