serveur_hebergement:pure-ftpd

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
serveur_hebergement:pure-ftpd [2022/11/12 17:11] fateserveur_hebergement:pure-ftpd [2023/08/08 14:00] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 ====== Pure-FTPd ====== ====== 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. 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.
Ligne 115: Ligne 113:
 Pensez bien à sélectionner la fonction "Encrypt" pour le mot de passe, sinon vous ne pourrez pas vous connectez. Pensez bien à sélectionner la fonction "Encrypt" pour le mot de passe, sinon vous ne pourrez pas vous connectez.
  
 +===== Gérer le multi-domaine =====
 +
 +Tout ce qui suit est inutile si vous n'utilisez qu'un seul nom de domaine pour vous connecter à votre serveur FTP.
 +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, vous aurez un message d'erreur car le certificat ne correspond pas à l'adresse du nom de domaine.
 +
 +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'autres de Testing, ce qui peut facilement provoquer des problèmes. Je déconseille donc cette méthode
 +  - 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'installer les programmes suivants :
 +<code bash>sudo aptitude install apt-transport-https default-libmysqlclient-dev libcap-dev libldap2-dev libpam0g-dev libsodium-dev</code>
 +
 +==== Compilation de Pure-FTPd ====
 +
 +Récupérez les sources :
 +<code bash>apt source pure-ftpd-mysql</code>
 +
 +Rendez-vous dans le répertoire créé :
 +<code bash>cd pure-ftpd-1.0.49</code>
 +
 +Ouvrez le fichier rules :
 +<code bash>nano debian/rules</code>
 +
 +Pour ajouter le programme pure-certd, modifiez la ligne "sbin=" afin d'avoir comme suit :
 +<code bash>sbin=pure-authd pure-ftpwho pure-uploadscript pure-quotacheck pure-ftpd pure-mrtginfo pure-certd</code>
 +
 +Lancez la configuration :
 +<code bash>./configure --with-mysql --with-tls --with-everything</code>
 +
 +Puis la compilation :
 +<code bash>dpkg-buildpackage -uc -us</code>
 +
 +Installez le paquet :
 +<code bash>sudo dpkg -i ../pure-ftpd-mysql_1.0.49-4.1_amd64.deb</code>
 +
 +==== Configuration ====
 +
 +Créez le fichier /bin/pure-cert-check.sh :
 +<code bash>sudo nano /bin/pure-cert-check.sh</code>
 +
 +Ajoutez les lignes suivantes :
 +<code>
 +#!/bin/sh
 +
 +#echo "$(env)" > /root/sni_log
 +echo 'action:strict'
 +echo 'cert_file:/etc/letsencrypt/live/'${CERTD_SNI_NAME}'/fullchain.pem'
 +echo 'key_file:/etc/letsencrypt/live/'${CERTD_SNI_NAME}'/privkey.pem'
 +echo 'end'
 +</code>
 +
 +Ce script va servir à indiquer à Pure-FTPd quel certificat utiliser en fonction du nom de domaine utilisé pour la connexion.
 +
 +Ouvrez le fichier pure-ftpd-wrapper :
 +<code bash>sudo nano /usr/sbin/pure-ftpd-wrapper</code>
 +
 +Après la ligne :
 +<code>'NoTruncate' => ['-0'],</code>
 +Ajoutez la ligne suivante :
 +<code>'ExtCert' => [ '-3 %s', \&parse_string],</code>
 +Ca va rajouter l'option ExtCert à Pure-FTPd.
 +
 +Créez le fichier de configuration ExtCert et mettez comme valeur /var/run/ftpd-certs.sock :
 +<code bash>echo "/var/run/ftpd-certs.sock" > /etc/pure-ftpd/conf/ExtCert</code>
 +Cela va permettre à Pure-FTPd de récupérer le certificat du domaine via pure-certd
 +
 +Supprimez le fichier CertFileAndKey :
 +<code bash>sudo rm /etc/pure-ftpd/conf/CertFileAndKey</code>
 +
 +Créez le fichier systemd pour lancer pure-certd :
 +<code bash>sudo nano /etc/systemd/system/pure-certd.service</code>
 +
 +Ajoutez les lignes suivantes :
 +<code>
 +[Unit]
 +Description=Start pure-certd Daemon
 +After=network.target
 +Before=pure-ftpd-mysql.service
 +
 +[Service]
 +ExecStart=/usr/sbin/pure-certd --run /bin/pure-cert-check.sh --socket /var/run/ftpd-certs.sock --pidfile /var/run/pure-certd.pid
 +RestartSec=5
 +Restart=always
 +
 +[Install]
 +WantedBy=multi-user.target
 +</code>
 +
 +Activez le démarrage automatique de pure-certd :
 +<code bash>sudo systemctl enable pure-certd.service</code>
 +
 +Démarrez pure-certd : 
 +<code bash>sudo systemctl start pure-certd.service</code>
 +
 +Redémarrez Pure-FTPd :
 +<code bash>sudo systemctl restart pure-ftpd-mysql.service</code>
  
 +La gestion du multi-domaine est activée.
  
 +Source : [[https://forum.howtoforge.com/threads/pure-ftpd-sni-with-letsencrypt.85488/#post-438345]]
  
  • serveur_hebergement/pure-ftpd.1668273092.txt.gz
  • Dernière modification : 2023/08/08 14:01
  • (modification externe)