EEIJ

Païou : Mandriva Linux depuis 2002. Aujourd'hui, c'est Mageia Linux


Sommaire

On se lasse de tout, sauf de comprendre.
Attribué à Virgile.

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 :

Haut

Un peu de théorie

Regardez attentivement la page relative aux bases de FTP Cliquez

Elle vous sera très utile pour :

Haut

Installation

Le paquetage s'appelle pure-ftpd. L'installation peut se faire :

Haut

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)
Haut

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

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

Haut

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éé.

Haut

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

Haut

Démarrage

Maintenant que vous avez configuré, vous n'avez plus qu'à activer les changements.
Pour ceci, vous relancez le service pure-ftpd.

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.

Haut

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

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.

Haut