Introduction

FTP, abréviation de File Transfer Protocol, est un protocole réseau qui était autrefois largement utilisé pour déplacer des fichiers entre un client et un serveur. Il a depuis été remplacé par des moyens plus rapides, plus sécurisés et plus pratiques de livraison de 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 scp ou sFTP.,

FTP est toujours utilisé pour prendre en charge les applications et les workflows hérités avec des besoins très spécifiques. Si vous avez le choix du protocole à utiliser, envisagez d’explorer les options les plus modernes. Lorsque vous avez besoin de FTP, cependant, vsftpd est un excellent choix. Optimisé pour la sécurité, les performances et la stabilité, vsftpd offre une protection solide contre de nombreux problèmes de sécurité rencontrés dans d’autres serveurs FTP et est la valeur par défaut pour de nombreuses distributions Linux.,

dans ce tutoriel, nous allons vous montrer comment configurer vsftpd pour permettre à un utilisateur de télécharger des fichiers dans son répertoire personnel en utilisant FTP avec des informations de connexion sécurisées par SSL/TLS.

prérequis

pour suivre ce tutoriel, vous aurez besoin de:

  • un serveur Ubuntu 16.04 avec un utilisateur non root avecsudo privilèges: vous pouvez en savoir plus sur la configuration d’un utilisateur avec ces privilèges dans notre Guide Configuration initiale du serveur avec Ubuntu 16.04.

une Fois que vous avez un serveur Ubuntu 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

lorsque l’installation est terminée, nous allons copier le fichier de configuration afin que nous puissions commencer avec une configuration vierge, en enregistrant l’original

  • 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

Nous allons vérifier l’état du pare-feu pour voir s’il est activé., Si c’est le cas, nous veillerons à ce que le trafic FTP soit autorisé afin que vous ne vous heurtiez pas à des règles de pare-feu qui vous bloquent lorsque viendra le temps de tester.

  • sudo ufw status

Dans ce cas, seule la SSH est autorisé par:

Output
Status: activeTo Action From-- ------ ----OpenSSH ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)

Vous pouvez avoir d’autres règles ou pas règles de pare-feu à tous. Étant donné que seul le traficssh est autorisé dans ce cas, nous devrons ajouter des règles pour le trafic FTP.,

nous devrons ouvrir les ports 20 et 21 pour FTP, le port 990 pour plus tard lorsque nous activerons TLS, et les ports 40000-50000 pour la plage de ports passifs que nous prévoyons de définir dans le fichier de configuration:

  • sudo ufw allow 20/tcp
  • sudo ufw allow 21/tcp
  • sudo ufw allow 990/tcp
  • sudo ufw allow 40000:50000/tcp
  • sudo ufw status

maintenant, nos règles de pare-feu div> installé et les ports nécessaires ouverts, Nous sommes prêts à passer à L’étape suivante.

Étape 3 — Préparation du répertoire utilisateur

pour ce tutoriel, nous allons créer un utilisateur, mais vous avez peut-être déjà un utilisateur ayant besoin d’un accès FTP., Nous veillerons à préserver l’accès d’un utilisateur existant à ses données dans les instructions qui suivent. Malgré cela, nous vous recommandons de commencer avec un nouvel utilisateur jusqu’à ce que vous ayez configuré et testé votre configuration.

tout d’abord, nous allons ajouter un utilisateur de test:

  • sudo adduser sammy

attribuez un mot de passe lorsque vous y êtes invité et n’hésitez pas à appuyer sur « Entrée” via les autres invites.

FTP est généralement plus sécurisé lorsque les utilisateurs sont limités à un répertoire spécifique.vsftpd accomplit cette mission avec des chroot prisons., Lorsque chroot est activé pour les utilisateurs locaux, ils sont limités à leur répertoire personnel par défaut. Cependant, en raison de la façon dont vsftpd sécurise le répertoire, il ne doit pas être accessible en écriture par l’utilisateur. C’est très bien pour un nouvel utilisateur qui ne doit se connecter que via FTP, mais un utilisateur existant peut avoir besoin d’écrire dans son dossier personnel s’il accède également au shell.,

dans cet exemple, plutôt que de supprimer les privilèges d’écriture du répertoire personnel, nous allons créer un répertoire ftppour servir de répertoire chrootet un répertoire files accessible en écriture pour contenir les fichiers réels.,33″>

Output
total 84 dr-xr-xr-x 2 nobody nogroup 4096 Aug 24 21:29 .4 drwxr-xr-x 3 sammy sammy 4096 Aug 24 21:29 ..

ensuite, nous allons créer le répertoire où les fichiers peuvent être téléchargés et attribuer la propriété à l’utilisateur:

  • sudo mkdir /home/sammy/ftp/files
  • sudo chown sammy:sammy /home/sammy/ftp/files

une vérification des autorisations sur le files devrait renvoyer ce qui suit:

  • sudo ls -la /home/sammy/ftp

enfin, nous allons ajouter un fichier test.txt à utiliser lors de nos tests ultérieurs:

  • echo "vsftpd test file" | sudo tee /home/sammy/ftp/files/test.txt

maintenant que nous avons Sécurisé le répertoire ftp et permis à l’utilisateur ID= »e9870e2776″> répertoire, nous allons tourner notre attention sur la configuration.,

Étape 4 — Configuration de L’accès FTP

Nous prévoyons de permettre à un seul utilisateur disposant d’un compte shell local de se connecter au FTP. Les deux paramètres clés pour cela sont déjà définis dans vsftpd.conf. Commencez par ouvrir le fichier de configuration pour vérifier que les paramètres de votre configuration correspondent à celles ci-dessous:

  • sudo nano /etc/vsftpd.conf
/etc/vsftpd.conf

ensuite, nous devrons changer certaines valeurs dans le fichier. Afin de permettre à l’utilisateur de télécharger des fichiers, nous décommenterons le paramètre write_enable de sorte que nous ayons:

/etc/vsftpd.,conf
. . .write_enable=YES. . .

Nous décommenterons également le chroot pour empêcher l’utilisateur connecté FTP d’accéder à des fichiers ou commandes en dehors de l’arborescence des répertoires.

/etc/vsftpd.conf
. . .chroot_local_user=YES. . .

Nous allons ajouter unuser_sub_tokenafin d’insérer le nom d’utilisateur dans notre cheminlocal_root directory afin que notre configuration fonctionne pour cet utilisateur et tous les futurs utilisateurs qui pourraient être ajoutés.

/etc/vsftpd.,conf
user_sub_token=$USERlocal_root=/home/$USER/ftp

Nous allons limiter la plage de ports pouvant être utilisés pour le FTP passif pour nous assurer que suffisamment de connexions sont disponibles:

/etc / vsftpd.conf
pasv_min_port=40000pasv_max_port=50000

Remarque: Nous avons pré-ouvert les ports que nous avons définis ici pour la plage de ports passifs. Si vous modifiez les valeurs, veillez à mettre à jour les paramètres de votre pare-feu.

puisque nous ne prévoyons d’autoriser L’accès FTP qu’au cas par cas, nous allons configurer la configuration de sorte que l’accès ne soit donné à un utilisateur que lorsqu’il est explicitement ajouté à une liste plutôt que par défaut:

/etc/vsftpd.,conf
userlist_enable=YESuserlist_file=/etc/vsftpd.userlistuserlist_deny=NO

userlist_deny permet de basculer la logique. Lorsqu’il est réglé sur « Oui », les utilisateurs de la liste se voient refuser l’accès FTP. Lorsqu’il est défini sur « Non », seuls les utilisateurs de la liste sont autorisés à y accéder. Lorsque vous avez terminé d’effectuer la modification, Enregistrez et quittez le fichier.

enfin, nous allons créer et ajouter notre utilisateur au fichier., Nous allons utiliser la balise -a drapeau à ajouter au fichier:

  • echo "sammy" | sudo tee -a /etc/vsftpd.userlist

Double-vérifier qu’il a été ajouté comme prévu:

cat /etc/vsftpd.userlist
Output
sammy

Redémarrer le démon à charge de les changements de configuration:

  • sudo systemctl restart vsftpd

Maintenant, nous sommes prêts pour les tests.

Étape 5 — Test de L’accès FTP

Nous avons configuré le serveur pour autoriser uniquement l’utilisateursammy à se connecter via FTP. Assurez-vous que c’est le cas.

les utilisateurs anonymes ne doivent pas se connecter: nous avons désactivé l’accès anonyme., Ici, nous allons tester cela en essayant de nous connecter anonymement. Si nous l’avons fait correctement, les utilisateurs anonymes devraient se voir refuser l’autorisation:

  • ftp -p 203.0.113.0

fermez la connexion:

  • bye

Les utilisateurs autres que sammy ne devraient pas se connecter: ensuite, nous essaierons de nous connecter en tant que sudo utilisateur. Ils devraient également se voir refuser l’accès, et cela devrait se produire avant qu’ils ne soient autorisés à entrer leur mot de passe.,et écrire des fichiers: ici, nous nous assurerons que notre utilisateur désigné peut se connecter:

  • ftp -p 203.0.113.0

Nous allons changer dans le répertoire files, puis utiliser la commande get pour transférer le fichier de test que nous avons créé précédemment sur notre machine locale:

  • cd files
  • get test.txt

Nous allons revenir en arrière et essayer de télécharger le fichier avec un nouveau nom pour tester les autorisations d’écriture:

  • put test.txt upload.txt

fermez la connexion:

  • bye

maintenant que nous avons testé notre configuration, nous allons prendre des mesures pour sécuriser davantage notre serveur.,

Étape 6 — sécurisation des Transactions

puisque FTP ne crypte aucune donnée en transit, y compris les informations d’identification de l’utilisateur, nous allons activer TTL / SSL pour fournir ce cryptage. La première étape consiste à créer les certificats SSL à utiliser avec vsftpd.

nous allons utiliseropenssl pour créer un nouveau certificat et utiliser l’indicateur-days pour le rendre valide pendant un an. Dans la même commande, nous allons ajouter une clé RSA privée de 2048 bits., Ensuite, en définissant à la fois les indicateurs -keyout et -out sur la même valeur, la clé privée et le certificat seront situés dans le même fichier.

Nous allons le faire avec la commande suivante:

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

Vous serez invité à fournir des informations d’adresse de votre certificat., Remplacez vos propres informations pour les questions ci-dessous:

pour plus d’informations sur les indicateurs de certificat, consultez OpenSSL Essentials: utilisation de certificats SSL, clés privées et CSR

Une fois que vous avez créé les certificats, Ouvrez à nouveau le fichier de configuration vsftpd:

  • sudo nano /etc/vsftpd.conf

vecrsa_. Commentez-les pour qu’ils ressemblent à:

/etc/vsftpd.,conf
# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem# rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

en dessous, ajoutez les lignes suivantes qui pointent vers le certificat et la clé privée que nous venons de créer:

/etc / vsftpd.conf
rsa_cert_file=/etc/ssl/private/vsftpd.pemrsa_private_key_file=/etc/ssl/private/vsftpd.pem

Après cela, nous forcerons L’utilisation de SSL, ce qui empêchera les clients qui ne peuvent pas gérer TLS de se connecter. Ceci est nécessaire afin de s’assurer que tout le trafic est crypté, mais peut forcer votre utilisateur FTP à changer de client. Si vous avez besoin d’un fichier, vous pouvez utiliser le fichier ssl_enable en YES:

/etc/vsftpd.,conf
ssl_enable=YES

Après cela, ajoutez les lignes suivantes pour refuser explicitement les connexions anonymes via SSL et pour Exiger SSL pour le transfert de données et les connexions:

/etc / vsftpd.conf
allow_anon_ssl=NOforce_local_data_ssl=YESforce_local_logins_ssl=YES

Après cela, nous allons configurer le serveur pour utiliser TLS, le préféré successeur de SSL en ajoutant les lignes suivantes:

/etc/vsftpd.conf
ssl_tlsv1=YESssl_sslv2=NOssl_sslv3=NO

Enfin, nous allons ajouter deux autres options. Tout d’abord, nous n’aurons pas besoin de réutilisation SSL car cela peut casser de nombreux clients FTP., Nous aurons besoin de suites de chiffrement” élevées », ce qui signifie actuellement des longueurs de clé égales ou supérieures à 128 bits:

/etc/vsftpd.conf
require_ssl_reuse=NOssl_ciphers=HIGH

Lorsque vous avez terminé, enregistrez et fermez le fichier.

maintenant, nous devons redémarrer le serveur pour que les modifications prennent effet:

  • sudo systemctl restart vsftpd

à ce stade, nous ne pourrons plus nous connecter avec un client de ligne de commande non sécurisé. Si nous essayions, nous verrions quelque chose comme:

ensuite, nous vérifierons que nous pouvons nous connecter en utilisant un client qui prend en charge TLS.,

Étape 7 — Test de TLS avec FileZilla

La plupart des clients FTP modernes peuvent être configurés pour utiliser le cryptage TLS. Nous allons démontrer comment se connecter en utilisant FileZilla en raison de son support multiplateforme. Consultez la documentation pour les autres clients.

lorsque vous ouvrez FileZilla pour la première fois, trouvez l’icône du Gestionnaire de Site juste en dessous du fichier word, l’icône la plus à gauche sur la rangée supérieure. Cliquez sur:

Une nouvelle fenêtre s’ouvre., Cliquez sur le bouton” nouveau Site »dans le coin inférieur droit:


sous” Mes Sites », une nouvelle icône avec les mots” nouveau site  » apparaîtra. Vous pouvez le nommer maintenant ou revenir plus tard et utiliser le bouton Renommer.

Vous devez remplir le champ « Hôte” avec le nom ou l’adresse IP. Dans le menu déroulant « cryptage”, sélectionnez « Exiger un FTP explicite sur TLS”.

Pour « Type de connexion”, sélectionnez « Demander un mot de passe”. Remplissez L’utilisateur FTP que vous avez créé dans le champ” Utilisateur »:


Cliquez sur” Connecter  » en bas de l’interface., Il vous sera demandé le mot de passe utilisateur:


Cliquez sur « OK” pour vous connecter. Vous devriez maintenant être connecté à votre serveur avec le cryptage TLS / SSL.


Lorsque vous avez accepté le certificat, double-cliquez sur la balise files dossier et faites glisser le téléchargement.txt à gauche pour confirmer que vous pouvez télécharger des fichiers.

lorsque vous avez fait cela, faites un clic droit sur la copie locale, renommez-la en upload-tls.txt  » et faites-le glisser vers le serveur pour confirmer que vous pouvez télécharger des fichiers.,


Vous avez maintenant confirmé que vous pouvez transférer des fichiers en toute sécurité et avec succès avec SSL / TLS activé.

Étape 8 — désactivation de L’accès au Shell (facultatif)

Si vous ne pouvez pas utiliser TLS en raison des exigences du client, vous pouvez gagner en sécurité en désactivant la capacité de l’utilisateur FTP à se connecter autrement. Un moyen relativement simple de l’empêcher est de créer un shell personnalisé. Cela ne fournira aucun cryptage, mais cela limitera l’accès d’un compte compromis aux fichiers accessibles par FTP.,

tout d’Abord, ouvrez un fichier appelé ftponly dans le répertoire bin:

  • sudo nano /bin/ftponly

Nous allons ajouter un message indiquant à l’utilisateur pourquoi ils sont incapables de se connecter.,/p>

#!/bin/shecho "This account is limited to FTP access only."

Modifier les autorisations pour rendre le fichier exécutable:

  • sudo chmod a+x /bin/ftponly

Ouvrir la liste de validité coques:

  • sudo nano /etc/shells

Au fond, ajouter:

/etc/shells
. . ./bin/ftponly

mettre à Jour le shell de l’utilisateur avec la commande suivante:

  • sudo usermod sammy -s /bin/ftponly

Maintenant, essayez de vous connecter en tant que sammy:

Vous devriez voir quelque chose comme:

Output
This account is limited to FTP access only.Connection to 203.0.113.0 closed.

Cela confirme que l’utilisateur n’a plus ssh pour le serveur, et est limité à un accès FTP.,

Conclusion

dans ce tutoriel, nous avons couvert la configuration de FTP pour les utilisateurs ayant un compte local. Si vous devez utiliser une source d’authentification externe, vous pouvez examiner la prise en charge des utilisateurs virtuels par vsftpd. Cela offre un riche ensemble d’options grâce à L’utilisation de PAM, les Modules D’authentification enfichables, et est un bon choix si vous gérez des utilisateurs dans un autre système tel que LDAP ou Kerberos.

Articles

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *