Pureftp

Version imprimableEnvoyer par emailversion PDF

Définition

Pureftp est un serveur FTP.

Il permet entre autre de stocker les utilisateurs dans une base de données MySQL, avec certaines options intéressantes.

Installation

Le plus simple est d'utiliser aptitude, ou yum.

 

Pour installer PureFTPd avec une liste d'utilisateurs géré par MySQL, pensez à installer MySQL, et donner un mot de passe à root :

/usr/bin/mysqld_safe

Si besoin, utiliser :

/usr/bin/mysql_install_db

ou consulter : http://dev.mysql.com/doc/refman/5.0/fr/default-privileges.html et http://dev.mysql.com/doc/refman/5.0/fr/resetting-permissions.html

Configuration de PureFTP

Rien ne remplace les fichiers README.

Il faut lire : http://download.pureftpd.org/pub/pure-ftpd/doc/README README et http://download.pureftpd.org/pub/pure-ftpd/doc/README.MySQL README.MySQL .

Il faut éditer les fichiers de configuration de pureftp (attention, les répertoires sont à modifier selon votre distribution) :

/etc/pure-ftpd/pure-ftpd.conf

/etc/pure-ftpd/pureftpd-mysql.conf

Note : pure-ftpd.conf n'existe plus dans le package Debian. Pureftpd-wrapper s'occupe de lire le dossier /etc/pure-ftpd/ de manière récursive et se configure selon les fichiers trouvés, et leur contenu (ex: Debian).

Il n'est pas nécessaire dans ce type d'installation (yum - RedHat) de spécifier quel fichier utiliser lors du lancement de pureftp.

Le premier fichier lu sera pure-ftpd.conf, ensuite sera lu les autres fichiers de configuration, tel que pureftpd-mysql.conf, et appliqués si besoins (et commentaires des lignes à appliquer supprimées dans ces fichiers).

Création de des données d'authentification dans MySQL

Il faut créer la base de données MySQL en rapport avec notre fichier de configuration (ici la base est nommée "users") :

 

CREATE TABLE users (
User VARCHAR(16) BINARY NOT NULL,
Password VARCHAR(64) BINARY NOT NULL,
Uid INT(11) NOT NULL default '-1',
Gid INT(11) NOT NULL default '-1',
Dir VARCHAR(128) BINARY NOT NULL,
ULBandwidth int(11) NOT NULL default '50',
DLBandwidth int(11) NOT NULL default '50',
PRIMARY KEY (User)
);

 

Il faut faire attention de crypter le mot de passe en md5 (voir SHA1 si supporté) dans phpmyadmin en ajoutant un nouvel utilisateur si on a sélectionné "md5" dans le fichier de configuration. N'enregistrez pas les mots de passes en clair !

Lancement du serveur FTP

/etc/init.d/pure-ftpd start

/etc/init.d/pure-ftpd status

Création du mode TLS / de certificats

RedHat

ll -lah /etc/pki/pure-ftpd/
openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/pki/pure-ftpd/pure-ftpd.pem -out /etc/pki/pure-ftpd/pure-ftpd.pem
chmod 600 /etc/pki/pure-ftpd/*.pem

 

Commentaires : on vérifie que le répertoire existe bien, on crée la clé (rsa 1024 bits), et on y attribue des droits spécifiques pour des raisons de sécurité.

On vérifie que le TLS est bien activé dans le fichier de configuration :

vi /etc/pure-ftpd/pure-ftpd.conf

 

Debian

 

Lire :

http://download.pureftpd.org/pub/pure-ftpd/doc/README.TLS 

Créer un certificat :

 

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

 

-days : Ceci va créer un certificat pour 10 ans.

 

Pensez à faire un :

 

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

 

Note : il est conseillé de mettre le reverse DNS de votre serveur dans Common Name (eg, YOUR name) : ftp.exemple.com .

Créer un fichier nommé :

/etc/pure-ftpd/conf/TLS

Inscrire le chiffre "2" (sans les "), pour n'autoriser que les connexions TLS et interdire tout autre type de connexion.

Recharger / Relancer PureFTP.

 

Commentaires sur les répertoires des utilisateurs

Si on utilise des groupes spécifiques (fortement conseillés), on créera un groupe nommé par exemple "ftpgroup", on vérifira son GID (/etc/group) et on appliquera ce chiffre dans le champ GID de la base de données.
Sinon, pour un accès à "tout le monde" :

 

chown -R nobody:nobody incoming/
chmod -R 555 /home/user/
chmod -R 331 /home/user/incoming/

 

chmod -R 555 sur /home/user permet aux utilisateurs de voir et de télécharger les fichiers, mais pas de les modifier.

chmod -R 331 sur incoming permet aux utilisateurs d'envoyer les fichiers, mais nullement de les voirs, avant déplacement par l'utilisateur principal.

 

Welcome messages

Enfin, des fichiers spécifiques ".banner" et ".message" dans le home de l'utilisateur peuvent être crées pour avertir les utilisateurs de changements spécifiques.

Problèmes connus

  • "/etc/init.d/pure-ftpd-mysql start" ne donne rien

 

Il se peut que la commande /etc/init.d/pure-ftpd-mysql start ne renvoie aucun message : ni d'erreur, ni de réussite, et que le serveur FTP ne démarre pas.

La solution se trouve dans le fichier : /etc/default/pure-ftpd-common

Ce fichier contient la ligne suivante : STANDALONE_OR_INETD inetd

Vous pouvez changer la valeur inetd par standalone pour avoir : STANDALONE_OR_INETD standalone

La commande /etc/init.d/pure-ftpd-mysql start fonctionnera.

Il est cependant recommandé de redémarrer la machine, pour relancer inetd, et ainsi automatiser le lancement du serveur ftp au démarrage de celle-ci, au lieu de nécessiter un démarrage manuel.

  • Can't exec "/usr/sbin/pure-ftpd": No such file or directory at /usr/sbin/pure-ftpd-wrapper line 174.

 

Lors de la connexion avec un client FTP, il se peut que le message d'erreur suivant vous soit retourné :
Can't exec "/usr/sbin/pure-ftpd": No such file or directory at /usr/sbin/pure-ftpd-wrapper line 174.

Il faut juste créer un lien symbolique vers pure-ftpd. Le programme pure-ftpd-wrapper nécessite ce lien symbolique pour lancer le service nommé "pure-ftpd".

Tapez donc la commande suivante :

 

ln -s /usr/sbin/pure-ftpd-mysql /usr/sbin/pure-ftpd

 

 

F.A.Q.

Où se trouve le fichier de configuration MySQL de PureFTP ?

Le fichier se trouve (sous debian) à cet emplacement : /etc/pure-ftpd/db/mysql.conf Il est parfois conseillé d'activer les lignes : MYSQLDefaultUID 1000 et MYSQLDefaultGID 1000

Noms d'utilisateurs

Le nom d'utilisateur : ftp est considéré comme "anonyme". Vous ne pourrez pas vous connecter avec un utilisateur ayant ce nom, si les connexions anonymes sont interdites.

Débloquer un problème

Créez le fichier : /etc/pure-ftpd/conf/VerboseLog

Vérifiez qu'il n'y a que le mot "yes" dans ce fichier (sans les "). Les informations sont enregistrées dans le fichier syslog. 

 

 

Sponsors