GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer un serveur FTP avec VSFTPD

Avez-vous déjà oublié un document important sur votre ordinateur personnel et vous travaillez au bureau ? Ou voulez-vous simplement partager un fichier avec quelqu'un qui est assis à côté de vous ? Un serveur FTP comme Very Secure FTP Daemon (VSFTPD) est la solution parfaite.

Dans ce didacticiel, vous apprendrez à installer et à configurer un serveur FPT à l'aide de VSFTPD sur votre serveur Linux afin de pouvoir partager en toute sécurité des fichiers entre ordinateurs.

Continuez à lire et ne laissez plus jamais vos fichiers être captifs sur votre ordinateur personnel !

Prérequis

Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d'avoir les éléments suivants.

  • Une machine Linux :ce didacticiel utilise Ubuntu 20.04 LTS, mais toutes les distributions Linux fonctionneront.
  • Un utilisateur non root avec des privilèges sudo.

Installer VSFTPD sur Ubuntu

VSFTPD est un serveur FTP pour les systèmes de type Unix, mais n'est pas installé par défaut. L'installation de VSFTPD sur Ubuntu est similaire à la façon dont vous installez d'autres packages. Lancez ce didacticiel en mettant à jour votre gestionnaire de packages APT avant d'installer VSFTPD.

1. Exécutez le apt update commande pour mettre à jour APT. Cette commande récupère les listes de packages de vos référentiels configurés et met à jour le cache de packages local.

sudo apt update -y

2. Ensuite, exécutez le apt install commande ci-dessous pour installer VSFTPD sur votre machine. Cette commande extraira également toutes les dépendances requises pour le service FTP.

Par défaut, le paquet VSFTPD est disponible sur la plupart des distributions modernes basées sur Debian. Vous pouvez donc l'installer sans aucun référentiel de packages supplémentaire et laisser APT s'occuper du reste.

3. Enfin, exécutez le systemctl commande ci-dessous pour vérifier que le service VSFTPD est en cours d'exécution et configuré correctement.

sudo systemctl status vsftpd 

Vous verrez une sortie similaire à celle ci-dessous, qui montre que le vsftpd.service est actif (en cours d'exécution) et écoute les requêtes.

Ouverture de ports pour les connexions client FTP

Maintenant que vous avez installé la dernière version de VSFTPD, vous pouvez maintenant configurer votre pare-feu. Vous utiliserez UFW, l'outil de configuration de pare-feu par défaut pour Ubuntu, pour ajouter des règles de pare-feu aux ports ouverts pour les connexions client FTP sécurisées.

1. Exécutez le ufw status commande pour voir quelles règles de pare-feu sont actuellement actives.

sudo ufw status

Ci-dessous, vous pouvez voir que le pare-feu est actif mais n'a aucune règle pour autoriser les connexions par défaut.

2. Ensuite, exécutez le ufw allow commande ci-dessous pour autoriser les trois ports à traverser le pare-feu. VSFTPD nécessite des connexions FTP sur les ports 20 , 21 , et 990 .

sudo ufw allow 20,21,990/tcp

3. Exécutez le ufw commande ci-dessous pour ouvrir le 40000:50000 plage de ports.

VSFTPD nécessite l'ouverture de la plage de ports 40000:50000 afin que les clients FTP puissent établir des connexions de données avec le serveur en mode passif.

sudo ufw allow 40000:50000/tcp

4. Enfin, exécutez le ufw status verbose commande ci-dessous pour vérifier que vos règles de pare-feu sont actives et recherchez les erreurs.

sudo ufw status verbose

Configuration du serveur VSFTDP

Vous avez réussi à autoriser le trafic à travers le pare-feu, mais vous devez configurer votre serveur VSFTPD avant de l'utiliser.

Le /etc/vsftpd.conf file est le fichier de configuration principal pour VSFTPD. Mais vous pouvez également configurer votre serveur FTP via d'autres commandes si vous préférez faire les choses de manière dynamique. Ou si vous préférez spécifier des règles qui ne sont pas disponibles dans le fichier de configuration.

Tout au long de la modification du fichier /etc/vsftpd.conf, décommentez chaque directive pour les activer en supprimant le symbole # devant elles.

1. Exécutez le sudo cp commande ci-dessous pour sauvegarder le fichier de configuration d'origine (/etc/vsftpd.conf /etc/vsftpd.conf.bak ).

Vous devez toujours sauvegarder tout fichier de configuration critique avant de vous lancer.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

2. Ensuite, ouvrez le /etc/vsftpd.conf fichier dans votre éditeur de texte préféré. Cette démo utilise nano pour modifier le fichier de configuration.

sudo nano /etc/vsftpd.conf

3. Recherchez et modifiez le anonymous_enable valeur directive sur NO. Les utilisateurs anonymes sont couramment utilisés pour le partage de fichiers publics. Vous ne voulez pas de cet utilisateur anonyme sur votre serveur. Au lieu de cela, vous voudrez que votre serveur FPT soit sécurisé.

Définissez la valeur de la directive local_enable sur YES pour permettre aux personnes disposant de comptes sur votre serveur de transférer des fichiers via FTP. Avec cette configuration, seuls les utilisateurs autorisés peuvent se connecter à votre serveur FTP.

4. Maintenant, modifiez le write_enable directive à OUI afin que vos utilisateurs puissent télécharger et enregistrer des fichiers sur votre serveur FTP. Cette directive est la plus importante, car elle contrôle l'accès à la fonctionnalité de téléchargement.

5. Changez le chroot_local_user directive à OUI car votre utilisateur FPT ne doit pas s'exécuter en tant que root. La création d'un nouvel utilisateur, éventuellement privilégié, pour le service FTP est beaucoup plus sûre (vous apprendrez plus tard comment créer un utilisateur dédié).

Si cette directive n'est pas activée, l'utilisateur FPT aura accès à tout sur le serveur, même le répertoire racine. Ce comportement peut être un ÉNORME problème de sécurité.

Avec cette configuration, votre utilisateur ne peut accéder qu'aux dossiers que vous spécifiez (le répertoire personnel de l'utilisateur dans la plupart des cas).

Mais lorsque la valeur de la directive chroot_local_user est définie sur YES, la directive write_enable (étape quatre) ne fonctionnera pas car l'appel système chroot() refuse l'accès en écriture (lorsqu'il est activé).

Comme solution, ajoutez la directive ci-dessous à votre vsftpd.conf fichier, donc la directive write_enable fonctionnera quelle que soit la valeur de la directive chroot_local_user.

allowed_writeable_chroot=YES

6. Ensuite, ajoutez les directives ci-dessous à votre vsftpd.conf fichier pour activer les connexions FTP passives.

VSFTPD peut utiliser n'importe quel port au-dessus de 1024 non occupé par un autre service pour la connexion FTP passive. Cette démonstration utilise la plage de ports que vous avez définie dans la section "Ouverture de ports pour les connexions de clients FTP" (étape 3).

pasv_min_port=35000
pasv_max_port=40000

7. Ajoutez les lignes suivantes au bas de vsftpd.conf fichier pour autoriser uniquement les utilisateurs autorisés à se connecter au serveur FTP.

userlist_enable=YES
# Add the user to the vsftpd.userlist to allow a specific user 
# to use the system login account to access your FTP service.
userlist_file=/etc/vsftpd.userlist
# NO - anyone can log in with an anonymous account.
# YES - the user will be denied to login when their name exists in this file. 
userlist_deny=NO

8. Enfin, enregistrez et fermez le vsftpd.conf fichier et exécutez la commande ci-dessous pour restart votre vsftpd serveur pour appliquer les modifications.

sudo service vsftpd restart

Créer un utilisateur dédié pour utiliser le service FTP

Vous avez maintenant configuré votre serveur VSFTPD, mais vous aurez besoin d'un utilisateur dédié pour utiliser le service FTP au lieu d'un utilisateur root. Vous allez créer un répertoire dans le répertoire personnel de l'utilisateur afin que le répertoire soit facilement accessible.

1. Exécutez le adduser commande ci-dessous pour créer un nouvel utilisateur. Vous pouvez choisir n'importe quel nom d'utilisateur que vous préférez, mais cette démo crée un utilisateur appelé ata . Mais rappelez-vous de ne pas dupliquer l'utilisateur ailleurs sur votre serveur.

sudo adduser ata

Fournissez un mot de passe sécurisé et notez-le. Vous utiliserez ce mot de passe pour vous connecter à votre serveur FTP.

Vous devez également fournir quelques détails pour le nouvel utilisateur ou conserver les détails par défaut en appuyant sur ENTRÉE. Tapez Y et appuyez sur ENTER pour confirmer les informations de l'utilisateur.

2. Ensuite, exécutez la commande ci-dessous pour ajouter le ata utilisateur au vsftpd.userlist dossier.

Comme vous vous en souvenez, ce fichier spécifie quels utilisateurs sont autorisés à se connecter via FTP lorsque la valeur de la directive userlist_deny est définie sur NO. À ce stade, seul l'utilisateur ata peut se connecter à votre serveur FTP, et tous les autres utilisateurs anonymes se verront refuser l'accès.

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

3. Exécutez les commandes suivantes pour définir les autorisations appropriées pour le nouveau /home/ata/ftp annuaire.

Les commandes ci-dessous garantissent que seul votre utilisateur FTP dédié a accès au répertoire /home/ata/ftp et permet à l'utilisateur de transférer des fichiers vers/depuis celui-ci.

# Sets the owner of the /home/ata/ftp directory to be nobody.
sudo chown nobody:nogroup /home/ata/ftp
# Ensures that only the owner (your FTP user) 
# has write(w) access(a) to the /home/ata/ftp directory.
sudo chmod a-w /home/ata/ftp

4. Maintenant, exécutez le chown commande pour définir le propriétaire et le groupe du /home/ata/ftp/upload répertoire à votre utilisateur FTP (ata ). La commande définit également les autorisations correctes pour le /home/ata/ftp/upload annuaire.

sudo chown ata:ata /home/ata/ftp/upload

5. Exécutez le echo commande ci-dessous pour créer un fichier de test de base nommé ata.txt .

La commande ci-dessous crée un nouveau fichier nommé ata.txt dans votre répertoire FTP et inclut du texte (fichier de test vsftpd) dans le fichier texte.

echo "vsftpd test file" | sudo tee /home/ata/ftp/upload/ata.txt

À ce stade, vous avez entièrement configuré votre serveur FPT et vos utilisateurs peuvent s'y connecter.

Connexion au serveur FTP

Après avoir configuré un utilisateur FTP dédié, il est enfin temps de vous connecter à votre serveur FTP. Mais vous allez d'abord essayer de vous connecter à votre serveur FTP en utilisant un utilisateur anonyme pour tester si votre serveur FTP est sécurisé.

1. Exécutez le ftp -p commande ci-dessous pour vous connecter à votre serveur FTP. Remplacer your-server-ip avec l'adresse IP réelle de votre serveur.

ftp -p your-server-ip

Essayez de vous connecter en tant qu'utilisateur anonyme et vous verrez le message d'erreur suivant. Cette sortie confirme que votre serveur FTP est sécurisé puisque seul votre utilisateur FTP dédié peut accéder à votre serveur.

2. Exécutez le bye commande pour quitter le client FTP.

bye

3. Réexécutez le ftp commande ci-dessous comme vous l'avez fait à la première étape. Mais cette fois, connectez-vous en tant qu'utilisateur FTP dédié (ata).

ftp -p your-server-ip

Vous recevrez un message 230 Connexion réussie comme indiqué ci-dessous, qui confirme que votre serveur FTP fonctionne comme prévu.

4. Maintenant, exécutez chaque commande ci-dessous pour confirmer le ata.txt le fichier existe dans le ftp/upload annuaire.

Le ata.txt est ce que vous avez créé précédemment dans la section "Création d'un utilisateur dédié pour utiliser le service FTP" (étape cinq).

# Change to the ftp/upload directory as the working directory.
cd ftp/upload
# List all files in the working directory.
ls

5. Exécutez le get commande ci-dessous pour télécharger le fichier (ata.txt ) à partir de votre serveur FTP et enregistrez-le sur votre machine locale.

 get ata.txt

Ci-dessous, vous pouvez voir un message de confirmation indiquant que le transfert est terminé.

6. Ensuite, exécutez le put commande ci-dessous pour télécharger le ata.txt fichier de votre ordinateur local en tant que nouveau fichier nommé ata2.txt à votre serveur FTP.

put ata.txt ata2.txt

7. Enfin, relancez le ls commande pour lister tous les fichiers du répertoire courant et vérifier que ata2.txt a été téléchargé avec succès par votre utilisateur.

ls

Si les transferts de fichiers précédents (étapes sept à huit) ont réussi, vous verrez deux fichiers texte :un nommé ata.txt et un autre nommé ata2.txt, comme indiqué ci-dessous.

Désactivation de l'accès au shell

Lorsque vous créez un nouvel utilisateur FTP, votre serveur FTP autorise automatiquement cet utilisateur à se connecter et à exécuter le shell. Par conséquent, outre le téléchargement de fichiers, vos utilisateurs peuvent également exécuter des commandes système potentiellement dangereuses sur votre serveur FTP.

Lorsque vous n'utilisez pas le serveur FTP, vous pouvez désactiver l'accès au shell pour empêcher les utilisateurs de se connecter à l'aide de SSH. Cela est particulièrement important si vous avez activé la connexion sans mot de passe pour votre utilisateur FTP dédié.

1. Ouvrez un autre terminal sur votre serveur et exécutez la commande ci-dessous pour ssh dans le serveur FPT à l'aide de l'utilisateur FTP dédié (ata ).

ssh [email protected]

Comme indiqué ci-dessous, vous pouvez vous connecter avec succès en utilisant le nom d'utilisateur ata avec le mot de passe que vous avez créé précédemment dans la section "Création d'un utilisateur dédié pour utiliser le service FTP".

Ce comportement indique que l'utilisateur ata peut exécuter n'importe quelle commande sur votre serveur, y compris la modification des configurations du serveur. Un utilisateur FTP compromis peut faire beaucoup plus de dégâts qu'un utilisateur anonyme.

2. Ensuite, exécutez la commande ci-dessous pour créer un nouveau script shell nommé ftponly.sh dans le /bin répertoire de votre serveur FPT. Ce script désactive toute connexion FTP de votre utilisateur FTP dédié pour votre serveur FTP. Le script imprime alors (echo ) un message d'avertissement à l'écran indiquant This account is limited to FTP access only .

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

3. Exécutez le chmod ci-dessous commande pour définir les autorisations correctes sur ce nouveau script shell (/bin/ftponly ). Cette commande rend le script exécutable et permet à votre utilisateur FTP (ata) de l'exécuter.

sudo chmod a+x /bin/ftponly

4. Maintenant, exécutez la commande ci-dessous pour ajouter le chemin du nouveau script shell (ftponly ) dans votre /etc/shells dossier. Cette action garantit que toute connexion que vous essayez avec votre utilisateur ata est rejetée depuis le /bin/ftponly le script sera exécuté à la place.

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

5. Exécutez le usermod commande ci-dessous pour changer le shell actuel de votre utilisateur FTP (ata) en /bin/ftponly coquille.

sudo usermod ata -s /bin/ftponly 

6. Enfin, exécutez la commande ci-dessous pour SSH sur votre serveur FPT en utilisant votre utilisateur FTP (ata ).

ssh [email protected]

Comme indiqué ci-dessous, votre utilisateur FTP dédié ne peut pas accéder en SSH à votre serveur FTP. Ce comportement est attendu depuis le /bin/ftponly le script shell affiche un message d'avertissement et ferme la connexion SSH (fermée).

Conclusion

Dans ce didacticiel, vous avez appris à installer et à configurer un serveur FTP dans Ubuntu Linux à l'aide de VSFTPD. Vous avez également appris à configurer un utilisateur FTP avec un accès limité et à restreindre l'accès au shell de l'utilisateur FTP.

À ce stade, vous devriez avoir un serveur FTP fonctionnel avec un accès restreint.

Avec ces nouvelles connaissances, vous pouvez maintenant configurer votre serveur FTP sur AWS EC2, ou vous pouvez commencer à configurer un serveur FTP sur votre Raspberry Pi. Sur lequel choisiriez-vous de commencer à travailler ?


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

  2. Comment installer un serveur FTP sur Ubuntu avec vsftpd

  3. Comment configurer le serveur de fichiers FTP vsftpd sur Redhat 7 Linux

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

  5. Configurer un serveur FTP avec vsFTPd sur le Raspberry Pi

Comment installer et configurer le serveur FTP sur CentOS

Comment installer le serveur FTP vsftpd avec TLS sur Debian 10

Comment installer le serveur VsFTPD avec TLS sur Ubuntu 18.04 LTS

Comment installer le serveur vsftpd sur Debian 11

Comment installer un serveur FTP ?

Comment configurer un serveur FTP avec ProFTPD dans Ubuntu 18.04