Pureftp

De GeRgOsNet.

1. Créer un utilisateur ftp (mode console)

   * Création du répertoire /var/ftp:
      mkdir /var/ftp
   * Création de l'utilisateur ftp:
     $ su Password: # groupadd -g 23 ftp # useradd -d /var/ftp -g 23 -u 14 ftp -s /bin/false
     On peut prendre d'autres valeurs pour le gid [option -g] et l'uid [option -u] de l'utilisateur/groupe ftp. En effet, toutes les valeurs entre 1 et 99 conviendront parfaitement, pour peu qu'elles ne soient pas déjà prises par un autre utilisateur système.

2. Installation de pure-ftpd 2.1 Installation de la version de base

   * Une version de pure-ftpd doit se trouver sur les CD d'installation de votre distro. Il vous suffit de l'installer avec le gestionnaire de paquetages de votre distribution.
   * Ou vous pouvez aussi télécharger le binaire, adapté à votre distribution, de la dernière version de ce serveur ftp et l'installer selon la méthode usuelle.
   * Si vous souhaitez utiliser Pure-FTP avec le support SSL, suivez le 2.2

2.2 Installation de Pure-ftpd avec support TLS/SSL Pour utiliser Pure-FTP avec TLS/SSL, assurez-vous :

   * Que vous savez compiler un programme sous linux.
   * Que tous les outils nécessaires à cette compilation soient installés sur votre système.
   * Que openssl soit installé.
   * Que vous possédez le mot de passe de root.

Avant de commencer l'installation de Pure-ftpd avec son module SSL/TLS, la création d'une clé sécurisée est nécessaire. Pour ce faire exécutez les commandes qui suivent. création du chemin d'accueil :

mkdir -p /etc/ssl/private

génération de la clé SSL :

openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

attribution des droits sur cette clé :

chmod 600 /etc/ssl/private/*.pem

A ce stade, il ne vous reste plus qu'à télécharger les sources de Pure-FTP depuis le site officiel. En effet, les packages de votre distribution ne sont, par défaut, pas compilés avec l'option TLS/SSL. L'installation des sources se résume alors :

$ cd /où/sont/les/sources 
$ tar -xzvf pure-ftpd-xxx.tar.gz 
$ cd pure-ftpd-xxx 
$ ./configure --prefix=/usr --with-everything --with-tls --with-paranoidmsg --with-language=french --without-capabilities --with-virtualchroot 
$ su # make install-strip

3. Configuration plus fine Si le comportement par défaut ne vous satisfait pas, vous pouvez facilement personnaliser le fonctionnement de pureftpd. En effet, la configuration de pure-ftpd se distingue de celle des autres serveurs puisqu'elle ne fait appel à aucun fichier. Pour lui faire adapter le comportement souhaité, il suffit tout simplement de lui passer en argument un certain nombre d'options. L'ensemble des options disponibles et leurs significations sont détaillés dans la documentation livrée avec le logiciel. Voici juste pour exemple, la configuration de mon serveur ftp anonyme:

pure-ftpd -A -b -B -c 5 -C 2 -e -F /usr/share/games/fortune/fr/amusantes -H -k 95% -K -M -q 1:2 -r -s -t :12

Lexique des options ci-dessous:

   * -A : Demande au serveur de chrooter tous les utilisateurs ftp. Concrètement cela veut dire qu'ils ne pourront sortir du répertoire maison que je leur ai défini [ici /var/ftp]. Ils ne verront rien d'autre de mon système que le répertoire /var/ftp et ses sous-répertoires ;-).
   * -b : Être moins exigeant avec les standards pour permettre la connexion à des clients ftp très peu soucieux des standards, tel IExplorer.
   * -B : Fonctionnement du serveur en arrière-plan.
   * -c : Autoriser au maximum de [n] connexions simultanées au serveur.Ici n=5.
   * -C : Autoriser au maximum [n] connexions simultanées venant de la même adresse ip au serveur. Ici n=2.
   * -e : N'accepter uniquement que les connexions anonymes.
   * -F : A chaque connexion d'un client, afficher un message de bienvenue pris de manière aléatoire dans le fichier /usr/share/games/fortune/fr/amusantes.
   * -H : Ne pas résoudre les noms de domaine pour accélérer les connexions c-a-d ne pas chercher a déterminer quel est le nom de domaine de l'adresse ip 213.41.14.252 qui demande la connexion.
   * -k : Ne pas autoriser les uploads dès lors que la partition est à [pourcentage]% pleine. Ici, limite fixée a 95%.
   * -K : Autoriser les utilisateurs à uploader et à "résumer" leur upload mais pas à supprimer ou renommer leur fichiers uploadés.
   * -M : Autoriser les utilisateurs anonymes à créer des répertoires.
   * -q : Mettre en place les ratios [ratio upload]:[ratio download] pour les utilisateurs anonymes. Ici -q 1:2 signifie que les utilisateurs anonymes doivent uploader 1Mo de données pour pouvoir downloader 2Mo.
   * -r : Ne jamais écraser un fichier existant. Le fichier est automatiquement renommer si un fichier du même nom existe déjà sur le serveur.
   * -s : La protection anti-warez. Ne pas autoriser les utilisateurs anonymes à télécharger des fichiers qui viennent d'être uploadé par d'autres utilisateurs anonymes. Il faut qu'auparavant, l'administrateur du serveur est validé tous les fichiers uploadés comme étant disponible [ou non] au téléchargement.
   * -t : Mettre en place une limitation de la bande passante [n kb/s upload]:[m kb/s download]. Ici -t :12 signifie que pour les utilisateurs, la vitesse en upload est illimitée [d'où l'absence de valeur] et que la vitesse en dowload est limitée à 12 kb/s.
   * -w : Activer le support FXP pour les utilisateurs authentifié
   * -S (port ) : Connexion à Pure-ftpd sur un port non standard

Il existe beaucoup d'autres options dont vous trouverez le détail dans la documentation fournie avec le logiciel et qui est localisé dans votre répertoire /usr/share/doc/ ou man pure-ftpd.

4. Création d'utilisateurs virtuels :

Dans cette partiz nous allons créer un utilisateur mommé TEST, qui va être chrooté ( pas de remonté de répertoire )dans /Download/Download/ftp/. L'intérêt de crée ce type d'utilisateur est de ne pas crée des compte directement sur la machine. Je vais supposer que votre base de données des virtual users est /etc/pure-ftpd/pureftpd.pdb, si ce n'est pas le cas chez vous, adaptez. Pour lancer, pure avec le support de la base données c'est :

pure-ftpd -B -1 -K -A -c 5 -C 1 -E -r -w -l puredb:/etc/pure-ftpd/pureftpd.pdb &

S'il est déjà lancé, vous n'avez qu'à tuer son processus avant d'exécuter la commande précédente. Pour rajouter un utilisateur, tapez simplement la commande qui suit. 501 étant, le gid et l'uid de l'utilisateur ainsi créé, vérifiez qu'il n'entre en conflit avec aucun autre utilisateur, avant, chez vous :

pure-pw useradd TEST -u 501 -g 501 -d /Download/Download/ftp/ password : ***** confirm : *****

Pour que cet utilisateur soit pris en compte il faut mettre à jour la base de données des virtual users, chez moi mkdb :

pure-pw mkdb

Vérification de la création de l'utilisateur TEST :

pure-pw show TEST

-----------------------------------------------------
Login : TEST
Password : $1$UOz/bTt0$MIQaP52DT/LeA7MJksCNc0
UID : 501 (user)
GID : 501 (user)
Directory : /Download/Download/ftp/./
Full name :
Download bandwidth : 0 Kb (unlimited)
Upload bandwidth : 0 Kb (unlimited)
Max files : 0 (unlimited)
Max size : 0 Mb (unlimited)
Ratio : 0:0 (unlimited:unlimited)
Allowed local IPs :
Denied local IPs :
Allowed client IPs :
Denied client IPs :
Time restrictions : 0000-0000 (unlimited)
Max sim sessions : 0 (unlimited) 

5. Automatiser le lancement du serveur Pour lancer notre serveur au démarrage du PC, il faut ajouter à la fin du fichier /etc/rc.d/init.d/rc.local, la ligne qui nous sert habituellement à le lancer. Ceci ne concerne bien-sûr pas ceux qui utilisent, les utilisateurs virtuels.

  1. Lancement de pure-ftpd (la suite en une ligne)
pure-ftpd -A -b -B -c 5 -C 2 -e -F /usr/share/games/fortune/fr/amusantes -H -k 95% -K -M -q 1:2 -r -s -t :12 & 

pour ceux qui utilisent, les virtuals users, c'est ceci qu'il faut rajouter à /etc/rc.d/init.d/rc.local :

  1. Lancement de pure-ftpd (la suite en une ligne)
pure-ftpd -B -1 -K -A -c 5 -C 1 -E -r -w -l puredb:/etc/pure-ftpd/pureftpd.pdb & 

Vérification des présences sur le ftp.

Pure-ftpwho ou pure-ftpwho -v
Outils personnels