Comment configurer vsftpd sur Debian

Comment configurer vsftpd sur Debian

VSFTPD est l'acronyme du démon FTP très sécurisé: il est l'un des serveurs FTP les plus utilisés sur Linux et d'autres systèmes d'exploitation de type UNIX. Il est open source et publié sous la licence GPL, et prend en charge les utilisateurs virtuels et SSL pour les données
chiffrement. Dans ce tutoriel, nous verrons comment l'installer et le configurer sur Linux.

Dans ce tutoriel, vous apprendrez:

  • Comment installer vsftpd sur Debian 10
  • Comment configurer vsftpd
  • Comment configurer une utilisation anonyme
  • Comment configurer la connexion avec les utilisateurs locaux
  • Comment configurer les utilisateurs virtuels
  • Comment configurer UFW pour permettre le trafic entrant
Comment configurer vsftpd sur Debian

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Debian 10 (Buster)
Logiciel VSFTPD, OpenSSL, libpam-pwdfile
Autre Autorisations racinaires pour installer et configurer VSFTPD
Conventions # - nécessite que les commandes Linux sont exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux sont exécutées en tant qu'utilisateur non privilégié régulier

Installation

VSFTPD est disponible dans les référentiels officiels Debian, donc pour l'installer, nous pouvons utiliser notre gestionnaire de packages préféré; C'est juste une question de synchronisation des référentiels et d'installer le package. Les deux choses peuvent être accomplies par
exécuter les commandes suivantes:

$ sudo apt-get update && sudo apt-get install vsftpd 


Quelques secondes et le package sera installé sur notre système Debian. Les scripts d'installation inclus dans le package prendront également soin de démarrer le vsftpd Service automatiquement, mais nous devons nous rappeler de redémarrer ou de recharger le service chaque fois que nous modifions le fichier de configuration. Pour pouvoir utiliser le utilisateurs virtuels fonctionnalité fournie par le VSFTPD, nous devons également installer un autre package:

$ sudo apt-get install libpam-pwdfile 

Nous verrons son utilisation dans la section dédiée de ce tutoriel.

Une fois les packages nécessaires installés, nous pouvons continuer davantage et configurer VSFTPD: nous verrons comment le faire dans la section suivante de ce tutoriel.

Configuration VSFTPD

Le fichier de configuration VSFTPD est / etc / vsftpd.confli. Si nous l'ouvrirons, nous pouvons voir les différentes directives déjà contenues. Voyons quels sont les plus pertinents pour les cas les plus courants.

Activer la connexion anonyme

L'accès non authentifié au serveur, en tant qu'utilisateurs anonymes, est désactivé par défaut. Pour l'activer, nous devons utiliser le anonymous_enable Directive, qui sur le fichier de configuration est placée à la ligne 25. Tout ce que nous avons à faire est de le régler sur OUI:
doit changer l'instruction en:

anonymous_enable = oui 

Une autre directive que nous pouvons vouloir changer est celle qui nous a permis de définir un répertoire dans ce que VSFTPD essaiera de naviguer après un accès anonyme. La directive qui nous a permis de contrôler ce paramètre anon_root. Disons que nous voulons qu'un utilisateur anonyme accéde à la / srv / ftp Répertoire Par défaut, nous écrivions:

anon_root = / srv / ftp 

Toutes les connexions anonymes sont mappées en interne à un utilisateur conçu, qui, par défaut, est FTP. Pour changer cette cartographie, nous devons utiliser le FTP_UNERNAME Option et le définir sur le nom de l'utilisateur, nous souhaitons cartographier les utilisateurs anonymes pour.

Par défaut, un utilisateur anonyme ne sera pas autorisé à écrire quoi que ce soit sur le serveur, pour des raisons de sécurité évidentes. Si vous souhaitez modifier ce comportement (non recommandé), il y a peu d'options qui doivent être modifiées. Tout d'abord le général write_enable La directive doit être définie sur OUI. Cette directive est commentée en ligne 31 du fichier de configuration, tout ce que vous avez à faire est de supprimer le commentaire.

# Unqument cela pour activer toute forme de commande ftp write. write_enable = oui 


Une fois cette directive activée, tout ce que nous avons à faire est de travailler sur deux autres options: anon_upload_enable et anon_mkdir_write_enable. Lorsque le premier est prêt à OUI Un utilisateur anonyme pourra télécharger fichiers, mais seulement si l'utilisateur sur lequel il est mappé (comme nous l'avons dit, FTP, par défaut) a des autorisations d'écriture sur le répertoire de destination. Pour activer cette option, tout ce que nous avons à faire est de supprimer le commentaire de la ligne 40 du fichier de configuration:

# Décommente cela pour permettre à l'utilisateur FTP anonyme de télécharger des fichiers. Ce seul # a un effet si l'activation de l'écriture globale ci-dessus est activée. De plus, vous aurez # évidemment, vous devrez créer un répertoire écrivable par l'utilisateur FTP. anon_upload_enable = oui 

Le anon_mkdir_write_enable Directive, plutôt, lorsqu'elle est définie sur OUI permet aux utilisateurs anonymes de créer de nouveaux répertoires sur le serveur, dans les mêmes conditions que nous avons vues ci-dessus (l'utilisateur sous-jacent sur le serveur doit avoir des autorisations d'écriture sur le répertoire parent). La directive est située à la ligne 44 du fichier de configuration:

# Uncomment ceci si vous voulez que l'utilisateur FTP anonyme puisse créer # de nouveaux répertoires. anon_mkdir_write_enable = oui 

Encore une fois, puisque la variable est déjà définie sur OUI, Pour que ce soit pertinent, tout ce que nous avons à faire est d'en retirer le commentaire.

Pour permettre aux utilisateurs anonymes d'effectuer également d'autres types d'opérations d'écriture, comme par exemple renommée ou supprimer Un répertoire, nous devons utiliser une autre directive qui n'est pas présente dans le fichier de configuration, anon_other_write_enable et le régler sur OUI Si celui ci-dessus est le comportement souhaité:

anon_other_write_enable = oui 

Connects authentifiés

Pour permettre aux utilisateurs du système local d'accéder au serveur FTP avec leur mot de passe système, le local_enable La directive doit être définie sur OUI: c'est la valeur par défaut du système Debian. La directive peut être trouvée en ligne 28 du démon
fichier de configuration:

# Décommente ceci pour permettre aux utilisateurs locaux de se connecter. local_enable = oui 

Par défaut, lorsqu'un utilisateur local s'authentifie avec succès, il aura son propre répertoire domestique en tant que root. Il est cependant possible de spécifier un autre point de départ en utilisant le local_root directif. Cette directive n'est pas présente dans le fichier de configuration, nous devons donc l'ajouter si nous voulons utiliser. Pour définir le / srv / ftp Répertoire en tant que racine locale, par exemple, nous écrivions:

local_root = / srv / ftp 

Chroot Utilisateurs locaux

En tant que mesure de sécurité, il est possible de chroot Chaque utilisateur authentifié dans son propre répertoire domestique. Pour accomplir cette tâche, nous devons utiliser le chroot_local_user directif:

chroot_local_user = oui 

Lorsque cette fonctionnalité est activée, il est possible de spécifier une liste d'exclusions, (une liste d'utilisateurs qui ne devraient pas être chrootés) en utilisant les directives suivantes:

chroot_list_enable = oui chroot_list_file = / etc / vsftpd.chroot_list 


La première directive est nécessaire pour activer la fonctionnalité, l'autre pour spécifier l'emplacement du fichier contenant le liste d'exclusion. Le fichier doit être créé s'il n'existe pas déjà, sinon la connexion échouera.

En tant que mesure de sécurité, lorsqu'un utilisateur est chrooté, il ne devrait pas pouvoir écrire au répertoire de niveau supérieur du chroot. Si c'est le cas, dans les versions les plus récentes de VSFTPD, un utilisateur ne pourra pas se connecter et le serveur répondra avec le message suivant:

500 Oups: VSftpd: refusant de fonctionner avec une racine en écriture à l'intérieur de Chroot () 

Ce problème peut être résolu de deux manières. Ce premier est évidemment consiste à Fixation des autorisations, Nier l'accès à l'écriture de l'utilisateur au répertoire de niveau supérieur du chroot et le laisser écrire uniquement sur les sous-répertoires.
La deuxième façon de résoudre le problème, si vous ne vous souciez pas des implications possibles de sécurité, est de contourner cette restriction, Utilisation de la directive suivante:

allow_writeable_chroot = oui 

En parlant d'autorisations, il est important de garder à l'esprit que le umask par défaut pour l'utilisateur local est défini sur 077. Si ce paramètre est considéré comme trop restrictif, il est possible de le modifier en utilisant le local_umask directif. Cette directive est commentée à la ligne 35 du fichier de configuration:

# Umask par défaut pour les utilisateurs locaux est 077. Vous souhaiterez peut-être changer cela en 022, # Si vos utilisateurs s'attendent à ce que (022 soit utilisé par la plupart des autres FTPD) # local_umask = 022 

Connectez-vous avec les utilisateurs virtuels

Une belle fonctionnalité offerte par VSFTPD est la possibilité de se connecter en utilisant utilisateurs virtuels. Un utilisateur virtuel est un utilisateur qui n'existe pas vraiment sur le système, mais uniquement dans le contexte de l'application SFTPD. Pour activer cette fonctionnalité, nous devons utiliser la directive suivante:

invité_enable = oui 

Lorsque la fonctionnalité est active, toutes les connexions non anonymes (donc même les utilisateurs réels / locaux) sont mappés à l'utilisateur spécifié avec le invité_username directive, qui par défaut, comme nous l'avons déjà vu FTP.

L'étape suivante consiste à créer un fichier contenant les noms d'utilisateur et les mots de passe des utilisateurs virtuels. Pour générer un mot de passe haché, nous pouvons utiliser OpenSSL et émettez la commande suivante:

$ OpenSSL PASSWD -1 Mot de passe: Vérification - Mot de passe: 1 $ PFWH3Jou $ dqbinjw8bbtdqys7eztpr. 

Le passage commande de OpenSSL est utilisé pour générer des mots de passe hachés (MD5). Dans l'exemple ci-dessus, on nous a demandé le hachage du mot de passe et sa confirmation. Enfin, le mot de passe haché est généré et affiché à l'écran.

Le nom d'utilisateur, avec le mot de passe, doit être placé dans un fichier, disons que c'est / etc / virtual_users.PWD, Dans le format suivant:

Nom d'utilisateur: Hashed_password 

Donc, en supposant que notre utilisateur virtuel est appelé «LinuxConfig», nous écrivions:

LinuxConfig: 1 $ PFWH3Jou $ dqbinjw8bbtdqys7eztpr. 

L'opération doit être répétée pour chaque utilisateur virtuel que nous voulons configurer.

Maintenant, nous devons créer le pam Service qui sera utilisé par VSFTPD pour authentifier les utilisateurs virtuels. Nous nommerons le fichier vsftpd_virtual et le placer dans le / etc / pam.d annuaire. Son contenu sera les suivants:

#% Pam-1.0 AUTH requis PAM_PWDFILE.donc pwdfile / etc / vsftpd / virtual_users.compte pwd requis PAM_PERMIT.donc 

Comme vous pouvez le voir, nous avons spécifié le chemin du fichier contenant le nom d'utilisateur et les mots de passe des utilisateurs virtuels dans la première ligne. Tout ce que nous devons faire, maintenant, est de demander à VSFTPD d'utiliser ce «service» PAM. Nous pouvons le faire avec le pam_service_name directif:

pam_service_name = vsftpd_virtual 

À ce stade, nous pouvons enregistrer le fichier de configuration, redémarrer le démon et vérifier que nous pouvons nous connecter avec l'utilisateur virtuel que nous venons de créer.

Activation de la prise en charge SSL pour le chiffrement des données

Par défaut, la prise en charge SSL est désactivée sur VSFTPD, les données transférées ne seront donc pas cryptées. Pour activer le support SSL, nous devons utiliser les directives suivantes, situées sur les lignes 149 pour 151 du fichier de configuration:

# Cette option spécifie l'emplacement du certificat RSA à utiliser pour les connexions cryptées SSL #. rsa_cert_file = / etc / ssl / certs / ssl-cerner-sakeoil.pem rsa_private_key_file = / etc / ssl / private / ssl-cerner-sakeoil.clé ssl_enable = oui 


La première directive, rsa_cert_file est utilisé pour indiquer le chemin du certificat RSA à utiliser pour les connexions cryptées SSL. Le deuxième, rsa_private_key, Au lieu de cela, est utilisé pour spécifier l'emplacement de la clé privée RSA. Finalement, le ssl_enable La directive est utilisée pour permettre l'utilisation du cryptage SSL.

L'exemple utilise le / etc / ssl / certs / ssl-cerner-sakeoil.pem et / etc / ssl / private / ssl-cerner-sakeoil.clé fichiers, mais vous voulez presque certainement en utiliser un dédié.

Spécification de la plage de port pour le mode passif

Le mode passif FTP est la valeur par défaut d'une nouvelle installation de VSFTPD, mais si nous voulons l'activer explicitement, nous pouvons utiliser la directive suivante:

# Set sur no si vous souhaitez interdire la méthode PASV pour obtenir une connexion de données # (mode passif). Par défaut: oui pasv_enable = oui 

Lorsque le serveur fonctionne dans mode passif, Il envoie au client une adresse IP et un port IP à laquelle il devrait écouter pour la connexion. Ces ports sont par défaut sélectionnés au hasard, cependant, puisque nous devons utiliser un pare-feu sur notre serveur, nous devons savoir quels ports nous devons permettre à la circulation en profondeur. La gamme de ports à utiliser peut être spécifiée avec le pasv_min_port et pasv_max_port directives, par exemple:

# Le port minimum à allouer des connexions de données de style PASV. Peut être utilisé pour spécifier une plage de port étroite pour aider le pare-feu. pasv_min_port = 10090 # Le port maximum à allouer des connexions de données de style PASV. Peut être utilisé pour spécifier une plage de port étroite pour aider le pare-feu. Par défaut: 0 (utilisez n'importe quel port) pasv_max_port = 10100 

Avec la configuration suivante, le serveur utilisera une gamme de ports qui va de 10090 pour 10100.

Configuration du pare-feu

Pour que notre serveur VSFTPD fonctionne correctement, nous devons autoriser le trafic à travers les ports nécessaires, certains nous devons configurer les règles appropriées pour notre pare-feu. Dans ce tutoriel, je suppose l'utilisation du ufw Gestionnaire de pare-feu (pare-feu simple).

Le premier port que nous voulons autoriser le trafic est le port est 21, qui est le port standard utilisé par le protocole FTP:

$ sudo ufw permettre en 21 / TCP 


En tant que deuxième chose, nous devons autoriser le trafic entrant via la plage de port spécifiée que nous configurons dans la section précédente. Pour spécifier une gamme de ports, nous pouvons exécuter:

$ sudo ufw autoriser en 10090: 10100 / TCP 

Conclusions

Dans cet article, nous avons vu comment installer et configurer VSFTPD sur Debian 10 Buster. Nous avons vu comment configurer l'utilisation anonyme et l'utilisation des utilisateurs locaux, et comment nous pouvons profiter du utilisateurs virtuels fonctionnalité fournie par le service. Étant donné que FTP ne fournit pas de chiffrement de données, nous avons vu comment permettre le support SSL, et enfin comment configurer le pare-feu pour permettre le trafic entrant dans les ports nécessaires. Pour une liste complète des directives possibles qui peuvent être utilisées dans le fichier de configuration VSFTPD, veuillez consulter le vsftpd.confli manche (vsftpd.Conf (5)). Vous voulez savoir comment travailler par programme avec un serveur FTP? Jetez un œil à notre article sur la façon de vous connecter à un serveur FTP à l'aide de Python.

Tutoriels Linux connexes:

  • Configuration du serveur FTP sur Linux
  • Choses à installer sur Ubuntu 20.04
  • Comment configurer le serveur et le client FTP / SFTP sur Almalinux
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Liste des clients FTP et installation sur Ubuntu 22.04 Linux…
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Comment se connecter à un serveur FTP à l'aide de Python
  • Ubuntu 20.04 astuces et choses que vous ne savez peut-être pas
  • Liste des clients FTP et installation sur Ubuntu 20.04 Linux…
  • Ubuntu 20.04: WordPress avec l'installation de Nginx