GNU/Linux >> Tutoriels Linux >  >> Panels >> Webmin

Serveur WU-FTPD


Dans ce chapitre, le serveur WU-FTPD pour le protocole FTP est expliqué, et les étapes à suivre pour le configurer pour de nombreuses tâches courantes sont répertoriées.

Remarque : Comme les clients FTP modernes prennent en charge SSH, envisagez d'utiliser un serveur SSH au lieu d'un serveur FTP, pour (beaucoup) plus de sécurité que n'importe quel serveur FTP peut promettre

Contenu

Introduction à WU-FTPD

WU-FTPD (WU signifie Washington University) est probablement le serveur FTP Unix le plus populaire sur Internet et est inclus par défaut avec la plupart des systèmes d'exploitation Unix et Linux. Son grand nombre d'options configurables le rend supérieur au serveur FTP "classique" ou BSD qui est encore utilisé par certaines versions d'Unix, mais il n'est pas à mon avis aussi flexible ou proprement implémenté que ProFTPD, couvert au chapitre 40. Ce chapitre contient également une brève introduction au protocole FTP, que vous devriez lire avant d'aller plus loin si vous n'êtes pas familier avec des concepts tels que les clients et les serveurs FTP.

Dans sa configuration normale par défaut, WU-FTPD permettra à tout utilisateur Unix (à l'exception des utilisateurs du système) de se connecter avec leurs noms d'utilisateur et mots de passe standard et de télécharger, télécharger et manipuler des fichiers sur le système serveur avec les mêmes autorisations qu'ils auraient s'ils étaient connectés via Telnet ou SSH. Il peut également être configuré pour prendre en charge les connexions anonymes, afin que n'importe qui puisse se connecter sans avoir besoin d'un compte Unix valide - bien que les clients anonymes soient généralement limités à un certain répertoire et empêchés de télécharger des fichiers.

Le fichier de configuration principal de WU-FTPD s'appelle /etc/ftpaccess, mais il utilise également plusieurs autres fichiers tels que /etc/ftpusers et /etc/ftphosts. Le fichier ftpaccess contient une série de directives, une par ligne, chacune ayant un nom et plusieurs valeurs. Chaque directive définit une seule option telle que le chemin d'accès à un fichier de messages ou un alias de répertoire.

Comme ProFTPD, WU-FTPD peut être exécuté soit en tant que processus démon autonome permanent, soit à partir d'un super-serveur comme inetd ou xinetd. En règle générale, cette dernière option est utilisée, car cela supprime le besoin d'un processus serveur supplémentaire en cours d'exécution en attente d'une connexion FTP. En ce qui concerne les clients et le fichier de configuration, il n'y a aucune différence entre les deux modes en dehors des performances.

Le module serveur WU-FTPD

Pour configurer le serveur FTP depuis Webmin, cliquez sur l'icône *WU-FTPD Server* sous la catégorie Serveurs. S'il est correctement installé et fonctionne, la page principale du module illustrée à la Figure 41-1 s'affichera. Chacune des icônes vous amènera à un formulaire pour définir une classe d'options configurables, telles que celles liées à la journalisation ou aux messages et bannières.

Pas fait

 Figure 41-1 “The WU-FTPD Server module” 

Si le module ne trouve pas l'exécutable du serveur WU-FTPD, un message d'erreur du type *Le serveur FTP /usr/sbin/in.ftpd est introuvable sur votre système* ou *Le fichier de configuration du serveur FTP /etc/ftpaccess n'existe pas * s'affichera. Cela signifie généralement que le programme n'est pas installé - vérifiez votre CD de distribution Linux ou votre site Web pour le package wu-ftpd et installez-le à l'aide du module Packages logiciels, couvert au chapitre 12. Cela peut également signifier que le module cherche au mauvais endroit pour le programme serveur ou le fichier de configuration. Si vous êtes certain que WU-FTPD est installé, consultez la section "Configuration du module serveur WU-FTPD" plus loin dans ce chapitre pour plus d'informations sur l'ajustement des chemins que Webmin recherche.

Parfois, même si WU-FTPD est installé, il sera désactivé par défaut. Si vous exécutez ftp localhost à l'invite de commande et obtenez le message d'erreur Connexion refusée, aucun serveur FTP n'est en cours d'exécution. Cela peut être dû au fait qu'aucun service inetd ou xinetd n'a encore été créé pour FTP, ou parce qu'il en existe un mais qu'il est désactivé. Suivez les instructions ci-dessous pour expliquer comment configurer ou activer un service de super-serveur pour ProFTPD.

Si WU-FTPD doit vraiment être installé, vous devez d'abord supprimer tout autre serveur FTP (tel que ProFTPD ou PureFTP) actuellement installé sur votre système. Assurez-vous également de tuer tous ses processus, afin que rien ne reste à l'écoute sur le port FTP. Vous pouvez vérifier que l'autre serveur a été complètement arrêté en exécutant ftp localhost à l'invite de commande - le message d'erreur Connexion refusée doit s'afficher, indiquant que rien n'écoute sur le port 21.

Après avoir installé WU-FTPD, vous devrez configurer inetd ou xinetd pour écouter sur le port FTP et exécuter le programme serveur. Avant de pouvoir le faire, découvrez où le programme a été réellement installé sur votre système - généralement ce sera à /usr/sbin/in.ftpd, mais cela peut différer selon votre système d'exploitation.

Si votre système utilise le super-serveur supérieur xinetd, suivez ces instructions pour configurer le service FTP. Étant donné que de nombreux packages incluent un fichier de configuration /etc/xinetd.d pour le serveur, certains des champs expliqués ci-dessous peuvent déjà être remplis correctement.

  1. Accédez à la catégorie Réseaux de Webmin et cliquez sur l'icône * Services Internet étendus *. S'il n'existe pas, xinetd n'est pas installé et vous devrez configurer le serveur à l'aide d'inetd à la place.
  2. Sur la page principale du module, recherchez un service existant nommé ftp ou wu-ftpd. S'il existe, cliquez dessus - sinon, suivez la procédure Créer un nouveau service Internet lien au-dessus ou au-dessous du tableau.
  3. Dans le nom du service champ, entrez ftp (sauf s'il a déjà été rempli).
  4. Assurez-vous que Oui l'option est sélectionnée dans le Service activé ? domaine.
  5. Laissez Lier à l'adresse champ défini sur Tous , et le *Numéro de port* sur Standard ou 21 .
  6. Sélectionnez Diffusion à partir du Type de socket menu, et Par défaut ou TCP du Protocole liste.
  7. Dans le Service géré par champ, sélectionnez le Programme serveur option et entrez le chemin vers l'exécutable WU-FTPD avec les arguments –l –a (tels que /usr/sbin/in.ftpd –l -a ) dans la zone de texte adjacente.
  8. Dans la section Exécuter en tant qu'utilisateur champ, entrez racine .
  9. Sélectionnez Non pour le Attendre la fin ? domaine.
  10. Laissez tous les autres champs définis sur leurs valeurs par défaut et cliquez sur Enregistrer ou Créer bouton en bas du formulaire.
  11. De retour sur la page principale du module, cliquez sur Appliquer les modifications sous la liste des services.

Sinon, pour configurer un service inetd pour WU-FTPD à l'aide du module Services et protocoles Internet, suivez ces étapes :

  1. Accédez à la catégorie Réseaux de Webmin et cliquez sur l'icône * Services et protocoles Internet*. S'il n'existe pas, votre système utilise probablement xinetd.
  2. Sur la page principale du module, cliquez sur ftp dans le tableau *Services Internet*. S'il n'est pas visible, saisissez ftp dans le champ *Modifier le service* et cliquez sur le bouton. Dans tous les cas, la même page de modification du service de protocole FTP s'affichera.
  3. Dans le Programme Serveur section, sélectionnez Programme activé .
  4. Dans le champ Programme , sélectionnez la Commande option et entrez le chemin complet vers l'exécutable du serveur WU-FTPD dans le champ à côté, comme /usr/sbin/in.ftpd . Dans les arguments champ, saisissez in.ftpd –l -a .
  5. Définir le mode d'attente à N'attendez pas , et entrez racine dans Exécuter en tant qu'utilisateur domaine. Tous les autres peuvent rester inchangés.
  6. Cliquez sur Enregistrer , puis de retour sur la page principale du module, appuyez sur Appliquer les modifications .

Une fois que WU-FTPD a été configuré pour s'exécuter à partir d'inetd ou de xinetd, vous pouvez le tester en utilisant le client FTP Unix en ligne de commande pour vous connecter à votre propre système. Exécutez simplement ftp localhost et assurez-vous que vous pouvez vous connecter en tant qu'utilisateur autre que root. Si ce n'est pas le cas, vérifiez vos fichiers journaux (à l'aide du module Journaux système, abordé au chapitre 13) pour tout message d'inetd ou xinetd pouvant expliquer ce qui s'est mal passé.

Limiter qui peut se connecter

Dans sa configuration normale, WU-FTPD permettra à tout utilisateur Unix de se connecter à l'exception des comptes système tels que root, bin et daemon. L'utilisateur root est presque toujours refusé par défaut car le protocole FTP ne crypte pas les mots de passe lorsqu'ils sont envoyés sur le réseau, ce qui signifie qu'une connexion à distance en tant que root pourrait exposer son mot de passe aux attaquants. Pour modifier les utilisateurs et les groupes qui peuvent se connecter à votre système, procédez comme suit :

  1. Sur la page principale du module, cliquez sur Utilisateurs et classes icône pour afficher le formulaire illustré à la Figure 41-2.
  2. Ajouter aux utilisateurs Unix à refuser champ tous les comptes que vous souhaitez empêcher d'utiliser votre serveur FTP ou supprimez ceux que vous souhaitez autoriser. Cela mettra à jour le fichier /etc/ftpaccess, qui est utilisé par d'autres serveurs FTP tels que ProFTPD au cas où vous décideriez un jour de changer.
  3. Pour refuser les utilisateurs dont les UID se situent dans certaines plages, remplissez les utilisateurs Unix et UID à refuser domaine. Vous pouvez entrer une plage UID telle que %3000-4000 , ce qui bloquerait tous les utilisateurs dont l'UID est compris entre 3 000 et 4 000. Vous pouvez également saisir des plages telles que %-100 ou %5000- qui refusera les utilisateurs avec des UID inférieurs à 100 ou supérieurs à 5000 respectivement. Plusieurs plages peuvent être saisies, séparées par des espaces. Les noms d'utilisateur normaux peuvent également être utilisés dans ce champ, bien que cela ait le même effet que de les placer dans les utilisateurs Unix à refuser domaine.
  4. Pour refuser les utilisateurs dont les ID de groupe principaux se situent dans certaines plages, remplissez les groupes Unix et GID à refuser domaine. Encore une fois, vous pouvez saisir des plages d'ID comme %100-200 ou %-10 , ainsi que des noms de groupe tels que utilisateurs . Seule l'appartenance au groupe principal compte - si un utilisateur est un membre secondaire de l'un des groupes répertoriés, il ne sera pas bloqué.
  5. Pour exclure certains utilisateurs ou groupes des listes de refus définies dans les deux étapes précédentes, renseignez les utilisateurs Unix et UID à ne pas refuser et Groupes Unix et GID à ne pas nier des champs. Le premier champ acceptera les plages d'UID ou les noms d'utilisateur, et le second les plages d'ID de groupe ou les noms de groupe. Ces champs sont utiles si vous souhaitez autoriser seulement quelques utilisateurs tout en bloquant tous les autres avec une plage d'UID qui couvre tous les comptes.
  6. Cliquez sur Enregistrer en bas de la page pour enregistrer et activer les nouvelles restrictions utilisateur.

Pas fait

Figure 41-2 “The users and classes page” 

WU-FTPD empêchera également normalement les utilisateurs dont le shell n'est pas répertorié dans le fichier /etc/shells de se connecter. Ceci est normalement fait pour permettre la création de comptes qui peuvent se connecter à un serveur POP3, mais ne peuvent pas se connecter via telnet, SSH ou FTP. Malheureusement, aucune option de configuration WU-FTPD ne peut être modifiée pour désactiver cette vérification du shell. Il est soit codé en dur dans le programme, soit appliqué par le service ftp PAM qui est réellement utilisé pour authentifier les utilisateurs.

Si WU-FTPD sur votre système utilise PAM (comme c'est le cas sur la plupart des distributions Linux), suivez ces étapes pour désactiver la vérification de /etc/shells :

  1. Accédez au module d'authentification PAM, qui se trouve dans la catégorie Système du menu principal de Webmin.
  2. Cliquez sur le ftp ou wu-ftpd service sur la page principale.
  3. Sur le formulaire d'édition qui s'affiche, cliquez sur pam_shells.so dans le module PAM dans la colonne Étapes d'authentification section.
  4. À partir du niveau d'échec menu sélectionnez Facultatif , de sorte que le succès ou l'échec de la vérification du fichier shell est ignoré à des fins d'authentification.
  5. Cliquez sur Enregistrer bouton. Les utilisateurs avec un shell invalide ne pourront pas se connecter à votre serveur FTP.

Sur d'autres systèmes d'exploitation, les étapes ci-dessus sont inutiles, car le module d'authentification PAM n'est disponible que sur Linux.

Configuration d'un FTP anonyme

La configuration de WU-FTPD pour accepter les connexions anonymes est légèrement plus complexe que prévu, en raison de son utilisation de la commande ls pour générer des listes de répertoires. Pour que cette commande (et d'autres utilisées par le serveur) ne puisse pas s'échapper du répertoire auquel les clients anonymes sont restreints, le serveur utilise l'appel système chroot Unix pour se restreindre ainsi que tous les programmes qu'il exécute à ce répertoire. Cela signifie que le répertoire racine doit contenir tous les programmes, fichiers et bibliothèques partagées dont WU-FTPD et la commande ls ont besoin pour s'exécuter.

Par défaut, le répertoire personnel de l'utilisateur spécial Unix ftp est utilisé comme racine FTP anonyme, mais différentes racines peuvent être attribuées à différentes classes de clients. Cependant, quel que soit le répertoire choisi, il doit contenir un sous-répertoire bin avec les commandes ls, gzip, tar, recompress, cpio et zcat. Il doit également avoir un sous-répertoire lib contenant toutes les bibliothèques partagées nécessaires à ces commandes, un sous-répertoire etc avec les fichiers passwd et group, et un répertoire pub dans lequel les fichiers téléchargeables sont stockés.

Comme vous pouvez l'imaginer, copier tous ces fichiers en place et s'assurer qu'ils fonctionnent est assez délicat. Heureusement, de nombreuses distributions Linux qui incluent un package wu-ftpd ont également un package nommé anonftp qui place tous les fichiers nécessaires dans le répertoire personnel de l'utilisateur ftp. Dans la plupart des cas, tout ce que vous avez à faire est d'installer ce package et WU-FTPD permettra aux clients de se connecter de manière anonyme.

Quelles que soient les autorisations sur le répertoire racine, WU-FTPD empêchera toujours les clients anonymes de télécharger, renommer ou supprimer des fichiers. Tout ce qu'ils pourront faire, c'est télécharger les fichiers que vous placez dans le sous-répertoire pub pour une distribution publique.

Les connexions anonymes peuvent être configurées davantage en suivant ces étapes :

  1. Cliquez sur le FTP anonyme icône sur la page principale du module.
  2. Les répertoires racine FTP anonymes table vous permet de spécifier différentes racines à utiliser pour différentes classes de client. Tous les répertoires existants (à l'exception de ~ftp par défaut) sont répertoriés dans le tableau pour modification, et il y aura toujours une ligne vide pour en ajouter un nouveau. Dès qu'une entrée est ajoutée, elle remplacera la valeur par défaut, alors assurez-vous de l'ajouter explicitement si vous voulez qu'elle continue à fonctionner. Si vous souhaitez ajouter plus d'un répertoire, vous devrez enregistrer et rouvrir cette page afin qu'une nouvelle ligne vide apparaisse. Chaque ligne comporte deux champs, à savoir :Répertoire Dans ce champ, vous devez entrer le chemin complet vers un répertoire FTP anonyme valide (un qui contient les sous-répertoires etc, bin, lib et pub et tous les programmes nécessaires). Pour la classe Dans ce menu, vous devez choisir une classe de clients pour laquelle le répertoire doit être utilisé, en supposant que les clients de cette classe se connectent de manière anonyme. Si Tout est sélectionné, il sera utilisé pour les clients qui ne figurent dans aucune autre classe de ce tableau. Voir la section « Gestion des classes d'utilisateurs » pour plus de détails sur la façon de définir vos propres classes.
  3. Lorsqu'un utilisateur se connecte à votre serveur FTP de manière anonyme, il doit toujours fournir un mot de passe même s'il n'est pas utilisé pour l'authentification. Généralement, ce mot de passe est l'adresse e-mail de l'utilisateur, qui peut être utilisée pour avoir une idée approximative de la provenance des clients du domaine. Cependant, pour des raisons de confidentialité, de nombreux clients et navigateurs FTP modernes n'envoient plus une véritable adresse e-mail, mais se connectent avec une fausse comme [email protected]. Vous pouvez configurer WU-FTPD pour vérifier le format des mots de passe de connexion anonymes afin de vous assurer qu'ils ressemblent à des adresses e-mail à l'aide de la Vérification du mot de passe FTP anonyme champ sur cette page. Si par défaut est sélectionné, aucune vérification ne sera effectuée. Cependant, si la deuxième option est choisie, le niveau de vérification dépend du choix que vous faites dans son menu :Tout autoriser N'importe quel mot de passe est autorisé, même un mot de passe vide (c'est le même que le mode par défaut). Doit contenir @ Le mot de passe doit contenir le symbole @. Doit être une adresse e-mail RFC882 Le mot de passe doit ressembler à une adresse e-mail valide, avec des lettres et des chiffres avant et après un @. Le deuxième menu détermine si le serveur FTP avertit simplement les clients qui violent le contrôle (si Avertir uniquement est choisi), ou les bloque complètement (si Refuser la connexion est sélectionné).
  4. Pour bloquer complètement certains mots de passe anonymes (même s'ils sont valides), remplissez le champ Mot de passe FTP anonyme à refuser champ avec une liste d'adresses e-mail complètes ou partielles. Cela peut être utile pour bloquer les clients FTP qui sont configurés par défaut pour utiliser une fausse adresse. Cependant, je déconseille d'utiliser cette fonctionnalité car elle bloquera de nombreuses personnes, en particulier celles qui utilisent des navigateurs Web.
  5. Cliquez sur Enregistrer en bas de la page pour activer les nouveaux paramètres FTP anonymes.

Gestion des classes d'utilisateurs

Le serveur FTP classe les clients en classes en fonction de leurs adresses source et de leurs types de connexion. La classification peut être utilisée à plusieurs endroits différents dans la configuration WU-FTPD pour définir des paramètres qui s'appliquent uniquement à certains clients. Il peut également être utilisé pour bloquer les connexions non anonymes (ou même toutes les connexions) depuis l'extérieur de votre réseau. Cela peut être utile si vous souhaitez uniquement autoriser certains hôtes de confiance à télécharger des données sur votre serveur, mais permettre à quiconque sur Internet de se connecter anonymement pour télécharger.

Chaque classe a un nom, une liste de types de connexion et une liste d'adresses client, de noms d'hôte ou de réseaux. Seuls les clients qui correspondent à la fois aux types de connexion et aux adresses sont considérés comme faisant partie de la classe, et si plusieurs classes correspondent, la première est utilisée. Les clients qui n'appartiennent à aucune classe ne sont pas autorisés à utiliser le serveur FTP.

Les trois types de connexion suivants sont reconnus par WU-FTPD :

Unix
Utilisateurs Unix normaux qui peuvent se connecter via telnet ou SSH et accéder à tous les fichiers du système avec leurs autorisations habituelles.
Invité
Les utilisateurs Unix qui ont été désignés comme invités, et cela est limité à un répertoire (généralement leur domicile) de la même manière que les utilisateurs anonymes. Consultez la section "Configuration des utilisateurs invités" pour plus de détails.
Anonyme
Les utilisateurs qui se connectent de manière anonyme et sont donc limités à un certain répertoire.

Pour définir et modifier des classes à l'aide du module, suivez ces instructions :

  1. Cliquez sur Utilisateurs et classes icône dans le coin supérieur gauche de la page principale du module. Le formulaire illustré à la Figure 41-2 apparaîtra dans votre navigateur.
  2. En haut de la page se trouve le tableau intitulé Classes d'utilisateurs . Chaque ligne définit une classe, et il y en aura toujours au moins une déjà répertoriée (généralement la classe all qui correspond à tous les clients). Le tableau a toujours une seule ligne vide en bas pour que vous puissiez ajouter une nouvelle classe - si vous voulez en ajouter plusieurs, vous devrez les créer une à la fois. Vous pouvez modifier les classes existantes en modifiant leurs champs ou supprimer une classe en effaçant son champ de nom. Assurez-vous de ne pas tous les supprimer, car cela empêchera tous les utilisateurs de se connecter. Les champs pour chaque classe sont :Nom de la classe Un nom court pour cette classe qui ne doit être composé que de lettres et de chiffres, comme homenet ou de confiance . Plusieurs lignes peuvent avoir le même nom de classe, et un client qui correspond au type d'utilisateur et aux adresses de n'importe quelle ligne sera considéré comme un membre de la classe. *Types d'utilisateurs *Les types de connexion auxquels cette classe correspond, comme expliqué ci-dessus. Vous devez cocher au moins une des trois cases. Adresses correspondantes Ce champ vous permet d'entrer les adresses client auxquelles la classe correspond. Vous pouvez entrer des IP uniques (comme 192.168.1.1 ), les noms d'hôte (comme www.foo.com ), les adresses IP génériques et les noms d'hôte (comme 10.254.1.* ou *.example.com ) ou même des chemins vers des fichiers contenant davantage d'adresses et de noms d'hôte. Les entrées multiples doivent être séparées par des espaces. Entrées inversées telles que !*.foo.com sont même autorisés, ce qui correspondrait à tous les clients dont les noms d'hôte sont en dehors de foo.com domaine. Soyez prudent lorsque vous utilisez des noms d'hôte, car WU-FTPD doit rechercher les noms d'hôte des clients à partir de leurs adresses IP, dont le résultat peut être falsifié par un attaquant.
  3. Lorsque vous avez fini de définir les classes, cliquez sur Enregistrer bouton en bas du formulaire. Vous pouvez maintenant les utiliser dans d'autres pages du module.

Refuser l'accès aux fichiers

Parfois, il est utile de restreindre les types de fichiers que les utilisateurs peuvent télécharger, en particulier pour les clients anonymes non fiables. Vous pouvez bloquer l'accès à un nom de fichier dans n'importe quel répertoire (comme secret.txt ), un chemin absolu (comme /etc/passwd ) ou même un répertoire et tout son contenu (comme /var/log ). Les caractères génériques du shell * et  ? peut également être utilisé dans les noms de fichiers et de chemins, ce qui offre une flexibilité supplémentaire. Cela peut être utile si vous souhaitez protéger des fichiers contenant des informations secrètes ou limiter les clients au téléchargement à partir d'un certain répertoire (comme /home ). Cependant, il n'existe aucun moyen d'empêcher la liste des répertoires à l'aide de cette fonctionnalité.

Pour configurer des restrictions de téléchargement de nom de fichier, les étapes à suivre sont :

  1. Sur la page principale, cliquez sur Limites et contrôle d'accès pour afficher le formulaire illustré à la Figure 41-4.
  2. Chaque ligne du Refuser l'accès aux fichiers table définit une seule restriction de nom de fichier. Comme pour les autres tableaux de ce module, au bas du tableau se trouve une seule ligne vide pour ajouter un nouveau nom de fichier ou chemin - et si c'est la première fois que vous utilisez cette fonctionnalité, une seule ligne est tout ce que le tableau contiendra. Sinon, les restrictions existantes seront répertoriées, vous permettant de les modifier ou de les supprimer. Les champs de chaque ligne et leur signification sont :Fichiers à refuser Une liste de noms de fichiers ou de modèles relatifs ou absolus auxquels refuser l'accès, séparés par des espaces. Les caractères génériques * et  ? peut être utilisé pour les deux, vous permettant d'entrer des fichiers comme secret.* ou /home/*/public_html . Par rapport au chroot ? Si Oui est sélectionné, tout chemin absolu saisi dans le premier champ est considéré comme relatif au répertoire racine FTP anonyme. Si Non est choisi, les chemins sont considérés comme relatifs au répertoire racine réel. Refuser pour les cours Dans ce champ, vous devez cocher les cases des classes auxquelles s'applique la restriction. Consultez la section « Gestion des classes d'utilisateurs » pour plus d'informations sur la façon d'ajouter vos propres classes. Cela peut être utile si vous souhaitez bloquer l'accès des clients anonymes à certains fichiers, mais autoriser les vrais utilisateurs Unix.
  3. L'option Autoriser l'accès aux fichiers même en cas de refus La table a exactement la même structure que la table de refus, mais sert à entrer les noms de fichiers et les chemins auxquels l'accès doit être autorisé même s'ils sont refusés par une entrée dans la table ci-dessus. Cela peut être utilisé pour refuser l'accès à tout (en entrant _*_ dans un Fichiers à refuser rangée), puis en accordant les droits de téléchargement uniquement sur les fichiers correspondant à un modèle (comme *.html par exemple).
  4. Cliquez sur Enregistrer bouton en bas de la page pour enregistrer et activer toute nouvelle restriction de fichier. Si vous souhaitez ajouter plus d'une entrée dans l'un ou l'autre des tableaux, cliquez à nouveau sur l'icône *Limites et contrôle d'accès* pour réafficher le formulaire et remplir les nouvelles lignes vides qui apparaissent.

Pas fait

Figure 41-4 “The limits and access control form” 

Il existe également une fonctionnalité similaire pour restreindre les noms de fichiers que les clients peuvent télécharger. Cela peut être utile pour bloquer la création de fichiers ou de répertoires cachés dont les noms commencent par un point, ou des noms difficiles à comprendre contenant des espaces et des caractères de contrôle. Ceux-ci sont souvent utilisés par des personnes sournoises pour cacher des fichiers sur votre serveur FTP anonyme si vous autorisez le téléchargement. Étant donné que les personnes de confiance peuvent avoir de bonnes raisons de créer de tels fichiers, vous pouvez définir des restrictions qui s'appliquent uniquement aux utilisateurs anonymes ou invités.

Pour ajouter et modifier les limites de téléchargement de noms de fichiers, procédez comme suit :

  1. Sur la page principale du module, cliquez sur Autorisations icône.
  2. Dans le formulaire qui s'affiche, les Noms de fichiers de téléchargement non autorisés Le tableau en bas répertorie les noms de fichiers autorisés et refusés pour différents types d'utilisateurs. Les restrictions existantes peuvent être modifiées en changeant simplement leurs champs dans le tableau, et une nouvelle créée en remplissant la dernière ligne vide (qui sera tout ce que le tableau contient si vous n'avez pas utilisé ce formulaire auparavant). Les colonnes du tableau et la signification de leurs champs sont :Caractères autorisés Une seule expression régulière Perl à laquelle tous les fichiers téléchargés doivent correspondre. Par exemple, si vous avez saisi ^[a-z]+$ , seuls les noms de fichiers composés de lettres minuscules seraient autorisés. Fichier regexps à refuser Une liste séparée par des espaces d'expressions régulières qui ne sont pas autorisées dans les noms de fichiers. Un bon exemple est ^\. , qui bloque tout nom commençant par un point, ce qui masque le fichier. Types d'utilisateurs Les types d'utilisateurs auxquels cette restriction s'applique. Souvent, vous souhaiterez imposer des limites plus strictes aux clients anonymes qu'aux utilisateurs réels ou invités. Fichier des messages d'erreur Le chemin d'accès complet à un fichier qui sera envoyé à tout client qui tente de télécharger un fichier dont le nom ne correspond pas à l'expression autorisée ou correspond à l'une des expressions refusées.
  3. Comme d'habitude, cliquez sur Enregistrer bouton en bas de la page pour activer toute nouvelle restriction lorsque vous avez terminé.

Si plusieurs restrictions sont définies pour le même type d'utilisateur, elles seront toutes vérifiées pour déterminer si un nom de fichier téléchargé est autorisé.

Configuration des utilisateurs invités

Un utilisateur FTP invité est un véritable utilisateur Unix qui est limité par WU-FTPD à un certain répertoire, tout comme les clients anonymes sont restreints. Cependant, ils ont toujours tous les privilèges dans ce répertoire, y compris les droits de télécharger des fichiers, de renommer et de chmoder des fichiers. Limiter un utilisateur à un accès invité peut être utile si vous voulez l'empêcher de voir des parties de votre système de fichiers en dehors de son répertoire personnel ou d'un répertoire parent comme /home.

Chaque utilisateur désigné comme invité par la configuration du serveur FTP peut avoir un répertoire racine différent, ou certains peuvent être identiques. Cependant, les répertoires racine choisis doivent être configurés de la même manière que la racine FTP anonyme - avec des sous-répertoires bin, lib et etc contenant tous les programmes et fichiers nécessaires à WU-FTPD. Cependant, vous pouvez simplement copier ces répertoires à partir de la racine anonyme, de sorte que le processus d'installation n'est pas si difficile.

Pour configurer un utilisateur en tant qu'invité, son répertoire personnel doit être spécialement modifié. Les étapes ci-dessous expliquent comment procéder avec Webmin :

  1. Accédez au module Utilisateurs et groupes (traité au chapitre 4) et cliquez sur le nom de l'utilisateur que vous souhaitez restreindre.
  2. Changer son répertoire personnel en guestroot_/./_homedir , dans lequel guestroot est le répertoire racine que vous avez préparé, et homedir un sous-répertoire sous celui-ci. Si vous utilisez /home comme racine, /home/./jcameron pourrait être le répertoire de l'utilisateur jcameron. Cette entrée spéciale /./ dans le chemin indique à WU-FTPD où se trouve la racine, mais ne doit pas confondre les autres programmes.
  3. Cliquez sur Enregistrer bouton en bas de la page. Webmin déplacera son répertoire personnel vers le nouvel emplacement si nécessaire.

Bien sûr, vous pouvez également spécifier une telle maison lors de la création d'un nouvel utilisateur. Ce n'est cependant que la première étape - pour configurer WU-FTPD afin de traiter certains utilisateurs comme des invités, vous devrez suivre ces étapes :

  1. Dans le module WU-FTPD Server, cliquez sur Utilisateurs et classes icône pour afficher le formulaire illustré à la Figure 41-2.
  2. Dans les utilisateurs Unix et UID à traiter comme invités , saisissez une liste de noms d'utilisateur, d'UID ou de plages d'UID séparés par des espaces (comme %1000-2000 _ou %5000-_) d'utilisateurs à désigner comme invités. Vous pouvez également entrer une liste de noms de groupes, d'ID et de plages d'ID dans le champ *Groupes Unix et GID à traiter comme invités* pour que tous leurs membres principaux soient également traités comme des invités.
  3. Pour empêcher certains utilisateurs d'être convertis en invités même s'ils figurent dans les listes ou les plages définies à l'étape 2, remplissez les utilisateurs Unix et UID à ne pas traiter en tant qu'invités et Les groupes Unix et les GID ne doivent pas être traités comme des invités des champs. Cela peut être utile si vous souhaitez que tout le monde soit un invité, à l'exception de quelques utilisateurs de confiance.
  4. Cliquez sur Enregistrer bouton en bas de la page pour activer les nouvelles désignations d'invités.

Si un utilisateur a été configuré en tant qu'invité mais n'a pas /./ dans son répertoire personnel, il ne sera limité à aucun répertoire racine.

Modification des alias de répertoire

Pour simplifier la vie des utilisateurs qui ont fréquemment besoin d'accéder à des répertoires avec de longs chemins, WU-FTPD vous permet de définir des alias de répertoire qui peuvent être utilisés lors du changement de répertoire. Cela signifie qu'une personne utilisant un client FTP en ligne de commande peut saisir cd stuff:au lieu de cd /usr/local/etc/stuff, en supposant qu'un alias approprié a été créé.

Pour configurer des alias, procédez comme suit :

  1. Sur la page principale du module, cliquez sur Aliases and Paths icône.
  2. Les alias de répertoire de CD Le champ est en fait une table qui répertorie les alias existants (le cas échéant) et a toujours une ligne vide pour en ajouter un nouveau. Dans le premier champ vide sous le Nom d'alias colonne, saisissez le nom d'un nouvel alias tel que truc : ou indésirable : . Il n'est pas nécessaire qu'un alias se termine par deux-points - cependant, c'est une bonne idée car cela réduit le risque qu'un nom d'alias soit le même qu'un répertoire relatif réel. Dans le champ correspondant sous Alias ​​vers le répertoire , entrez un chemin de répertoire complet comme /usr/local/junk auquel l'alias est égal. Si vous souhaitez ajouter plusieurs alias, vous devrez enregistrer et rouvrir cette page afin qu'une nouvelle ligne vide apparaisse. Pour en supprimer un, effacez simplement ses deux champs dans le tableau.
  3. Le chemin de recherche du répertoire du CD La zone de texte vous permet d'entrer une liste de répertoires qui seront recherchés si un client essaie de passer à un sous-répertoire relatif qui ne se trouve pas dans le répertoire courant. Par exemple, si /usr/local était inclus et qu'un client tentait de basculer vers le répertoire bin, il serait placé dans /usr/local/bin (en supposant qu'aucun sous-répertoire bin réel n'existe).
  4. Cliquez sur Enregistrer bouton en bas de la page pour activer les nouveaux alias.

Les alias ne sont pas particulièrement utiles dans les clients FTP graphiques qui présentent à l'utilisateur une liste de répertoires sur laquelle cliquer. Parce que les utilisateurs ne changent pas et souvent ne peuvent pas passer à un pseudo-répertoire explicite comme stuff:et que les alias ne sont pas inclus dans les listes, ils sont difficiles à utiliser. Les clients FTP de type commande comme ncftp et le programme ftp Unix classique sont cependant plus adaptés à leur utilisation.

Fichiers de messages et de fichiers Lisez-moi

WU-FTPD peut être configuré pour envoyer le contenu de divers fichiers de messages aux clients lorsqu'ils se connectent ou accèdent à certains répertoires. Cela peut être utile pour afficher des informations sur votre serveur FTP (comme qui l'exécute et quels fichiers sont hébergés) ou des détails sur le contenu d'un répertoire particulier pour les utilisateurs FTP. Chaque fichier n'est envoyé qu'une seule fois à un client dans une seule session, pour éviter d'ennuyer l'utilisateur avec des messages répétés.

Le serveur peut également être paramétré pour avertir les clients de l'existence de certains fichiers et les informer de leur date de dernière modification. Ceci est généralement utilisé pour les fichiers README contenant des informations légèrement moins importantes sur un répertoire ou le serveur, que les utilisateurs peuvent souhaiter lire. Encore une fois, les clients ne sont avisés qu'une seule fois par session pour chacun de ces fichiers.

Pour définir les fichiers de message et de bannière, procédez comme suit :

  1. Cliquez sur Messages et bannières sur la page principale du module, qui vous mènera au formulaire illustré à la Figure 41-3.
  2. Les fichiers de messages La section est une table pour spécifier les fichiers dont le contenu sera envoyé aux clients. Comme d'habitude avec les tables dans Webmin, il répertorie les fichiers existants et leurs contextes, et a une ligne vide en bas pour en ajouter une nouvelle. Les significations des champs sont :Chemin The path to the file whose contents should be sent to the client. This can be either an absolute path like /etc/login.message or a relative filename like message.txt . In the latter case, it is looked for in each directory that the client enters. If you enter a full path and want anonymous clients to be able to see it, it must be under the anonymous FTP root directory. When to display If At login is selected, the file will be sent to clients after logging in. If Entering any dir is chosen, the file will be searched for and sent when changing to any directory. When Entering dir is chosen, the file will only be sent when the directory whose path you specify in the adjacent text box is entered. Again, this must be relative to the root directory for anonymous clients. Classes to display for If this field is left blank, the message is sent to all clients. However, if one or more classes of client is entered (separated by spaces) it will only be used for clients that fall into those classes. This can be useful for defining message files just for anonymous users, especially when using absolute paths.
  3. To define files that clients will be notified of the existence of, you will need to fill in the README files table. Again, this lists all existing files and has a blank row for adding a single new one. The meanings of the fields in this table's columns are:Path' The path to the file whose existence and modification time should be sent to the client. This can be either an absolute path like /etc/README or a filename relative to the directory being entered like README.txt . You can even use shell wildcard characters like * and ? in the filename to match multiple files, for example README* . When to display last modified date If At login is selected, the information will be sent to clients after logging in. If Entering any dir is chosen, the file will be searched for and its modification date sent when changing to any directory. When Entering dir is chosen, the modification date will only be sent when the directory whose path you specify in the adjacent text box is entered. Classes to display for If this field is left blank, the modification is sent to all clients. However, if one or more classes of client is entered (separated by spaces) it will only be used for clients that fall into those classes.
  4. To change the amount of information that WU-FTPD sends to clients when they connect, adjust the Greeting level domaine. If Hostname and version is selected, both the system's hostname and the FTP server version will be sent. If just Hostname is chosen only the hostname will be displayed, while if Neither is selected no information will be sent. The latter two options are the most secure, as an attacker may be able to use your FTP server's version to find a bug in it that could be exploited to take over your system.
  5. If you want to have the server sent a message to clients as soon as they connect, put it in a file and select the From file option for the Pre-login banner file domaine. Then enter the full path to the message file into the text box next to it.
  6. To change the hostname that WU-FTPD sends in the greeting and other messages, select the second option in the Hostname for messages field and enter some alternative name in the text box. This can be useful if your system's real hostname does not match the name the FTP clients use (server5.example.com instead of ftp.example.com for example).
  7. When you are done with this form, click the Save button to activate your changes. They will apply to all new FTP clients that connect from now on.

On many operating systems, the WU-FTPD configuration will include one or two message and README file definitions by default. Typically the .message file is searched for in every directory and sent to clients, as is the modification time of any file whose name matches the README* pattern.

Any message files that you define that can contain special codes starting with % that are replaced when the file is sent by dynamically generated text. For example, %U is replaced with the client's FTP login name, so a file containing the line _Welcome %U to the example.com FTP server_ would be sent to the client as something like Welcome jcameron to the example.com FTP server . According to the WU-FTPD manual page, the available codes are:

Not done

Configuring logging

In a typical default configuration, WU-FTPD will log all uploads and downloads to the file /var/log/xferlog. However, you can choose the types of users that logging will be done for (Unix, anonymous or guest), have the log written to syslog instead, and select to record commands are security violations for some types of users. Logging to the system log gives you more flexibility, as you can choose which file messages are written to – although they will be mixed in with other daemon facility messages. See chapter 13 and the System Logs module for more information on how syslog works and which files it ultimately writes to.

Enabling logging of all commands allows you to track exactly what clients are doing, but can consume a large amount of disk space. The logging of security violations (attempts to violate WU-FTPD's file restrictions, covered in the “Denying access to files” section) can be useful for detecting hackers, and is unlikely to use up much space as such violations are not usually very frequent.

To edit FTP logging-related options in Webmin, the steps to follow are:

  1. On the module's main page, click on the Logging icon to bring up the small logging options form.
  2. To have all FTP commands executed by clients (including trivial ones such as CWD and LIST) recorded in the system log, select types of users for which they should be logged from the Log all commands for domaine.
  3. To change the types of users that transfer logging is done for, select them from the Log transfers for domaine. The *In directions* sub-field lets you choose whether uploads (Inbound ), downloads (Outbound ) or Both are recorded. On an anonymous FTP server, it may make sense to only record uploads due to the large number of downloads.
  4. To have transfers written to syslog, select System log in the Log transfers to domaine. Or to tell WU-FTPD to write to the /var/log/xferlog file instead, select XFER log file . If Both is chosen, transfers will be logged to both destinations. If you want to use a program like Webalizer (covered in chapter 39) to analyze your FTP server's logs, they must be written to xferlog as the lines that end up being written out by syslog have additional information added and thus cannot be parsed. Anything written to the system log will use the daemon facility, unless WU-FTPD has been compiled to use a different one, such as local7. This can in fact be quite useful, as it allows you to separate out the FTP messages and have them written to a different file, while still enjoying all the benefits of syslog.
  5. To enable the logging of attempted filename security violations, select the types of users that this should be enabled for from the Log security violations for domaine. These will always been written to syslog.
  6. Cliquez sur Enregistrer button at the bottom of the page to save and activate the new logging settings.

Limiting concurrent logins

If your system is configured to allow anonymous FTP logins and you expect to receive a lot of traffic, it makes sense to limit the number of connections that can be open to the FTP server at any one time. This puts a ceiling on the network and CPU load that FTP transfers can generate, which is important if the system is being used for some other purpose (such as running a web server).

WU-FTPD allows you to define limits on a per-class basis, so that anonymous clients can be restricted while real Unix users are not. It also lets you specify the times during which restrictions apply, so that a higher limit can be granted when the server is not as heavily used for other purposes (such as at night).

To set up concurrent login limits, follow these instructions:

  1. On the module's main page, click on the Limits and Access Control icône. The form shown in Figure 41-4 will appear in your browser.
  2. The Concurrent user limits table is where limits on the number of connections can be entered. Each row defines a limit that applies to a certain class at certain times. As usual with tables in this module, there will be one empty row at the bottom for adding a new limit (and if this is the first one, the table will only contain that one row). Existing limits can be edited by changing their fields in the table, or deleted by selecting the empty option from the class menu. The fields in each row should be filled in as follows:Apply to class' You must select the name of the class that this limit will apply to from the menu. Multiple limits can be defined for the same class at different times. Maximum users To set a limit for the chosen class, select the second radio button and enter the maximum number of concurrent connections into the adjacent text box. If the Unlimited button is selected, no limit will apply to the class at the specified times. For example, you could add a row that turns off restrictions at night above another row that sets them for the entire day. At times If Any time is selected, the limit will apply all the time. However, if you choose the second option and enter a UUCP-style time specification into the text box, only connections made during that period will be restricted. For example, Any0900-1700 means 9am to 5pm every day, Mo,Tu,We means Mondays, Tuesdays and Wednesdays, Wk means weekdays and and Wk1700-0900,Sa,Su means times outside office hours. WU-FTPD always checks the table in order for an entry that matches a connecting client's class and the current time, and stops when it finds one. This means that entries that specify times (such as Any0900-1700 ) should be placed above those that have Any time selected so that the specific entry is actually used when appropriate. Error message file The full path to a file containing a message that will be sent to clients whose connections exceed the limit. This should explain why they are being rejected, and suggest other times or FTP servers to try.
  3. Hit the Save button at the bottom of the page to activate the connection limits. To add more than one, you will need to re-visit the form so that a new blank row appears in the table.

Restricting clients by IP address

Even though it is possible to block clients from certain addresses by ensuring that they do not fall into any class, there is a feature in the module dedicated specifically to blocking clients based on their IP addresses or hostnames. This can be used to lock out specific hosts that are abusing your FTP server, or to restrict access to clients from only your own company or home network.

The steps to define banned client systems are:

  1. Click on the Limits and Access Control icon on the module's main page to open the form shown in Figure 41-4.
  2. Each row in the Deny access from table specifies an IP address, hostname or pattern to block logins from. As with other tables in this module, it will always an additional empty row for adding a new restricted address. In the Deny from address field you can also enter the full path to a file containing banned addresses, use negated patterns like !192.168.1.* or even the special address !nameserved which matches all clients that do not have a valid reverse DNS address. Only one can be entered though – to block additional addresses, you will need to add more rows. In the Error message file field you must enter the full path to a file containing a message that will be sent to blocked clients. This should explain to connecting users that they have been blocked, and perhaps give a reason why. If you want to add more than one row, you will need to save this form and re-open it so that a new empty row appears at the bottom of the table. Existing restrictions can be edited by just changing their fields, or deleted by clearing out the address.
  3. Lorsque vous avez terminé, cliquez sur Enregistrer button at the bottom of the form to activate the new address restrictions.

Restricting access to FTP commands

WU-FTPD can be configured to restrict the FTP commands that certain types and classes of users can use. This is useful for stopping anonymous clients modifying files, as on most FTP servers they are only allowed to download, not upload, rename or delete. In fact, in its usual default configuration this is exactly how WU-FTPD is configured.

There are five commands that you can restrict access to, all related to server-side data modification. They are:

chmod
Change the Unix permissions of a file on the server (chmod in the Unix FTP client).
delete
Delete a file or directory on the server (del or rmdir in the Unix FTP client).
rename
Change the name of a file or directory (rename in the FTP client).
overwrite
Upload a file with the same name as one that already exists.
umask
Change the default Unix permissions for newly created files (umask in the Unix FTP client).

It is not possible to stop clients using directory listing or download commands. Neither is it possible using this feature to prevent the upload of files that do not already exist – however, this can be achieved by setting directory permissions appropriately, or blocking all uploaded filenames as explained in the “Denying access to files” section.

To define which clients can use which commands, follow these steps:

  1. Click on the Permissions icon on the module's main page.
  2. On the form that appears, the Command restrictions table lists existing commands and the user types and client classes that are or are not allowed to use them. As usual, you can add a new command using the blank row at the bottom, edit existing entries or delete the restrictions on a command altogether by selecting the blank option from the Command menu. The FTP server processes this table in order when a client tries to do something, and uses the selection in the Allow? column for the first entry that matches to decide if it is allowed or not. This means that the order matters, and thus if two entries match the first one will decide what happens. The fields for each row and their meanings are:Command You must select types. The restriction will only apply to the types of user selected in this column. See the “Managing user classes” section earlier in the chapter for details on what each means. For classes Only the client classes selected in this column will be effected by the restriction.
  3. When you are done editing or adding to the table, hit the Save button to activate your changes.

If a client command does not match any entry in the table, it will be allowed by the FTP server (unless blocked by some other filename restriction set elsewhere).

Configuring the WU-FTPD Server module

To change the paths that the module uses for the WU-FTPD configuration files and programs, you will need to click on the standard Module Config link in the top-left corner of the main page. Unlike other modules there are no options related to the user interface, so you will probably not need to adjust anything on the configuration form if the module is working for you. By default, all the configuration fields are set to match the WU-FTPFD package included with your operating system or Linux distribution.

Even though there are fields for configuration files other than ftpaccess, at the time of writing the module does not actually edit those files yet.


Webmin
  1. Serveur de messagerie instantanée Jabber

  2. Serveur ProFTPD

  3. Installer un serveur FTP sur Debian 10 - Un guide étape par étape ?

  4. Comment installer le serveur FTP sur CentOS 7

  5. Comment installer le serveur FTP sur Ubuntu 20.04

Comment installer un serveur FTP sur Manjaro 20

Comment installer le serveur FTP sur CentOS 8

Comment installer un serveur FTP ?

Comment installer le serveur FTP sur Ubuntu ?

Comment installer FTP sur Ubuntu 18.04 ?

Installer FTP sur Windows Server 2012 (R2)