GNU/Linux >> Tutoriels Linux >  >> Debian

Comment configurer vsftpd sur Debian

Vsftpd est l'acronyme de Very Secure FTP Daemon :c'est l'un des serveurs ftp les plus utilisés sous 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 le cryptage des données. Dans ce tutoriel, nous verrons comment l'installer et le configurer sous Linux.

Dans ce didacticiel, vous apprendrez :

  • Comment installer vsftpd sur Debian 10
  • Comment configurer vsftpd
  • Comment configurer l'utilisation anonyme
  • Comment configurer la connexion avec des utilisateurs locaux
  • Comment configurer des utilisateurs virtuels
  • Comment configurer ufw pour autoriser le trafic entrant

Comment configurer vsftpd sur Debian

Configuration logicielle requise et conventions utilisées

Configuration logicielle requise et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version du logiciel utilisée
Système Debian 10 (Buster)
Logiciel vsftpd, openssl, libpam-pwdfile
Autre Autorisations root pour installer et configurer vsftpd
Conventions # - nécessite que les commandes linux données soient exécutées avec les privilèges root soit directement en tant qu'utilisateur root, soit en utilisant sudo command
$ - nécessite que les commandes linux données soient exécutées en tant qu'utilisateur normal non privilégié

Installation

Vsftpd est disponible dans les dépôts officiels de Debian, donc pour l'installer, nous pouvons utiliser notre gestionnaire de paquets préféré; il s'agit simplement de synchroniser les référentiels et d'installer le package. Les deux choses peuvent être accomplies en
exécutant les commandes suivantes :

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

Quelques secondes et le paquet sera installé sur notre système Debian. Les scripts d'installation inclus dans le package se chargeront également 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. Pouvoir utiliser les 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 partie dédiée de ce tutoriel.

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

Configuration de Vsftpd

Le fichier de configuration vsftpd est /etc/vsftpd.conf . Si nous l'ouvrons, 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é à la ligne 25 . Tout ce que nous avons à faire est de le mettre sur YES :
doit remplacer l'instruction par :

anonymous_enable=YES

Une autre directive que nous pourrions vouloir changer est celle qui nous permet de définir un répertoire dans lequel vsftpd essaiera de naviguer après un accès anonyme. La directive qui nous permet de contrôler ce paramètre est anon_root . Disons que nous voulons qu'un utilisateur anonyme accède au /srv/ftp répertoire par défaut, on écrirait :

anon_root=/srv/ftp

Toutes les connexions anonymes sont mappées en interne à un utilisateur désigné, qui, par défaut, est ftp . Pour changer ce mappage, nous devons utiliser le ftp_username option et définissez-le sur le nom de l'utilisateur auquel nous voulons mapper les utilisateurs anonymes.

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 directive doit être définie sur YES . Cette directive est commentée à la ligne 31 du fichier de configuration, il vous suffit donc de supprimer le commentaire.

# Uncomment this to enable any form of FTP write command.
write_enable=YES

Une fois cette directive activée, il ne nous reste plus qu'à travailler sur deux autres options :anon_upload_enable et anon_mkdir_write_enable . Lorsque le premier est défini sur YES un utilisateur anonyme pourra télécharger files, 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, il suffit de supprimer le commentaire de la ligne 40 du fichier de configuration :

# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=YES

Le anon_mkdir_write_enable directive, à la place, lorsqu'elle est définie sur YES 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 les droits d'écriture sur le répertoire parent). La directive est située à la ligne 44 du fichier de configuration :

# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES

Encore une fois, puisque la variable est déjà définie sur YES , pour qu'il soit pertinent, il suffit d'en supprimer le commentaire.

Pour permettre aux utilisateurs anonymes d'effectuer également d'autres types d'opérations d'écriture, comme par exemple renommer 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 réglez-le sur YES si celui ci-dessus est notre comportement souhaité :

anon_other_write_enable=YES

Connexions authentifiées

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

# Uncomment this to allow local users to log in.
local_enable=YES

Par défaut, lorsqu'un utilisateur local s'authentifie avec succès, il aura son propre répertoire personnel en tant que root. Il est cependant possible de spécifier un point de départ alternatif 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 l'utiliser. Pour définir le /srv/ftp répertoire comme racine locale, par exemple, nous écrirons :

local_root=/srv/ftp

Chrooter les utilisateurs locaux

Par mesure de sécurité, il est possible de chrooter chaque utilisateur authentifié dans son propre répertoire personnel. Pour accomplir cette tâche, nous devons utiliser le chroot_local_user instruction :

chroot_local_user=YES

Lorsque cette fonctionnalité est activée, il est possible de spécifier une liste d'exclusions (une liste d'utilisateurs qui ne doivent pas être chrootés) à l'aide des directives suivantes :

chroot_list_enable=YES
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 la liste d'exclusion . Le fichier doit être créé s'il n'existe pas déjà, sinon la connexion échouera.

Par mesure de sécurité, lorsqu'un utilisateur est chrooté, il ne doit pas pouvoir écrire dans le répertoire de niveau supérieur du chroot. Si tel est le cas, dans les versions les plus récentes de vsftpd, un utilisateur ne pourra pas se connecter et le serveur répondra par le message suivant :

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

Ce problème peut être résolu essentiellement de deux manières. Cette première consiste évidemment à fixer les permissions , en refusant à l'utilisateur l'accès en écriture au répertoire de niveau supérieur du chroot et en le laissant é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 pour la sécurité, est de contourner cette restriction , en utilisant la directive suivante :

allow_writeable_chroot=YES

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

# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
#local_umask=022

Connexion avec des utilisateurs virtuels

Une fonctionnalité intéressante offerte par vsftpd est la possibilité de se connecter en utilisant des 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 :

guest_enable=YES

Lorsque la fonctionnalité est active, toutes les connexions non anonymes (donc même les utilisateurs réels/locaux) sont mappées à l'utilisateur spécifié avec le guest_username directive, qui par défaut, comme nous l'avons déjà vu est 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 lancez la commande suivante :

$ openssl passwd -1
Password:
Verifying - Password:
$1$pfwh3Jou$DQBiNjw8bBtDqys7ezTpr.

Le mot de passe 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 mot de passe à hacher et sa confirmation. Enfin, le mot de passe haché est généré et affiché à l'écran.

Le nom d'utilisateur, ainsi que le mot de passe, doivent être placés dans un fichier, disons qu'il s'agit de /etc/virtual_users.pwd , au format suivant :

username:hashed_password

Donc, en supposant que notre utilisateur virtuel s'appelle "linuxconfig", nous écrirons :

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 placez-le dans le /etc/pam.d annuaire. Son contenu sera le suivant :

#%PAM-1.0
auth    required pam_pwdfile.so pwdfile /etc/vsftpd/virtual_users.pwd
account required pam_permit.so

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 avons à faire, maintenant, est de demander à vsftpd d'utiliser ce "service" pam. Nous pouvons le faire avec le pam_service_name instruction :

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, le support SSL est désactivé sur vsftpd, donc les données transférées ne seront pas cryptées. Pour activer le support SSL, nous devons utiliser les directives suivantes, situées aux lignes 149 à 151 du fichier de configuration :

# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=YES

La première directive, rsa_cert_file est utilisé pour indiquer le chemin du certificat RSA à utiliser pour les connexions cryptées SSL. La seconde, rsa_private_key , à la place, est utilisé pour spécifier l'emplacement de la clé privée RSA. Enfin, le ssl_enable est utilisée pour activer l'utilisation du cryptage SSL.

L'exemple utilise le /etc/ssl/certs/ssl-cert-snakeoil.pem et /etc/ssl/private/ssl-cert-snakeoil.key fichiers, mais vous voudrez presque certainement en utiliser un dédié.

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

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

# Set to NO if you want to disallow the PASV method of obtaining a data connection
# (passive mode). Default: YES
pasv_enable=YES

Lorsque le serveur fonctionne en mode passif , il envoie au client une adresse IP et un port qu'il doit é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 autoriser le trafic. La plage de ports à utiliser peut être spécifiée avec le pasv_min_port et pasv_max_port directives, par exemple :

# The minimum port to allocate for PASV style data connections. Can be used to
# specify a narrow port range to assist firewalling.
pasv_min_port=10090

# The maximum port to allocate for PASV style data connections. Can be used to
# specify a narrow port range to assist firewalling. Default: 0 (use any port)
pasv_max_port=10100

Avec la configuration suivante, le serveur utilisera une plage de ports allant de 10090 à 10100 .

Configuration du pare-feu

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

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

$ sudo ufw allow in 21/tcp

Dans un deuxième temps, nous devons autoriser le trafic entrant via la plage de ports spécifiée que nous avons configurée dans la section précédente. Pour spécifier une plage de ports que nous pouvons exécuter :

$ sudo ufw allow in 10090:10100/tcp

Conclusion

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 tirer parti des utilisateurs virtuels fonctionnalité fournie par le service. Étant donné que FTP ne fournit pas de cryptage des données, nous avons vu comment activer la prise en charge SSL et enfin comment configurer le pare-feu pour autoriser le trafic entrant via les ports nécessaires. Pour une liste complète des directives possibles pouvant être utilisées dans le fichier de configuration vsftpd, veuillez consulter le vsftpd.conf page de manuel (VSFTPD.CONF(5)). Vous voulez savoir comment travailler par programmation avec un serveur FTP ? Jetez un œil à notre article sur Comment se connecter à un serveur FTP en utilisant python.


Debian
  1. Comment installer R sur Debian 9

  2. Comment configurer un serveur FTP avec VSFTPD sur Debian 9

  3. Comment installer R sur Debian 10

  4. Comment configurer le serveur Rsyslog sur Debian 11

  5. Comment configurer VSFTPD sur CentOS 7.x ?

Comment installer le serveur vsftpd sur Debian 11

Comment configurer le pare-feu UFW sur Debian 10

Comment installer Go sur Debian 10

Comment configurer le pare-feu UFW sur Debian 11

Comment configurer le serveur OpenLDAP sur Debian 10

Comment installer Go sur Debian