FR Pure ftpd virtual users - titandc/titan-sc-documentation Wiki

Introduction

Cette documentation décrit comment installer et configurer le service Pure-ftpd avec des utilisateurs virtuels sous Debian.

N'hésitez pas à consulter la documentation officielle de Pure-ftpd.

Installation

L'installation de Pure-ftpd se fait en installant le paquet pure-ftpd.

apt-get install pure-ftpd

Configuration

Les fichiers de configuration se trouvent dans le répertoire /etc/pure-ftpd/.

L'idée est de créer un utilisateur sur Pure-ftpd dont l'UID n'existe pas sur le système. Lorsque cet utilisateur se connectera et déposera des fichiers sur le FTP, l'UID défini dans la configuration de Pure-ftpd sera utilisé. De plus, l'utilisateur sera chrooté dans son répertoire.

La documentation officielle liée aux utilisateurs virtuels se trouve ici.

Ouvrir le fichier /etc/pure-ftpd/pure-ftpd.conf et modifier les paramètres suivants :

DisplayDotFiles               no
NoAnonymous                   yes
DontResolve                   yes
MaxIdleTime                   5
PureDB                        /etc/pure-ftpd/pureftpd.pdb
PAMAuthentication             no
ProhibitDotFilesWrite         yes
ProhibitDotFilesRead          yes
NoChmod                       yes

D’autres fichiers sont à modifier :

echo no > /etc/pure-ftpd/auth/70pam
echo no > /etc/pure-ftpd/conf/PAMAuthentication
ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure

Activer le mode passif

Pour activer le mode passif :

echo "30000 50000" > /etc/pure-ftpd/conf/PassivePortRange

Ne pas oublier de modifier le firewall si nécessaire.

Création des utilisateurs

Les utilisateurs virtuels sont ajoutés dans le fichier /etc/pure-ftpd/pureftpd.passwd. Lorsque les utilisateurs auront été ajouté, il sera nécessaire de lancer une commande pour que pure-ftpd puisse générer sa base de données et travailler dessus.

Dans le cadre de cet exemple, l'utilisateur virtuel john sera créé avec les caractéristiques suivantes :

  • UID : 3001
  • GID : 3001
  • chroot : /var/www/john-doe

Ni l'UID ni le GID n'existe sur le système.

pure-pw useradd john -u 3001 -g 3001 -d /var/www/john-doe

Les informations sont enregistrés dans le fichier /etc/pure-ftpd/pureftpd.passwd. Il est possible d'éditer ce fichier manuellement.

Lorsque tous les utilisateurs ont été ajoutés avec succès, il faut lancer la commande suivante pour que pure-ftpd puisse générer sa base de données et travailler dessus :

pure-pw mkdb

Cette commande sera à utiliser à chaque ajout ou modification d'un utilisateur à l'aide de la commande pure-pw et/ou si le fichier /etc/pure-ftpd/pureftpd.passwd a été modifé.

Si le service n'est pas encore démarré car il manquait des utilisateurs, il peut maintenant l'être :

systemctl start pure-ftpd

Si le service était déjà démarré, il n'est pas nécessaire de redémarrer Pure-ftpd à chaque ajout d'utilisateurs.

Créer le répertoire de l’utilisateur s’il n’existe pas et attribuer les bons droits :

mkdir -p /var/www/john-doe
chown 3001:3001 /var/www/john-doe

Pour information, la sous-commande useradd peut prendre les paramètres suivants :

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 ip>/<mask>] [-R <deny client ip>/<mask>]
                         [-i <allow local ip>/<mask>] [-I <deny local ip>/<mask>]
                         [-y <max number of concurrent sessions>]
                         [-C <max number of concurrent login attempts>]
                         [-M <total memory (in MB) to reserve for password hashing>]
                         [-z <hhmm>-<hhmm>] [-m]

Modifier un utilisateur

La modification d’un utilisateur virtuel se fait via la commande suivante :

pure-pw usermod <user> <parametres>

Les paramètres sont ceux utilisés par la sous commande useradd.

Pour réinitialiser un paramètre par défaut, il suffit d’y mettre une chaine vide dans sa valeur.

Par exemple, pour remettre le nombre de sessions parallèle de l'utilisateur john :

pure-pw usermod john -y ""

Supprimer un utilisateur

La commande suivante permet de supprimer un utilisateur :

pure-pw userdel <user>

Pour supprimer l'utilisateur john :

pure-pw userdel john

Autoriser un utilisateur avec un UUID inférieur à 1 000

Par défaut, les utilisateurs autorisés à se connecter, doivent avoir un UID supérieur à 1 000. Dans le cas contraire, la connexion sera refusée.

Pour autoriser un utilisateur avec un UUID 33 :

echo "33" > /etc/pure-ftpd/conf/MinUID

Activation du chiffrement

Avant l’activation du chiffrement, il est nécessaire d’être certain d’avoir un certificat valide en sa possession. Ce certificat devra être déployé sur la machine.

Si vous ne disposez pas encore de certificat SSL, veuillez vous référer à la documentation expliquant comment générer un certificat gratuitement à l'aide de let's encrypt.

Il existe trois niveaux de configuration pour la partie chiffrement :

  • 0 : Désactivation du chiffrement et seul les connexions non-chiffrées sont acceptés (il s’agit du paramètre par défaut)
  • 1 : Les connexions chiffrées et non chiffrées sont acceptées
  • 2 : Seules les connexions chiffrées sont acceptées. Les connexions non cryptées seront refusées.

Pour modifier la configuration, ici en acceptant les deux types de connexions :

echo 1 > /etc/pure-ftpd/conf/TLS

Il est nécessaire pour Pure-ftpd d'avoir le certificat et la clé dans le même fichier (exemple ici avec un certificat let's encrypt) :

cat /etc/letsencrypt/live/<nom de domaine>/fullchain.pem /etc/letsencrypt/live/<nom de domaine>/privkey.pem > /etc/ssl/private/pure-ftpd.pem

Puis modifier la configuration de /etc/pure-ftpd/pure-ftpd.conf :

# Certificate file, for TLS
# The certificate itself and the keys can be bundled into the same
# file or split into two files.
# CertFile is for a cert+key bundle, CertFileAndKey for separate files.
# Use only one of these.

CertFile                     /etc/ssl/private/pure-ftpd.pem

Créer le fichier dhparams pour pure-ftpd (cela peut prendre un peu de temps) :

openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048

Et pour finir, redémarrer le service :

systemctl restart pure-ftpd.service

Installer et configurer fail2ban

L'installation de fail2ban se fait en tapant la commande suivante sur une Debian :

apt-get install fail2ban

Pour activer la configuration de pure-ftpd sur fail2ban, tapez la commande suivante :

printf "[pure-ftpd]\nenabled = true" >> /etc/fail2ban/jail.d/defaults-debian.conf

Recharger la configuration de fail2ban :

systemctl reload fail2ban
⚠️ **GitHub.com Fallback** ⚠️