Installer et configurer le serveur Pure-FTPd
Historique
13 août 2013 : nouvelle page.
Difficulté
Pour : utilisateur un peu curieux.
Introduction
Le File Transfer Protocol est un protocole qui permet à des ordinateur distants d'échanger des fichiers à travers un réseau.
Les applications sont multiples :
- télécharger des fichiers depuis un serveur
- transférer vos pages web sur votre serveur web
- sauvegarder vos documents sur un autre ordinateur
- installer des postes à partir d'un serveur du réseau interne
- ...
Un peu de théorie
Regardez attentivement la page relative aux bases de FTP 
Elle vous sera très utile pour :
- savoir comment configurer votre serveur FTP
- savoir comment configurer votre client FTP
- savoir comment configurer le pare-feu de votre serveur FTP
- savoir comment configurer le pare-feu de votre client FTP
Installation
Le paquetage s'appelle pure-ftpd. L'installation peut se faire :
- de manière entièrement graphique, par le Centre de Contrôle
- en ligne de commande, dans un terminal, en super-utilisateur, avec la commande
urpmi pure-ftpd libpq9.2_5 ou urpmi pure-ftpd lib64pq9.2_5
Configuration
La configuration se fait grâce au fichier /etc/pure-ftpd/pure-ftpd.conf.
Configuration par défaut
La configuration par défaut convient bien dans la plupart des cas.
Vous pouvez la découvrir ci-dessous
Pour les curieux, survolez :
La configuration par défaut, en détail
Configuration générale
La configuration par défaut, prévoit :
- de confiner tous les utilisateurs dans leurs racines respectives, home et anonymes (ChrootEveryone yes)
- de limiter à 50 le nombre d'utilisateurs et à 8 pour une même adresse IP (MaxClientsNumber 50 et MaxClientsPerIP 8)
- de ne pas assurer la compatibilité avec certains navigateurs-certaines versions de Internet Exporer (BrokenClientsCompatibility no)
- de tourner en arrière-plan (Daemonize yes)
- de définir un temps maxi d’inactivité, en minutes, avant de déconnecter = 15 mn (MaxIdleTime 15)
- de créer un log distinct (AltLog /var/log/pureftpd.log)
- de ne pas enregistrer toutes les commandes des clients (VerboseLog no)
- d'interdire l'accès aux utilisateurs du fichier /etc/ftpusers (UseFtpUsers)
- de spécifier le nombre maximal de session à 3 pour un utilisateur identifié et à 20 pour les anonymes, mais est invalidé (#PerUserLimits 3:20)
- de ne pas enregistrer le PID dans le journal (#LogPID no)
- de définir un fichier PID particulier, mais n'est pas validé (#PIDFile /var/run/pure-ftpd.pid)
- de ne pas avoir un fichier tronqué lors du chargement, c'est un fichier temporaire qui est chargé progressivement, mais n'est pas validé (#NoTruncate yes)
Manipulations sur les fichiers/dossiers
La configuration par défaut, prévoit :
- de spécifier les limites de la commande ls à 10 000 fichiers et 8 sous-répertoires (LimitRecursion 10000 8)
- de permettre l’affichage systématique des fichiers/dossiers cachés (DisplayDotFiles yes)
- de ne pas interdire l’écriture ou l'effacement des fichiers commençant par un . (ProhibitDotFilesWrite no et ProhibitDotFilesRead no)
- d'interdire l’upload de fichiers si le disque est utilisé a plus de 99 % (MaxDiskUsage 99)
- de fixer les permissions des fichiers 133/dossiers 022 crées par les utilisateurs (Umask 133:022)
- d'interdire la modification des permissions des fichiers/dossiers, mais est invalidé (#NoChmod yes)
- de créer des répertoires d’accueil s’ils ne sont pas présents, mais est invalidé (#CreateHomeDir yes)
- d'interdire aux utilisateurs la possibilité de renommer les fichiers, mais est invalidé (#NoRename yes)
- de fixer de quota en nombre de fichiers et taille maxi en Mb, mais est invalidé (#Quota 1000:10)
- d'interdire la suppression des fichiers, mais est invalidé (#KeepAllFiles yes)
(permet toutefois l’upload, et le "resume" des fichiers)
- de ne pas renommer les fichiers déjà existants, il seront donc remplacés (AutoRename no)
- d'ajouter une protection contre des erreurs communes des utilisateurs, telles chmod 0 (CustomProof yes)
- de définir un jeu de caractères pour le système, mais est invalidé (#FileSystemCharset big5)
- de définir un jeu de caractères pour le client, mais est invalidé (#ClientCharset big5)
- de définir le type de journal : ftp, auth, authpriv, daemon, security, user, local*, none (SyslogFacility ftp)
Configuration réseau
La configuration par défaut, prévoit :
- de ne recherche pas le nom avec DNS, affiche simplement IP (DontResolve yes)
- d'autoriser les connexions NON anonymes a partir de cette IP seulement (#TrustedIP 10.1.1.1)
- d'activer et paramétrer l’utilisation de TLS, mais est invalidé (#TLS 1)
- 0 : n’accepte que les connexions non sécurisées (TLS désactivé; valeur par défaut)
- 1 : accepte les connexions sécurisées et non sécurisées
- 2 : n’accepte que les connexions sécurisées
- de désactiver IPV6, mais est invalidé (#IPV4Only yes)
- de désactiver IPV4, mais est invalidé (#IPV6Only yes)
- de permettre de spécifier une interface réseau et/ou un port à utiliser, mais est invalidé (#Bind 127.0.0.1,21)
- de permettre de définir une adresse IP pour le mode passif, IP externe d'un routeur par ex, mais n'est pas activé (#ForcePassiveIP)
- de permettre de définir une plage différente pour les ports du mode passif, mais est invalidé (#PassivePortRange)
Configuration de l'authentification
La configuration par défaut, prévoit :
- d'authentifier les utilisateurs identifiés avec PAM = pluggable authentication module (PAMAuthentication yes)
- mais vous pouvez y ajouter des authentifications via LDAP, MySQL, PostgreSQL, PureDB (utilisateurs virtuels), Unix (/etc/passwd), agent externe
Il faut dé-commenter et éventuellement modifier les lignes LDAPConfigFile, MySQLConfigFile, PGSQLConfigFile, PureDB, UnixAuthentication, ExtAuth
Configuration de l'accès anonyme
La configuration par défaut, prévoit :
- de permettre de n’autoriser que l’accès anonyme au serveur ftp, mais non validé (AnonymousOnly no)
- de permettre de désactiver l’accès anonyme au serveur ftp, mais non validé (NoAnonymous no)
- de permettre l’upload aux utilisateurs anonymes (AnonymousCantUpload no)
- d'interdire la création de répertoires aux utilisateurs anonymes (AnonymousCanCreateDirs no)
- de spécifier le ratio upload download pour les utilisateurs anonymes (AnonymousRatio 1 10)
- de limiter la bande passante pour les anonymes en kB/s, mais est invalidé (#AnonymousBandwidth 8)
- de ne pas autoriser l’utilisation du protocole FXP aux utilisateurs anonymes (AllowAnonymousFXP no)
- de limiter le téléchargement si la charge du système dépasse une certaine valeur (MaxLoad 4)
Options pour les utilisateurs authentifiés
La configuration par défaut, prévoit :
- de ne pas autoriser l’utilisation du protocole FXP aux utilisateurs authentifiés (AllowUserFXP no)
- d'imposer un UID minimal des utilisateurs autorisés à s’authentifier (MinUID 100)
- de limiter la bande passante pour les utilisateurs en kB/s, mais est invalidé (#UserBandwidth 8)
- de spécifier le ratio upload download pour les utilisateurs identifiés (UserRatio 1 10)
Affiner avec un éditeur
La modification de la configuration se fait par l'édition du fichier /etc/pure-ftpd/pure-ftpd.conf.
Ouvrir un éditeur en tant qu'administrateur
- Avec Xfce et Gnome, si vous avez installé gksu et mousepad
gksu mousepad /etc/pure-ftpd/pure-ftpd.confLe mot de passe root sera demandé.
- Dans les autres cas
- Ouvrez un émulateur de terminal (Vous avez probablement une icône)
- Tapez la commande su Le mot de passe root sera demandé.
- Lancez votre éditeur, par exemple mousepad /etc/pure-ftpd/pure-ftpd.conf
ou leafpad /etc/pure-ftpd/pure-ftpd.conf
Sauvegardez le fichier d'origine
Enregistrez sous ... pure-ftpd.conf.origine
Rechargez le fichier pure-ftpd.conf
Limiter le nombre de ports passifs
Si vous n'avez que quelques clients, il est utile de limiter le nombre de ports à ouvrir.
Remplacez la ligne #PassivePorts 30000 50000 par PassivePorts 50000 50020 par exemple
Limiter le nombre maxi d'accès
Si vous n'avez que quelques clients, modifier la ligne MaxClientsNumber 50 en MaxClientsNumber 10
Utilisateurs anonymes
Pure-ftpd est déjà configuré pour accueillir des utilisateurs anonymes.
Ils seront cantonnés dans le répertoire /var/ftp/pub/ qui est automatiquement créé.
Rien à modifier donc.
Un répertoire /var/ftp/incoming/ où les utilisateurs anonymes peuvent stocker des fichiers est également créé.
Utilisateurs virtuels
Vous avez peut-être besoin de définir des permissions pour des utilisateurs autres que ceux qui sont enregistrés sur le serveur FTP (autres que ceux qui figurent dans le fichier /etc/passwd) : des utilisateurs virtuels.
Un utilisateur virtuel n'aura pas de UID ni de GID personnels puisqu'il ne sera pas enregistré comme utilisateur normal.
Il est courant d'utiliser le groupe générique ftpgroup et l'utilisateur générique ftpuser pour tous ces utilisateurs virtuels. Cela est sans inconvénient, si vous avez gardé l'option par défaut : confiner les utilisateurs dans leur répertoire.
Vous pourrez attribuer les UID et GID 65533 (juste avant nobody).
Création de ftpgroup et ftpuser
groupadd -g 65533 ftpgroup
useradd -g ftpgroup -d /dev/nul -s /bin/false -c "FTP user" ftpuser
Création automatique du répertoire des utilisateurs virtuels
Vous pouvez configurer Pure-ftpd pour qu'il crée automatiquement le répertoire des utilisateurs en validant la directive #CreateHomeDir yes (supprimer le caractère #)
sed -i "s/#CreateHomeDir/CreateHomeDir" /etc/pure-ftpd/pure-ftpd.conf
Création d'un utilisateur virtuel
Il faut créer les utilisateurs virtuels avec la commande suivante, pour un utilisateur toto :
pure-pw useradd toto -u ftpuser -d /LeDossierDeToto -m Un mot de passe sera demandé
Changement du mot de passe
# pure-pw passwd toto
Changement d'un utilisateur
Il est possible de modifier un utilisateur avec la commande suivante :
# pure-pw usermod toto -d /UnAutreDossierPourToto pour modifier le répertoire
Lister un utilisateur
Connaître les caractéristiques d'un utilisateur :
# pure-pw show toto
Lister les utilisateurs
Connaître les caractéristiques d'un utilisateur :
# pure-pw list
Démarrage
Maintenant que vous avez configuré, vous n'avez plus qu'à activer les changements.
Pour ceci, vous relancez le service pure-ftpd.
- Dans le Centre de Contrôle, prenez l'onglet Système et la rubrique Gérer les services système...
- Cliquez sur le bouton Démarrer de la ligne pure-ftpd, puis refermez la page des services.
- Pofitez-en pour vérifier que la case Au démarrage est bien cochée.
Le serveur FTP est prêt. Ne refermez pas encore le Centre de Contrôle. Vous devez également configurer le pare-feu, s'il est actif.
Configuration du pare-feu
Si le serveur FTP intègre un pare-feu ou est placé derrière un pare-feu, vous devrez ouvrir les ports utilisés par FTP.
Sur le serveur
- Dans le Centre de Contrôle Mageia prenez l'onglet Sécurité puis l'icône Configurer votre pare-feu personnel
- Cochez la case Serveur FTP
- Validez, puis continuez avec l'assistant, puis fermez le Centre de Contrôle.
Remarque : Normalement, il faudrait également ouvrir les ports passifs. Dans les faits, ce n'est pas nécessaire. C'est comme si le port passif choisi par le serveur était traité comme un port sortant, alors que c'est un port entrant.
Sur le client
En mode passif, il n'y a rien à configurer, vu que les ports utilisés sont des ports sortants.
Par contre, en mode actif, le port des données est un port entrant. Mais là également tout se passe comme s'il était considéré comme un port sortant.
Donc, rien à configurer sur le pare-feu du client.