serveur_hebergement:pure-ftpd

Ceci est une ancienne révision du document !


Pure-FTPd

En cours de rédaction

Pure-FTPd est un serveur FTP (File Transfer Protocol ou protocole de transfert de fichier en français) utilisant donc le protocole FTP est permettant de d'envoyer et télécharger des fichiers depuis/vers un serveur.

Pré-requis

On va installer la variante MySQL qui permet de créer des utilisateurs virtuels dans une base de données. Il vous faudra donc un serveur SQL fonctionnel. Il vous faudra également un nom de domaine ainsi qu'un certificat TLS lié à ce domaine.

Installez Pure-FTPd :

aptitude install pure-ftpd-common pure-ftpd-mysql quota quotatool

Lancez mysql :

sudo mysql

Créez la base de données :

CREATE DATABASE pureftpd;

Créez l'utilisateur pure-ftpd et donnez-lui tous les droits sur la base (changez “motdepasse” par le mot de passe de votre choix) :

GRANT ALL privileges ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY 'motdepasse';

Rechargez les droits :

FLUSH privileges;

Sélectionnez la base créée :

USE pureftpd;

Créez la table des utilisateurs :

CREATE TABLE `users` (
  `ID` INT(11) NOT NULL AUTO_INCREMENT,
  `User` VARCHAR(32) NOT NULL DEFAULT '',
  `Password` VARCHAR(64) NOT NULL DEFAULT '',
  `Uid` INT(3) NOT NULL DEFAULT '500',
  `Gid` INT(3) NOT NULL DEFAULT '500',
  `Dir` VARCHAR(255) NOT NULL DEFAULT '',
  `QuotaSize` INT(4) NOT NULL DEFAULT '50',
  `Status` enum('0','1') NOT NULL DEFAULT '1',
  `ULBandwidth` INT(2) NOT NULL DEFAULT '100',
  `DLBandwidth` INT(2) NOT NULL DEFAULT '100',
  `Date` DATE NOT NULL DEFAULT '0000-00-00',
  `LastModif` VARCHAR(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`ID`),
  UNIQUE KEY `User` (`User`),
  KEY `Uid` (`Uid`),
  KEY `Gid` (`Gid`),
  KEY `Dir` (`Dir`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

Sortez :

exit;

Les fichiers de configurations se trouvent dans le répertoire /etc/pure-ftpd/conf et la configuration de l'accès à la base se trouve dans /etc/pure-ftpd/db/mysql.conf.

Ouvrez le fichier mysql.conf :

sudo nano /etc/pure-ftpd/db/mysql.conf
  • MYSQLUser doit avoir pour valeur le nom de l'utilisateur créé pour accéder à la base.
  • MYSQLPassword doit avoir pour valeur le mot de passe de l'utilisateur.
  • MYSQLDatabase doit avoir pour valeur le nom de la base de donnée
  • MYSQLCrypt doit avoir pour valeur la méthode de chiffrement des mots de passe des utilisateurs. Choisissez “crypt”

La configuration de Pure-FTPd est un peu spéciale. Chaque fichier de configuration correspond à un seul paramètre. Rentrez les commandes suivantes, en root :

echo "2" > /etc/pure-ftpd/conf/TLS
echo "No" > /etc/pure-ftpd/conf/CreateHomeDir
echo "/etc/letsencrypt/live/votredomaine/fullchain.pem /etc/letsencrypt/live/votredomaine/privkey.pem" > /etc/pure-ftpd/conf/CertFileAndKey               
echo "Yes" > /etc/pure-ftpd/conf/NoAnonymous
echo "No" > /etc/pure-ftpd/conf/PAMAuthentication
echo "54000 64000" > /etc/pure-ftpd/conf/PassivePortRange
echo "Yes" > /etc/pure-ftpd/conf/ChrootEveryone
echo "HIGH" > /etc/pure-ftpd/conf/TLSCipherSuite

Explication des paramètres :

  • TLS : activation de la couche TLS pour la connexion FTP. 0 désactive TLS, 1 autorise la connexion sans et avec TLS et 2 n'autorise que la connexion avec TLS
  • CreateHomeDir : crée automatiquement un répertoire home pour chaque utilisateur virtuel. J'ai déactivé cette option
  • CertFileAndKey : certificat et clé TLS de votre nom de domaine générés avec Let’s Encrypt. Remplacez domaine.fr par votre nom de domaine
  • NoAnonymous : désactive les connexions d'utilisateurs non authentifiés. J'ai activé cette option
  • PAMAuthentication : active la connexion des utilisateurs locaux. J'ai désactivé cette option
  • PassivePortRange : plage de port pour les connexions en mode passif
  • ChrootEveryone : restreint les utilisateurs à leur répertoire home. J'ai activé cette option.
  • TLSCipherSuite : suites cryptographique à utiliser. HIGH désigne les suites avec le niveau de sécurité le plus élevé.

Si vous avez besoin que vos utilisateurs puissent suivre les liens symboliques, ouvrez le fichier /etc/default/pure-ftpd-common et modifier la valeur de VIRTUALCHROOT de “false” à “true”.

Il vous faudra ouvrir les ports 21 et 54000 à 64000 en TCP.

Redémarrez Pure-FTPd afin de prendre en compte ces modifications :

sudo systemctl restart pure-ftpd-mysql.service

Je vous conseille l'utilisation de phpMyAdmin pour la création d'un utilisateur. Insérez une nouvelle ligne dans la table users comme suit :

Je vais détailler les paramètres les moins compréhensible (User et Password, j'imagine que tout le monde a compris que c'est le nom d'utilisateur et le mot de passe) :

  • ID correspond au numéro de création de votre utilisateur
  • UID et GID doivent correspondre à un UID et GID d'un utilisateur réel. Il faut que l'utilsateur/group ait accès au répertoire de l'utilisateur virtuel que vous êtes en train de créer
  • Dir est le répertoire auquel aura accès l'utilisateur virtuel
  • QuotaSize, ULBandwidth et DLBandwidth sont des limites de quota et bande passante que vous pouvez imposer à l'utilisateur.

Pensez bien à sélectionner la fonction “Encrypt” pour le mot de passe, sinon vous ne pourrez pas vous connectez.

Vous pourriez laisser un commentaire si vous étiez connecté.
  • serveur_hebergement/pure-ftpd.1668273092.txt.gz
  • Dernière modification : 2023/08/08 14:01
  • (modification externe)