Serveur FTP Pure-FTPd

Pure-FTPd est un serveur FTP sécurisé et fiable pour les systèmes dérivés d'UNIX. Il est sous licence BSD.

Pure-FTPd propose comme fonctionnalités le contrôle de la bande passante, l'établissement de quotas de téléchargement, les alias de répertoires, la création d'hôtes virtuels. On peut également afficher des messages personnalisés (bannières et fortunes) lors de la connexion des utilisateurs.

Pure-FTPd peut exécuter un script à la suite d'une upload. Il peut également refuser des utilisateurs si la charge système devient trop importante.

Il supporte l'identification par Pluggable Authentication Modules (PAM), mais aussi à partir d'une base de données MySQL, PostgreSQL ou dans un annuaire LDAP. Il supporte également la création d'utilisateurs virtuels n'ayant pas de compte sur le système. Une option anti-warez permet de réagir face à un répertoire accessible en écriture.

Les utilisateurs peuvent utiliser les protocoles SSL/TLS afin de chiffrer l'envoi de leur identifiant et mot de passe vers le serveur (nécessite un client FTP compatible).

Plusieurs serveurs FTP Pure-FTPd indépendants peuvent s'exécuter de façon concurrente sur la même machine.

Création du groupe ftpgroup :

sudo groupadd ftpgroup

Création de l'utilisateur ftpuser :

sudo useradd -g ftpgroup -d /dev/null -s /usr/sbin/nologin ftpuser
ou
sudo useradd -g ftpgroup --system ftpuser

La configuration se fait à l'aide de fichiers présents dans le dossier /etc/pure-ftpd/conf/

Ces fichiers sont documentés dans le ReadMe officiel de PureFtpd (voir README Pure-ftpd). Ils prennent des valeurs de type: yes/no, chemin, valeur…

Par exemple, Pure-ftp ne montre pas plus de 2000 fichiers lorsque vous vous connectez à votre serveur pure-ftp, et n'autorise pas plus de 5 répertoires Pour dépasser cette limite, vous devez créer un fichier dans le répertoire /etc/pure-ftpd/conf/ et créer le fichier dont le nom est relatif à l'option.

Pour l'exemple LimitRecursion (note : il faut respecter la casse)

ensuite vous renseignez ce fichier, pour 10000 fichiers et 50 répertoires 10000 50

puis vous relancez le serveur Pure-ftp.

Vous faites de façon identique pour toutes les autres options.

-0 NoTruncate Cette option permet de renommer automatiquement un fichier si un autre du même nom existe déjà sur le serveur.Cette option est incompatible avec les "Quotas virtuels"
-1 LogPid Log le PID de chaque session dans Syslog
-4 ipv4only Écoute uniquement les connections IP V4
-6 ipv6only Écoute uniquement les connections IP V6
-a TrustedGid Seulement les membre du groupe peuvent se connecter
-A ChrootEveryone Chroot tous les utilisateurs
-B Daemonize Démarrer le serveur en mode Standalone (en daémon)
-c MaxClientsNumber Autorise au maximum clients à se connecter simultanément au serveur (Défaut = 50)
-C MaxClientsPerIP Nombre maximum de connexions simultanées par client (adresse IP)
-d VerboseLog Envoie des messages de débugage dans Syslog (A utiliser seulement en cas de problème)Pour avoir également les log de réponses, il faut doubler ce paramètre.
-D DisplayDotFiles Affiche les fichiers commençant par un point (Paramètre à activer pour les puristes et à désactiver pour les simples utilisateurs)
-e AnonymousOnly Autorise uniquement les utilisateurs anonymes. A utiliser uniquement pour les sites FTP publiques.
-E NoAnonymous Autorise uniquement les utilisateurs authentifiés. Les utilisateurs anonymes sont interdits.
-f SyslogFacility Indique la « facility » à utiliser pour syslog (Défaut = local2). « -f none » permet de désactiver les logs.
-F FortunesFile Affiche une ligne de texte aléatoire à la connexion en provenance du fichier « fortune file » (ex : Astuce du jour). Pour afficher un texte à la connexion, il faut également utiliser cette option.
-g PidFile Change l'adresse du fichier pid quand l serveur est exécuté en mode standalone. (Défaut = /var/run/pure-ftpd.pid)
-H DontResolve Par défaut, les noms pleinement qualifiés sont logués en faisant une requête DNS inverse sur l'adresse IP. Cette option permet d'éviter de rechercher le nom pleinement qualifié dans le but d'accélérer le temps de connexion. Cette option est donc conseillée pour les sites publiques très chargés.
-i AnonymousCantUpload Interdit l'accès en écriture sur le serveur (upload) pour les utilisateurs anonymes.
-I MaxIdleTime Change la durée de connexion maximum en minutes (Défaut = 15)
-j CreateHomeDir Crée automatiquement le home de l'utilisateur s'il n'existe pas.
-k MaxDiskUsage Interdit les chargements sur le serveur (upload) si la partition utilisée est chargée à plus de
-K KeepAllFiles Autorise les utilisateurs à charger des fichiers sur le serveur, mais les interdit de les renommer ou les supprimer.
-l login Ajoute une nouvelle règle d'authentification.
-L LimitRecursion Cette option permet d'éviter le nombre de fichiers listes et le nombre de niveau de recherches pour éviter les déni de services.(Défaut = 2000 fichiers et 5 niveaux de répertoire)
-m MaxLoad Interdit les téléchargements anonymes si la charge du CPU atteint
-M AnonymousCanCreateDirs Autorise les utilisateurs anonymes à créer des répertoires.
-n Si le serveur supporte les quotas virtuels, cette option permet de les configurer
-N NatMode Mode NAT
-O AltLog Enregistre les logs des fichiers transférés dans un fichier spécifique. Plusieurs formats sont supportés : CLF (Apache-like), Stats, W3C and xferlog.Par exemple le format "Stats" ressemble à
-p PassivePortRange Permet de modifier les ports sur lesquels le serveur Écoute
-P ForcePassiveIP Force l'adresse IP ou le nom de la machine pour le retour
-q AnonymousRatio Active les ratios pour les utilisateurs anonymes
-Q UserRatio Active les ratios pour tous les utilisateurs
-r AutoRename Ne jamais écraser un fichier existant. Le fichier est automatiquement renommé si c'est nécessaire.
-R NoChmod Interdit aux utilisateurs d'utiliser les commandes CHMOD
-s AntiWarez Interdit aux utilisateur anonymes de télécharger des fichiers
-T UserBandwidth or [] :[] Active la limitation de la bande passante en kilobytes/seconds. Il est possible d'avoir une bande passante différente avec la syntaxe "-t [] :[]"
-t AnonymousBandwidth Active la limitation de la bande passante en kbps pour les utilisateurs anonymes. Il est possible d'avoir une bande passante différente avec la syntaxe "-t [] :[]"
-u MinUID Interdit les accès pour les utilisateurs ayant un uid inférieur à celui indiqué.
-U Umask Change le mask de création des dossiers et des fichiers. (Défaut = 133 022)
-V TrustedIP Autorise les accès non anonymes seulement pour l'adresse IP spécifiée. Les autres adresses IP auront un accès anonyme.
-x ProhibitDotFilesWrite Interdit les utilisateurs anonymes à écrire des fichiers commençant par un point.
-X ProhibitDotFilesRead Interdit les utilisateurs anonymes à lire et écrire des fichiers commençant par un point.
-y PerUserLimits Permet de limiter le nombre de sessions simultanées qu'un utilisateur peut ouvrir (Défaut = 0 = illimités)
-z AllowDotFiles Autorise les utilisateurs anonymes à lire les fichiers et les dossiers commençant par un point.

Création d'un utilisateur virtuel

Entrez la commande dans un terminal :

sudo pure-pw useradd nom_utilisateur -u ftpuser -g ftpgroup -d /home/www/nom_utilisateur

Il faut maintenant générer le fichier des utilisateurs :

sudo pure-pw mkdb

Après chaque modification ou rajout d'utilisateur il faut régénérer le fichier des utilisateurs avec cette commande.

Pour activer l'authentification liée à Pure-FTP :

sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure

Changer le mot de passe d'un utilisateur

Si un mot de passe a été oublié ou doit être changé, utiliser cette commande :

sudo pure-pw passwd nom_utilisateur

Regénérer le fichier des utilisateurs

sudo pure-pw mkdb

Pour cela, il faut activer le "virtualchroot" dans le fichier /etc/default/pure-ftpd-common

VIRTUALCHROOT=true

Ajouter un message d'accueil

On crée notre fichier contenant le ou les messages :

nano /home/user/nomfichier

On insère directement notre texte.

Pour générer plusieurs messages aléatoirement, il suffit de séparer les messages par le caractère "%".

On donne les droits nécessaires :

sudo chmod 644 /home/user/nomfichier

Une fois le fichier crée, on ajoute à la config de Pureftpd l'option -F (fortunesfile) :

nano /etc/pure-ftpd/conf/FortunesFile

Et on y ajoute le chemin de notre message :

/home/user/nomfichier

Il suffit ensuite de redémarrer le serveur:

sudo /etc/init.d/pure-ftpd restart

On retrouve alors notre option -F :

-F /home/user/nomfichier
Pour afficher l'espace disque on peut exécuter un script à intervalles régulières de type :
df -H /dossierdepartage > /home/user/nomfichier

Lister les utilisateurs virtuels

sudo pure-pw list

D'autres fonctions sont disponibles.

Pour ne pas avoir une erreur 530 (connexion refusée) à la connexion du client FTP il faut créer le lien symbolique:

sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/75puredb
important

Attention : pure-ftpd interdit le login pour les numéros inférieurs à celui paramétré dans : /etc/pure-ftpd/conf/MinUID.

Si erreur : 530 Sorry, but I can't trust you

Modifier : /etc/pure-ftpd/conf/MinUID, avec un uid (1000 par défaut) inférieur à l'uid de l'utilisateur physique auquel est lié l'utilisateur virtuel.

Il faut peut être redémarrer pour rendre la modification effective…

Pour relancer le serveur pure-ftpd

sudo /etc/init.d/pure-ftpd restart

Lister les utilisateurs connectés et leurs états

sudo pure-ftpwho
  • pure-ftp.txt
  • Dernière modification: Le 28/11/2019, 15:15
  • (modification externe)