Léa-Linux & amis :   LinuxFR   GCU-Squad   Zarb.Org   GNU
Reseau-partfic-pureftpd


PureFTPd

PureFTPd
Installer un serveur FTP basé sur PureFTPd

Introduction

Avec l'avènement du P2P (peer to peer) et de BitTorrent, les serveurs FTP semblent un peu moins à la mode. Néanmoins, ils rendent encore, et pour longtemps, de fiers services. Les principales distributions sont par exemples disponibles en téléchargement depuis des serveurs FTP.

Cet article explique comment installer un serveur FTP (File Transfer Protocol) sur un serveur Mandrake Linux 10 sur lequel sont installés uniquement les paquetages de base, sans interface graphiqe. Il sera nécessaire d'installer gcc, pour compiler les sources.

Pour tester si votre serveur FTP fonctionne correctement, il faudra un poste client relié à votre serveur FTP, équipé d'un logiciel client FTP comme FileZilla par exemple.

PureFTPd est basé sur le package original Troll-FTPd, et est distribué sous license BSD. Un module [htttp://www.webmin.com webmin] existe et permet d'en assurer le controle à distance. PureFTPd est compatible IPv6, et supporte MySQL, PostgreSQL PAM et LDAP pour le stockage des paramètres utilisateurs, et SSL/TLS (échange de login, mot de passe et des commandes FTP cryptées, mais echange de données non cryptées, entre clients et serveur) ou SSH (encryption totale). Il est disponible pour de nombreuses distributions : OpenBSD, NetBSD, FreeBSD, Solaris, MacOSX, QNX, AIX, HPUX...

Nota : La sécurité de votre serveur surtout s'il est connecté à Internet n'est pas l'objet de cet article, elle n'est donc pas forcément assurée...

Installation

Rappel : si votre distribution contient un paquetage pour pureftpd, préférez utiliser ce paquetage plutôt que les sources. Certains puristes prétendrons qu'utiliser les sources c'est l'esprit Linux, mais ce sont surtout des problèmes de dépendances non gérées, des choix par forcément simple à faire sur l'utilisation de telle ou telle fonctionnalité du logiciel que l'on désire compiler.

Pour vérifier que votre distribution contient un paquetage pour pureftpd, il faut utiliser l'outil de gestion de paquetage de celle-ci. Par exemple :

  • pour Ubuntu / Debian : apt-cache search pureftpd
  • pour Mageia / Mandriva : urpmq pureftpd
  • pour Gentoo : emerge -s pureftpd
  • pour Slackware : swaret --search pureftpd

Votre distribution contient aussi presque surement un outil graphique pour obtenir cette information.

Pour plus d'information sur ces questions, consulter cette documentation.

A partir des sources

Télécharger les sources de ce logiciel sur le site de PureFTPd (version 1.0.18 au moment de la publication de cet article).
Décompresser le paquetage :
tar zxvf pure-ftpd-1.0.18.tar.gz

Se placer dans le répertoire nouvellement créé :
cd pure-ftpd-1.0.18
Il faut maintenant compiler et installer le programme. De nombreuses options de configuration sont disponibles, permettant d'adapter finement le programme à vos souhaits. Pour les découvrir toutes :
./configure --help

(./configure se lit : point slash configure)

Quelques-unes de ces options de compilation sont décrites ci-dessous :

--with-language=french : installation de la langue française
--with-cookie : permet, en installant le paquetage fortune-mod, d'obtenir un petit message lors de la connexion d'un client au serveur FTP
--with-ftpwho : autorise la commande 'pure-ftpwho'
--with-paranoidmsg : les messages d'erreurs sont minimaux, quelque soit l'erreur
--with-puredb : autorise le support des utilisateurs virtuels
--with-privsep : autorisation des privilèges de séparation (améliore la sécurité)
--with-quotas : autorisation des quotas (limitation de l'espace disque alloué à chaque compte)
--with-throttling : autorisation de l'ajustement de la bande passante
--with-tls : pour compiler PureFTPd avec le support SSL/TLS
--without-banner : pour ne pas diffuser la bannière initiale
...

Nous allons configurer notre serveur de la manière suivante :
./configure --with-ftpwho --with-puredb --with-language=french --with-privsep --with-cookie
Attention, pour une meilleure sécurité, si votre serveur est connecté à Internet, les options --with-paranoidmsg, with--tls et --without-banner sont conseillées !
puis
make

make install

Voilà, le serveur FTP est installé !

A partir des RPMS

L'opération est simple avec urpmi. Attention vous ne pourrez pas installer pure-ftpd si vous disposez déjà d'un serveur ftp, celui-ci sera alors désinstallé.

# urpmi pure-ftpd
Préparation... ##################################################
1:pure-ftpd ##################################################

Vous disposez également d'un package complémentaire qui permet d'ajouter les éléments de l'arborescence nécessaires pour réaliser un ftp anonyme.

# urpmi pure-ftpd-anonymous
réparation... ##################################################
1:pure-ftpd-anonymous ##################################################

Configuration

PureFTPd dispose aussi d'options encore plus nombreuses au moment de son démarrage ! Leur liste est disponible de la manière suivante :
pure-ftpd --help

Voici une description de quelques options de démarrage (Attention, Pure-FTPd est sensible à la casse !)

-A : "chroot" tout les utilisateurs sauf root.
-b : ignore certains standards pour permettre à certains clients (Internet Explorer !!!) de fonctionner malgré leurs bogues...
-B : Ordonne au serveur de démarrer en arrière plan
-c 5 : limitation du nombre de client simultané sur votre serveur à 5 (défaut = 50)
-C 2 : limite le nombre de connexion simultanées de chaque utilisateur (provenant de la même adresse IP) à 2
-E : autorise seulement la connection d'utilisateurs enregistrés (pas d'anonymes)
-e : autorise seulement la connection d'utilisateurs anonymes
-j : création automatique d'un répertoire utilisateur si celui qui se connecte n'en a pas déjà un.
-l puredb:/etc/pureftpd.pdb : specifie le chemin vers la base de données des utilisatuers virtuels.
-R : interdit l'utilisation de la commande chmod par les clients
-u 1 : n'accepte pas les uids inférieur à 1 (root en l'occurence)
-X : interdit aux utilisateurs l'accès aux fichiers ou répertoires cachés (ceux qui commencent par un point)
-H : pas de résolution DNS (à utiliser si connexion très lente)

Pour notre exemple, nous allons utiliser la commande suivante :

/usr/local/sbin/pure-ftpd -A -b -B -c 15 -C 2 -E -j -l puredb:/etc/pureftpd.pdb -R -u 1 -X -F /usr/share/games/fortunes/fr/amusantes -H
Pour avoir un fonctionnement correct des petits messages lors de la connexion des clients, il faut auparavant avoir chargé le programme fortune-mod :
urpmi fortune-mod

Il y a un choix assez vaste de messages. Ils sont situés dans le répertoire :
/usr/share/games/fortunes/
S'il n'y a pas d'erreur, pour éviter de retaper à chaque démarrage du serveur cette longue ligne de commande, il suffit de l'insérer à la fin du fichier
/etc/rc.local
, en utilisant votre éditeur de texte favori (vi par exemple)

Utilisateurs virtuels

Avec PureFTPd, les utilisateurs enregistrés n'existent pas en tant qu'utilisateurs systèmes : ils n'ont pas à être créé avec la commande adduser. PureFTPd gère en effet les utilisatuers virtuels : ce sont des utilisateurs créés et connus uniquement par PureFTPd.

La première chose à faire est de créer un groupe d'utilisateur dédié au serveur FTP, nommé ftpgroup, et un utilisateur FTP, nommé ftpuser, auquel seront rattachés tous les utilisateurs de votre serveur FTP, chacun ayant son propre répertoire de stockage.
groupadd ftpgroup

useradd -g ftpgroup -d /dev/null -s /etc ftpuser

Ceci crée un utilisateur ftpuser, appartenant au groupe ftpgroup, ne disposant d'aucun répertoire sur le système, et d'aucun shell. Ensuite, l'essentiel de la maintenance est réalisé par l'instruction pure-pw, et comme d'habitude avec PureFTPd, de nombreuses options sont disponibles. Pour les visionner :
pure-pw --help
Créons un premier utilisateur virtuel (nommé ici 'lea'):
pure-pw useradd lea -u ftpuser -d /home/ftpusers/lea

Un mot de passe alloué à ce compte vous est alors demandé, ainsi que sa confirmation.
Ceci crée un utilisateur virtuel nommé lea, connu de PureFTPd seul, rattaché à l'utilisateur ftpuser, ayant pour répertoire personnel chrooté
/home/ftpusers/lea

Inutile de créer le répertoire utilisateur de lea, il sera créé automatiquement lors de sa première connexion (c'est le rôle du paramètre -j vu au paragraphe précédent). Pour enregistrer définitivement cet utilisateur, il faut mettre à jour la base de données PureFTPd (fichier
/etc/pureftpd.pdb
) :
pure-pw mkdb

Nul besoin de redémarrer le service, la mise à jour est prise en compte immédiatement.

Quelques commandes utiles :

  • Changer le mot de passe oublié d'un de vos utilisateur virtuel :
    pure-pw passwd nom_du_compte_utilisateur

    pure-pw mkdb

  • Détruire un compte utilisateur virtuel :
    pure-pw userdel nom_du_compte_utilisateur

  • Visionner les paramètres de configuration d'un compte utilisateur virtuel :
    pure-pw show nom_du_compte_utilisateur

  • Lister l'ensemble des personnes connectées à votre serveur FTP :
    pure-ftpwho

Serveur anonyme

Ce serveur PureFTPd, démarré avec les options décrites ci-dessus, n'autorise pas un accès aux utilisateurs anonymes. Si vous souhaitez avoir un fonctionnement permettant à chaque utilisateur virtuel enregistré de se connecter à votre serveur, mais aussi posséder une zone en accès libre anonyme, la démarche à suivre est la suivante :

    • Créer un utilisateur système "ftp", disposant d'un répertoire personnel, mais sans shell de connexion.
      useradd -g ftpgroup -d /home/ftp -s /bin/false ftp
    • Créer le répertoire /home/ftp, qui sera le répertoire contenant les fichiers accessibles de manière anonyme :
      mkdir /home/ftp
    • Modifier les droits sur ce répertoire :
      chmod 500 ftp
    • Arrêter le serveur PureFTPd :
      ps ax | grep pure-ftpd

      Le premier nombre obtenu dans la réponse est le numéro de process PureFtpd. il faut le tuer :
      kill numero_de_process
    • Relancer le serveur PureFTPd en supprimant l'option de démarrage -E :
      /usr/local/sbin/pure-ftpd -A -b -B -c 15 -C 2 -j -l puredb:/etc/pureftpd.pdb -R -u 1 -X -F /usr/share/games/fortunes/fr/amusantes -H

      N'oubliez pas de modifier aussi ceci dans le fichier
      /etc/rc.local
      , en prévision du prochain redémarrage de votre serveur !

Vous avez alors un serveur acceptant les connexions avec utilisateurs virtuels enregistrés et avec utilisateurs anonymes.



@ Retour à la rubrique Réseau et sécurité

Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Laurent Dubettier-Grenier le 30/06/2004.

Copyright

Copyright © 30/06/2004, Laurent Dubettier-Grenier

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike iconCreative Commons Noncommercial
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique, Contexte non commercial 2.0 :
http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
Affichages
Outils personnels

Serveur hébergé par ST-Hebergement et Lost-Oasis / IRC hébergé par FreeNode / NS secondaire hébergé par XName
Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons CC-BY-SA