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.
Pré-requis
- Disposer des droits d'administration.
- Disposer d'une connexion à Internet configurée et activée.
Installation
Configuration
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
Autoriser les utilisateurs virtuels à suivre les liens symboliques (symlinks)
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
df -H /dossierdepartage > /home/user/nomfichier
Utilisation
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
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