-
Mise en place d'un serveur FTP avec Pure-FTPd
Après avoir vu comment mettre en place un serveur FTP avec vsFTPd et ProFTPD, nous allons voir comment mettre en place un serveur FTP avec Pure-FTPd.
Pure-FTPd permet entre autres la gestion des virtualhosts, du FTPS et du chroot des utilisateurs...
utoriel réalisé sur Debian Wheezy 7.7 avec Pure-FTPd version 1.0.36.
Pour installer Pure-FTPd (GNU/Linux Debian) utiliser la commande suivante :
sudo apt-get install pure-ftpd
(cliquer sur l'image pour l'agrandir)
Je vais maintenant vérifier que Pure-FTPd est lancé avec htop.
(cliquer sur l'image pour l'agrandir)
Tout comme ProFTPD, Pure-FTPd peut être lancé en mode inetd ou standalone.
Pour cela éditez le fichier pure-ftpd-common à l'aide de la commande :
sudo nano /etc/default/pure-ftpd-common
Entrez ensuite le mode que vous souhaitez.
Les fichiers de configurations se trouvent dans /etc/pure-ftpd/conf.
La configuration par défaut contient 7 fichiers.
- AltLog : fichier permettant de configurer l'emplacement des logs
- FSCharset : fichier permettant de paramétrer l'encodage des caractères ( UTF8 etc...)
- MinUID : fichier permettant d'indiquer l'UID minimal ayant accès au serveur.
- NoAnonymous : Fichier permettant d'indiquer si on autorise ou non le FTP anonyme.
- PAMAuthentication : fichier permettant d'indiquer si on autorise ou non l’authentification par module PAM.
- PureDB : fichier permettant d'indiquer le chemin vers la base de donnée des comptes virtuels.
- UnixAuthentication : fichier permettant d'indiquer si on autorise ou non l’authentification standard Unix.
(cliquer sur l'image pour l'agrandir)
(cliquer sur l'image pour l'agrandir)
Pour modifier une valeur dans un fichier ( ici le fichier MinUID ), utilisez la commande suivante en root.
echo "valeur" > "fichier_à_modifier"
(cliquer sur l'image pour l'agrandir)
Une fois vos modifications terminées, relancez pure-ftpd avec la commande :
sudo /etc/init.d/pure-ftpd restart
Lors du redémarrage, vous pourrez voir votre configuration s'afficher.
(cliquer sur l'image pour l'agrandir)
Si vous souhaitez rajouter une nouvelle option ( ici je vais rajouter l'option Umask ).
echo "valeur" > "fichier_à_créer"
Lors du redémarrage, vous pourrez voir votre nouvelle option s'afficher.
(cliquer sur l'image pour l'agrandir)
Je vais maintenant tester une 1ère connexion à mon serveur FTP.
(cliquer sur l'image pour l'agrandir)
Vous pouvez constater que je peux naviguer dans l'arborescence.
Nous verrons un peu plus loin dans le tutoriel comment "emprisonner" des utilisateurs dans leurs dossiers personnels afin qu'ils ne puissent pas remonter dans l'arborescence.
(cliquer sur l'image pour l'agrandir)
Nous allons voir maintenant comment créer des utilisateurs virtuels.
Pour cela, il faut d'abord créer un groupe et un utilisateur auxquels seront affectés tous les utilisateurs virtuels ( Cette méthode permettra de créer des utilisateurs FTP virtuels en ne créant qu'un seul utilisateur système. ).
L'utilisateur n’aura pas de permission et pas de shell.
sudo groupadd groupftp && sudo useradd -g groupftp -d /dev/null -s /bin/false userftp
On vérifie en suite que le groupe et l'utilisateur ont bien été crées avec la commande :
grep ftp /etc/passwd /etc/group
(cliquer sur l'image pour l'agrandir)
Je vais ensuite créer le fichier CreateHomeDir dans /etc/pure-ftpd/conf.
Ce fichier va permettre la création du répertoire utilisateur lors de sa 1ère connexion au serveur.
echo yes > /etc/pure-ftpd/conf/CreateHomeDir
(cliquer sur l'image pour l'agrandir)
Ensuite, je crée le répertoire racine /home/ftp et j'attribue les droits à root et groupftp.
sudo mkdir /home/ftp
sudo chown root:groupftp /home/ftp
(cliquer sur l'image pour l'agrandir)
La création des utilisateurs virtuels se fait à l'aide de la commande pure-pw.
Documentation utilisateurs virtuels Pure-FTPd
ici, je vais créer l'utilisateur userftp1 qui sera chrooté dans dans son répertoire personnel.
sudo pure-pw useradd userftp1 -u userftp -g groupftp -d /home/ftp/userftp1 -m
-u : pour indiquer que l'utilisateur utilisera l'UID des utilisateurs virtuels.
-g : pour indiquer que l'utilisateur utilisera le GID des utilisateurs virtuels.
-d : répertoire ou sera chrooté userftp1.
-m : effectue la mise à jour automatique de la base de donnée des utilisateurs virtuels ( (/etc/pure-ftpd/pureftpd.pdb).
Pendant la création de l'utilisateur, il vous sera demandé de créer son mot de passe.
(cliquer sur l'image pour l'agrandir)
Le manuel de pure-pw.
(cliquer sur l'image pour l'agrandir)
Si vous souhaitez avoir des informations sur vos utilisateurs virtuels, utilisez la commande :
sudo pure-pw show "utilisateur"
(cliquer sur l'image pour l'agrandir)
Après chaque création ou modification d’un utilisateur, il faut générer la base de données avec la commande :
pure-pw mkdb
PS : Si vous avez utilisé l'option -m lors de la création de votre utilisateur virtuel,alors cette commande est inutile.
Pour finir, nous allons créer un lien symbolique afin que pure-ftpd puisse activer l'authentification des utilisateurs virtuels.
Pour cela, nous allons utiliser la commande :
sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure
(cliquer sur l'image pour l'agrandir)
Si vous voulez seulement permettre la connexion aux utilisateurs virtuels, vous devez désactiver l'authentification PAM et Unix.
(cliquer sur l'image pour l'agrandir)
Une fois votre configuration terminée relancez pure-ftpd avec la commande :
sudo /etc/init.d/pure-ftpd restart
Je vais maintenant tester la connexion au serveur FTP avec l'utilisateur userftp1.
Vous pouvez observer que la connexion a bien fonctionné.
(cliquer sur l'image pour l'agrandir)
Je vais maintenant vérifier que userftp1 est bien emprisonné dans son répertoire personnel.
Pour cela, je clique sur "Vers un rép. de plus haut niveau".
Vous remarquerez que userftp1 ne peut pas remonter dans l'arborescence et qu'il est effectivement emprisonné dans son dossier personnel.
(cliquer sur l'image pour l'agrandir)
Pour terminer ce tutoriel, nous allons voir comment mettre en place le FTPS.
Pour mettre le place le FTPS, nous aurons besoin de openssl.
Si celui-ci n'est pas installé sur votre serveur :
sudo apt-get install openssl
Ensuite, nous allons procéder à la création du certificat et de la clé avec la commande suivante :
sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
(cliquer sur l'image pour l'agrandir)
On active ensuite TLS dans pure-ftpd.
echo 2 > /etc/pure-ftpd/conf/TLS
- 0 désactive TLS .
- 1 Utilisation de TLS optionelle.
- 2 force tous les utilisateurs à utiliser TLS .
On relance ensuite pure-ftpd
sudo /etc/init.d/pure-ftpd restart
(cliquer sur l'image pour l'agrandir)
Je me connecte à nouveau à mon serveur FTP en choisissant cette fois-ci "Connexion FTP explicite sur TLS"
(cliquer sur l'image pour l'agrandir)
Le serveur nous présente le certificat que nous avons crée juste auparavant afin que nous puissions vérifier son identité.
Une fois que l'identité du serveur a bien été vérifié, cliquez sur "Valider".
(cliquer sur l'image pour l'agrandir)
Maintenant que Pure-FTPd est configuré, nous allons surveiller les connexions en cours.
Pour cela, il suffit d'utiliser la commande suivante :
sudo pure-ftpwho
(cliquer sur l'image pour l'agrandir)
Conclusion :
Ce tutoriel n'est qu'un exemple simple des possibilités offertes par Pure-FTPd.
Je vous invite à lire ces documentations qui m'ont aidé pour ce tutoriel.
Tags : ftp, chroot, virtualhosts, pure-ftpd
-
Commentaires
3QuentinLundi 3 Septembre 2018 à 18:48Tu peux en dire plus Quentin ? distribution sur laquelle tu as installé pure-ftpd ? Sans le SSL tout fonctionne ? As tu un firewall ? As tu activé lez mode passif sur ton client FTP ?
Cdt
5JpMercredi 12 Juin 2019 à 10:35Bonjour, idem que Quentin. Je teste ça sur un vieux Ubuntu server 8.04. Par contre ça fonctionne dès que je désactive le SSL.
Bjr
As tu regardé tes logs Jp qui peuvent te donner une indication ?
-
JpMercredi 12 Juin 2019 à 13:20
J'ai trouvé ça dans le log :
[ERROR] Sorry, but that file doesn't exist: [/etc/ssl/private/pure-ftpd.pem]
c'est le seul élément que j'ai trouvé qui pourrait avoir un rapport.
-
JpMercredi 12 Juin 2019 à 13:23
(suite message précédent) et pourtant dans le dossier :
cd /etc/ssl/private > ls pure-ftpd.pem ssl-cert-snakeoil.key
-
Ajouter un commentaire
Excellent tuto ca marche super bien ! bravo c'est formidable mon serveur marche enfin
MERCI