Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
serveur_hebergement:pure-ftpd [2022/11/11 12:24] – créée fate | serveur_hebergement:pure-ftpd [2024/06/16 19:48] (Version actuelle) – [Configuration] fate | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Pure-FTPd ====== | ====== Pure-FTPd ====== | ||
- | ====== En cours de rédaction ====== | + | Pure-FTPd est un serveur FTP (File Transfer Protocol ou protocole |
- | 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' | + | ====== Pré-requis ====== |
- | On va installer la variante MySQL qui permet de créer des utilisateurs virtuels dans une base de données. | + | On va installer la variante MySQL qui permet de créer des utilisateurs virtuels dans une base de données. |
+ | Il vous faudra également un nom de domaine ainsi qu'un certificat TLS lié à ce domaine. | ||
+ | |||
+ | ===== Installation ===== | ||
+ | |||
+ | Installez Pure-FTPd : | ||
+ | <code bash> | ||
+ | |||
+ | ===== Création de la base de donnée ===== | ||
+ | |||
+ | Lancez mysql : | ||
+ | <code bash> | ||
+ | |||
+ | Créez la base de données : | ||
+ | <code sql> | ||
+ | |||
+ | Créez l' | ||
+ | <code sql> | ||
+ | |||
+ | Rechargez les droits : | ||
+ | <code sql> | ||
+ | |||
+ | Sélectionnez la base créée : | ||
+ | <code sql> | ||
+ | use pureftpd; | ||
+ | </ | ||
+ | |||
+ | Créez la table des utilisateurs : | ||
+ | <code sql> | ||
+ | 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 ' | ||
+ | `Gid` int(3) NOT NULL DEFAULT ' | ||
+ | `Dir` varchar(255) NOT NULL DEFAULT '', | ||
+ | `QuotaSize` int(4) NOT NULL DEFAULT ' | ||
+ | `Status` enum(' | ||
+ | `ULBandwidth` int(2) NOT NULL DEFAULT ' | ||
+ | `DLBandwidth` int(2) NOT NULL DEFAULT ' | ||
+ | `Date` date NOT NULL DEFAULT ' | ||
+ | `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 : | ||
+ | <code bash> | ||
+ | |||
+ | ===== Configuration de Pure-FTPd ===== | ||
+ | |||
+ | Les fichiers de configurations se trouvent dans le répertoire / | ||
+ | |||
+ | Ouvrez le fichier mysql.conf : | ||
+ | <code bash> | ||
+ | |||
+ | * MYSQLUser doit avoir pour valeur le nom de l' | ||
+ | * MYSQLPassword doit avoir pour valeur le mot de passe de l' | ||
+ | * 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 " | ||
+ | |||
+ | 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 : | ||
+ | <code bash> | ||
+ | echo " | ||
+ | echo " | ||
+ | echo "/ | ||
+ | echo " | ||
+ | echo " | ||
+ | echo "54000 64000" > / | ||
+ | echo " | ||
+ | echo " | ||
+ | </ | ||
+ | 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' | ||
+ | * 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 [[serveur_hebergement: | ||
+ | * NoAnonymous : désactive les connexions d' | ||
+ | * PAMAuthentication : active la connexion des utilisateurs locaux. J'ai désactivé cette option | ||
+ | * PassivePortRange : plage de port pour les connexions en [[https:// | ||
+ | * ChrootEveryone : restreint les utilisateurs à leur répertoire home. J'ai activé cette option. | ||
+ | * TLSCipherSuite : [[https:// | ||
+ | |||
+ | Si vous avez besoin que vos utilisateurs puissent suivre les liens symboliques, | ||
+ | |||
+ | Il vous faudra ouvrir les ports 21 et 54000 à 64000 en TCP. | ||
+ | |||
+ | Redémarrez Pure-FTPd afin de prendre en compte ces modifications : | ||
+ | <code bash> | ||
+ | |||
+ | ===== Création d'un utilisateur virtuel ===== | ||
+ | |||
+ | Je vous conseille l' | ||
+ | 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' | ||
+ | * ID correspond au numéro de création de votre utilisateur | ||
+ | * UID et GID doivent correspondre à un [[https:// | ||
+ | * Dir est le répertoire auquel aura accès l' | ||
+ | * QuotaSize, ULBandwidth et DLBandwidth sont des limites de quota et bande passante que vous pouvez imposer à l' | ||
+ | |||
+ | Pensez bien à sélectionner la fonction " | ||
+ | |||
+ | ===== Gérer le multi-domaine ===== | ||
+ | |||
+ | Tout ce qui suit est inutile si vous n' | ||
+ | Si vous avez plusieurs noms de domaine associés à votre serveur, cela va poser problème lors de connexion à Pure-FTPd car il ne gère qu'un certificat TLS, celui indiqué dans le fichier CertFileAndKey. | ||
+ | Imaginons que vous avez 2 noms de domaine, domaine.fr et domaine.com. Si vous avez mis dans le fichier CertFileAndKey le certficat et la clé pour domaine.fr et que vous vous connectez en rentrant comme adresse du serveur domaine.com, | ||
+ | |||
+ | Pure-FTPd gère le multi-domaine via le programme pure-certd, mais il n'est fournit qu'à partir de la version 1.0.50 et c'est la version 1.0.49 qui est présente dans les dépôt Stable de Debian 11. Là vous avez 2 choix : | ||
+ | - Installer la version 1.0.50 présente dans les dépôts Testing. Vous allez vous retrouver avec des paquets provenant de Stable et d' | ||
+ | - Recompiler la version 1.0.49 afin de rajouter le programme pure-certd. C'est la solution que nous allons choisir. Cette solution va nécessiter des certificats Let's Encrypt | ||
+ | |||
+ | ==== Dépendances ==== | ||
+ | |||
+ | Afin de pouvoir recompiler Pure-FTPd vous allez avoir besoin d' | ||
+ | <code bash> | ||
+ | |||
+ | ==== Compilation de Pure-FTPd ==== | ||
+ | |||
+ | Récupérez les sources : | ||
+ | <code bash>apt source pure-ftpd-mysql</ | ||
+ | |||
+ | Rendez-vous dans le répertoire créé : | ||
+ | <code bash>cd pure-ftpd-1.0.49</ | ||
+ | |||
+ | Ouvrez le fichier rules : | ||
+ | <code bash> | ||
+ | |||
+ | Pour ajouter le programme pure-certd, modifiez la ligne " | ||
+ | <code bash> | ||
+ | |||
+ | Lancez la configuration : | ||
+ | <code bash> | ||
+ | |||
+ | Puis la compilation : | ||
+ | <code bash> | ||
+ | |||
+ | Installez le paquet : | ||
+ | <code bash> | ||
+ | |||
+ | ==== Configuration ==== | ||
+ | |||
+ | Créez le fichier / | ||
+ | <code bash> | ||
+ | |||
+ | Ajoutez les lignes suivantes : | ||
+ | < | ||
+ | #!/bin/sh | ||
+ | |||
+ | #echo " | ||
+ | echo ' | ||
+ | echo ' | ||
+ | echo ' | ||
+ | echo ' | ||
+ | </ | ||
+ | |||
+ | Ce script va servir à indiquer à Pure-FTPd quel certificat utiliser en fonction du nom de domaine utilisé pour la connexion. | ||
+ | |||
+ | Modifiez les droits pour que le propriétaire (root) puisse l' | ||
+ | <code bash> | ||
+ | |||
+ | Ouvrez le fichier pure-ftpd-wrapper : | ||
+ | <code bash> | ||
+ | |||
+ | Après la ligne : | ||
+ | < | ||
+ | Ajoutez la ligne suivante : | ||
+ | < | ||
+ | Ca va rajouter l' | ||
+ | |||
+ | Créez le fichier de configuration ExtCert et mettez comme valeur / | ||
+ | <code bash> | ||
+ | Cela va permettre à Pure-FTPd de récupérer le certificat du domaine via pure-certd | ||
+ | |||
+ | Supprimez le fichier CertFileAndKey : | ||
+ | <code bash> | ||
+ | |||
+ | Créez le fichier systemd pour lancer pure-certd : | ||
+ | <code bash> | ||
+ | |||
+ | Ajoutez les lignes suivantes : | ||
+ | < | ||
+ | [Unit] | ||
+ | Description=Start pure-certd Daemon | ||
+ | After=network.target | ||
+ | Before=pure-ftpd-mysql.service | ||
+ | |||
+ | [Service] | ||
+ | ExecStart=/ | ||
+ | RestartSec=5 | ||
+ | Restart=always | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | </ | ||
+ | |||
+ | Activez le démarrage automatique de pure-certd : | ||
+ | <code bash> | ||
+ | |||
+ | Démarrez pure-certd : | ||
+ | <code bash> | ||
+ | |||
+ | Redémarrez Pure-FTPd : | ||
+ | <code bash> | ||
+ | |||
+ | La gestion du multi-domaine est activée. | ||
+ | |||
+ | Source : [[https:// | ||