Voici peu de temps j’ai du procéder à la re-installation complète de mon serveur Web. En effet suite à un crash de la machine physique, le serveur virtuel avait prit un léger coup. Sa restauration sur un nouveau système de virtualisation (Xen au lieu de vserver) semblant difficile, j’ai préféré repartir avec une installation propre du système. Mon hébergeur a donc installé le même OS, Ubuntu 8.04LTS server (Hardy Heron). Oui je sais que la version date un peu mais nous étions dans l’urgence et nous avons fait au plus simple pour la restauration derrière 🙂
Ayant rencontré quelques difficultés pour installer de nouveau le serveur FTP, j’ai décidé de faire profiter d’autres de ma méthode afin de leur faciliter la vie plus tard. A l’époque, étant en train de développer un site Web qui devait accueillir une page de téléchargement avec potentiellement pas mal de connexions, j’avais choisi Pure-FTP. En effet avec son système d’utilisateurs virtuels, il présentait un fonctionnement plus simple et la possibilité d’un utilisateur virtuel en lecture seulement afin de créer des liens ftp et non http, ce qui aurait permit une sérieuse économie sur les ressources du serveur. Cette interface na jamais été mise en production, mais j’ai conservé ce serveur FTP car il était simple de configuration et de fonctionnement, du moins à mon goût.
Tout d’abord installons le serveur :
sudo apt-get install pure-ftpd pure-ftpd-common
Si vous n’êtes pas sur un serveur, mais sur un bureau (desktop), je vous invite à installer aussi pureadmin. Reportez-vous aux documentations accessibles par les liens plus bas pour ce point.
Une fois le serveur installé, nous avons un groupe pour les utilisateurs ftp et un utilisateur réel pour le serveur.
sudo groupadd ftpgroup
sudo useradd -g ftpgroup -d /dev/null -s /usr/sbin/nologin ftpuser
Il est possible d’apporter de nombreuses configurations au serveur FTP en lui même comme une limitation sur le type d’IP pouvant se connecter (IP V4 ou V6), des logs plus verbeux, …etc… Suivre les deux liens suivants pour consulter ces options [link1 – link2].
Une fois cette étape terminée, nous allons pouvoir créer nos utilisateurs virtuels. Attention dans cette partie je n’utilise que la ligne de commande car je suis sur un serveur, mais étonnamment il est conseillé de n’utiliser que cette méthode, même si vous avez installé pureadmin 😉
sudo pure-pw useradd user1 -u ftpuser -g ftpgroup -d /var/www/html/site1
sudo pure-pw useradd user2 -u ftpuser -g ftpgroup -d /var/www/html/site2
…
A chaque utilisateur ajouté, il vous sera demandé de saisir le mot de passe de ce dernier (deux fois). Il est bien sûr possible de rajouter diverses options pour les utilisateurs comme des quotas, une IP/mask pour un compte donné et ainsi de suite. Toutes ces options se retrouvent dans la documentation de Pure-FTP mais en voici déjà une bonne vision :
pure-pw useradd <login> [-f <passwd file>] -u <uid> [-g <gid>]
-D/-d <home directory> [-c <gecos>]
[-t <download bandwidth>] [-T <upload bandwidth>]
[-n <max number of files>] [-N <max Mbytes>]
[-q <upload ratio>] [-Q <download ratio>]
[-r <allow client host>[/<mask>][,<allow client host>[/<mask>]]…]
[-R <deny client host>[/<mask>][,<deny client host>[/<mask>]]…]
[-i <allow local host>[/<mask>][,<allow client host>[/<mask>]]…]
[-I <deny local host>[/<mask>][,<deny local host>[/<mask>]]…]
[-y <max number of concurrent sessions>]
[-z <hhmm>-<hhmm>] [-m]
Une fois les utilisateurs créés il faut générer leur fichier. Utilisez pour cela la commande suivante :
sudo pure-pw mkdb
Si nous nous arrétions là nous obtiendrions une erreur 530 en essayant de nous connecter. Afin d’activer ll’authetification liée à Pure-FTP, il faut créer un lien symbolique vers le fichier PureDB dans le dossier auth :
sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure
On peut trouver dans ce dossier d’autres liens symboliques. Personnellement j’ai toujours du réaliser cette étape. D’après certains sites il faudrait idéalement que le lien symbolique de l’identification choisie soit en premier dans le dossier. Si l’erreur 530 persiste, il est conseillé de désactiver l’identification PAM en remplaçant « yes » par « no » dans le fichier « /etc/pure-ftpd/conf/PAMAuthentication ».
Si à l’issue cela persistait encore et que dans le fichier /var/log/syslog vous avez un affichage proche du suivant :
Jun 9 11:46:41 monserveur pure-ftpd: (?@monserveur) [INFO] New connection from monserveur
Jun 9 11:46:46 monserveur pure-ftpd: (?@monserveur) [INFO] PAM_RHOST enabled. Getting the peer address
Jun 9 11:46:47 monserveur pure-ftpd: (?@monserveur) [WARNING] Authentication failed for user [monuserftp]
Jun 9 11:46:53 monserveur pure-ftpd: (?@monserveur) [INFO] Logout.
Je vous invite alors à redémarrer votre serveur. Oui je sais que cela peut-être considéré comme hérétique que de vouloir redémarrer un serveur Linux mais dans le cadre présent cela peut aider 😉
Si au démarrage du serveur FTP vous obtenez l’erreur suivante dans le fichier /etc/var/syslog :
Jun 9 16:55:37 monserveur pure-ftpd: (?@?) [ERROR] Sorry, invalid address given
Il y a fort à parier que la résolution DNS de votre serveur soit dans les choux. Je vous invite alors à vérifier la configuration des serveur DNS disponibles dans le fichier /etc/resolv.conf.
Voici maintenant quelques commandes utiles pour le fonctionnement immédiat de votre serveur.
Lister les utilisateurs virtuels :
sudo pure-pw list
Lister les utilisateurs connectés et leurs états :
sudo pure-ftpwho
Changer le mot de passe d’un utilisateur :
pure-pw passwd monuser -f /etc/pure-ftpd/pureftpd.passwd
Il est aussi possible d’ajouter un message personnalisé pour chaque utilisateur. Pour cela je vous inviterai à consulter la première documentation sur Doc Ubuntu 🙂 Voila pour toute cette partie. J’espère que cela sera utile à certains 🙂
Liens complémentaires / sources :