LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


yast:serveur_pure_ftpd

Installer et Configurer un serveur FTP avec Pure-FTPD

Pré-Requis

  • Savoir ouvrir des ports dans son pare-feu et/ou box
  • Savoir utiliser un éditeur de texte en mode console (vi ou nano)
  • Fonctionnement identique sur OpenSuse 10.x, 11.x

Préambule

Il peut y avoir plusieurs avantages à installer un serveur FTP :

  • Partager des données avec ses amies, famille ou clients…
  • Partager l'ensemble des logiciels de la société dans le réseau de l'entreprise,
  • Installer Opensuse à partir d'un serveur FTP sur un certain nombre de postes simultanément,

Note : Pure-FTPD vous permet d'utiliser le protocole SSL pour sécuriser l'échange de vos données. Il sera nécessaire d'installer le package “openssl”.

Installation

Il existe plusieurs façons d'installer pure-ftpd.

Soit par :

  • Téléchargement de la source sur le site de l'éditeur.
  • Yast

C'est cette dernière solution que j'ai choisi.

Dans “yast>service réseau” Cliquer sur “Services réseau (xinetd)”.

Il s'agit ici, des services réseau que propose cette distribution.

Cliquer sur le bouton “activer” et sélectionner le service “FTP”.
Sélectionner la ligne “/usr/sbin/pure-ftpd” dans la colonne serveur.
Cliquez sur le bouton “Etat interrupteur à bascule”.

L'installation du package commence

Initialiser le service au démarrage

Pour initialiser le daemon au démarrage, il faut utiliser l'utilitaire “Editeur du niveau d'execution” (Yast>systeme)

Sélectionner “pure-ftpd” dans la liste et cliquer sur “activer

De cette manière le daemon s'initialisera au démarrage.
Il vous est possible de choisir le niveau d'éxecution (rcx) en fonction de vos préférences (le niveau avec interface graphique (kde/gnome) est le rc5.

En mode console, le niveau est rc3

Rajouter un certificat SSL

Pour générer un certificat SSL qui sera utilisé par pure-ftpd, faites

openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Ou placez directement votre certificat au bon endroit.

Se connecter au FTP

Pour démarrer le démon manuellemnt :

/etc/init.d/pure-ftpd start

Vous pouvez maintenant vous connecter à votre ftp en anonyme uniquement.

ftp://localhost

Le répertoire personnel pouranonyme” est “/srv/ftp

Le répertoire personnel est le conteneur de vos données que vous rendez accessible par le FTP pour l'utilisateur “anonyme

Pour de nombreux utilisateurs, un accès anonyme est suffisant, notament dans les réseaux locaux.
D'autant plus que, par défaut, l'accès en anonyme sur le serveur est en lecture seul (modifiable, voir plus bas)

En revanche, il est tout à fait possible de créer des utilisateurs et leur spécifier des autorisations d'accès au FTP au besoin.

Paramétrage du serveur FTP

Ces 2 répertoires vous seront utile lors de la configuration du serveur.

  • /usr/share/doc/packages/pure-ftpd qui contient la documentation officielle de pure-ftp qui vous permettra d'aller plus loin.
  • /etc/pure-ftpd qui est le répertoire du programme où est stockée la base de données utilisateur et le fichier de configuration du serveur.

Création d'un groupe

“groupadd ftpgroup”, cela aura pour effet de créer un groupe “ftpgroup”.

Création d'un utilisateur

useradd -g ftpgroup -s /etc ftpuser” aura pour effet de créer l'utilisateur “ftpuser”.
L'option “-g” spécifie que l'utilisateur sera rattaché au groupe “ftpgroup

Note :

Cet utilisateur vous servira plus tard à attribuer des droits d'accès aux répertoires sur le serveur.

Création d'un utilisateur virtuel

Vous devez créer des utilisateurs virtuels.
Ces utilisateurs seront stocké dans une base de donnée géree par pure-ftpd.

A partir d'ici, toute maintenance de vos utilisateurs virutels se fera essentiellement par la ligne de commande “pure-pw

Pour créer un utilisateur virtuel

pure-pw useradd toto -u ftpuser -d /home/ftpusers/toto”.
(Cela va crée l'utilisateur “toto” avec pour répertoire personnel /home/ftpusers/toto)

Le répertoire “/ftpusers/toto” sera crée à la 1ere connexion de l'utilisateur (si vous l'avez spécifié dans le fichier de configuration, voir plus bas)

Par défaut, tous les répertoires personnels sont chrooté, c'est à dire que l'utilisateur ne peut pas sortir de son répertoire.

Inscrire l'utilisateur crée dans la base de donnée

pure-pw mkdb

Cette commande aura pour effet de créer la base de donnée et d'y inscrire les informations de l'utilisateur.

La base de donnée crée est stockée dans “/etc/pure-ftpd” et s'identifie par “pureftpd.pdb

pure-pw propose quelques commandes utiles :

  • voir le profil d'un utilisateur : pure-pw show toto
  • supprimer un utilisateur : pure-pw userdel toto
  • réinitialiser le mot de passe : pure-pw passwd toto

Autres commandes : pure-pw –help

Le fichier de configuration "Pure-ftpd.conf"

A partir de maintenant, il va falloir travailler avec le fichier de configuration du serveur.

Editez le fichier “pure-ftpd.conf” avec votre editeur de texte (vi par exemple)

Voici quelques éléments extraits du fichier de configuration :

  • Don't allow authenticated users - have a public anonymous FTP only.

(ne pas autoriser les utilisateurs authentifiés – accès anonyme uniquement)

  • AnonymousOnly» no

Passer la valeur en “no” pour un accès non anonyme

  • Disallow anonymous connections. Only allow authenticated users.”

Ne pas autoriser les connections anonymes.

  • NoAnonymous» yes

Mettre la valeur en “Yes” ou en “no” si vous souhaitez utiliser le compte anonyme et autres

  • Automatically create home directories if they are missing

(créer automatiquement le répertoire personnel de l'utilisateur si il n'existe pas)

  • #CreateHomeDir » yes

Par défaut le signe # signifie que cette valeure est un commentaire.
Supprimer le #

Cette option est intéressante puisque par défaut ( avec #) le répertoire personnel de l'utilisateur ne se crée pas.

PureDB user database
Base de données contenant les paramétrages des utilisateurs virtuels

# PureDB» /etc/pure-ftpd/pureftpd.pdb

Ici aussi la bdd est désactivée.
Supprimez le # pour que votre utilisateur virtuel préalablement crée puisse se connecter.

Chaque changement dans le fichier de conf nécéssite de réinitialiser le daemon de pure-ftp.

Réinitialiser le daemon

Dans la console, en “su
/etc/init.d/pure-ftpd restart

Problèmes

Si vous avez des problèmes d'accès avec vos utilisateurs virtuels

  • Ressaisissez le mot de passe (pure-pw passwd toto)
  • et valider la bdd (pure-pw mkdb)

Il existe de nombreuses autres options comme les ports du firewall à configurer, le nombre d'utilisateurs qui peuvent se connecter avec le même ip sur le serveur, le taux de dl, heures d'ouverture…

Toutes ces informations sont configurables dans le fichier de configuration du serveur ftp.

Active mode ou Passive Mode

Une excellente explication sur ce site :

http://3psilon.info/FTP-Actif-ou-Passif.html

Pour vulgariser :

Active Mode :

Le client FTP se connecte au serveur FTP. Il lui précise d'envoyer toutes les données sur un port >1024.

Cela signifie que pendant le temps du transfert, toutes connexions effectuées sur un port > à 1024 seront acceptées.

Pour utiliser ce mode, il faut activer la fonction “port forwading” de votre routeur.

Sur la capture, il est préciser d'ouvrir les ports 20 et 21 du serveur ftp qui est installé sur le pc ayant pour ip.

Enfin, pour tester la connexion à votre serveur, vous pouvez passer par ce site :

http://www.net2ftp.com/index.php

Passive Mode :

Le client se connecte au serveur et lui dit sur quel port il doit lui envoyer des donnnées.

En revanche, cette fois, c'est le serveur qui ouvre les ports > à 1024.

Pour utiliser ce mode, il vous reste à autoriser l'accès au serveur FTP dans le firewall Netfilter.

Dans le fichier de configuration de pureftpd, il est précisé d'ouvrir les ports 30000 à 50000 pour les connections passives, sans cela les utilisateurs ne pourraient pas se connecter au Serveur FTP.

Enlever le #.

Dans le firewall, cliquer sur “services autorisés” à gauche.
Dans la boite déroulante “Service à autoriser”, sélectionner “pureftpd” et “ajouter”.
Cliquer sur “avancé“.
Dans ports TCP, mettre les ports 30000:50000

Quelques plus

Spécifier une plage d'horaire pour accéder au FTP pour un utilisateur virtuel

  • pure-pw usermod toto -z hhmm hhmm
  • pure-pw mkdb” pour mettre à jour la bdd

Supprimer l'heure d'accès

  • pure-pw usermod toto -z ''
  • pure-pw mkdb” pour mettre à jour la bdd

Monter un répertoire externe

Par défaut, chaque utilisateur à son répertoire “chrooté”.

La commande “bind” permet de rattacher des répertoires en dehors du répertoire de l'utilisateur virtuel. (bind signifiant “rattacher/se rattacher”)

Ouvrir le fichier de configuration fstab en ligne de commande (/etc/fstab) et ajoutez cette ligne :

/répertoire_à_accrocher /chemin_d'accrochage_dans_l'arborescence none bind 0 0

Pour que le point de montage soit actif au redémarrage faire “mount -a” dans la console en root.

Cette fonction à une autre utilitée puisqu'elle essaye de monter tous les points de montage spécifiés dans “fstab”.

Ainsi, si un fichier est obsolète, il est possibke de désactiver la ligne par #

(Merci à tyrtamos d'alionet pour l'astuce)

Note :

Pour utiliser les liens symboliques il faut recompiler l'application avec l'option “–with-virtualchroot“ qui permettra d'utiliser les liens symboliques afin d'accéder à des répertoires situés en dehors du répertoire de l'utilisateur virtuel.

Attribuer des droits d'écriture pour votre utilisateur virtuel à des répertoires

Il suffit de changer le propriétaire du répertoire par celui de l'utilisateur physique préalablemennt crée “ftpuser

Ces changements sont à faire en ligne de commande.

Crée un répertoire “upload” dans “/home/ftpusers/toto” (md upload)

Vérifier ses droits

ls -l upload

ex ici :

drwxr-xr-x 2 root root 4096 déc 8 15:19 upload

d = directory

1er bloc = propriétaire

r= read
w=write
x=execution

2ème Bloc = groupe

r=read etc…

3ème Bloc = autres

1er root = utilisateur
2ème root = groupe

Pour changer le propritéaire nous allons utiliser la commande “chown” (change owner)

chown ftpuser upload

Le propriétaire du répertoire doit être ftpuser, le vérifier avec ls -l upload

Pour attribuer** ou enlever des droits sur un répertoire, utilisez la commande “chmod
*
chmod u+x fic1 = ajouter le droit d'éxecution à l'utilisateur pour fichier1
*
chmod g-r rep1 = supprimer le droit de lecteur au groupe pour repertoire1
*
chmod a= rep1** = suppression de tous les droits à tout le monde

Pour plus de détails sur chmod ou chown, ajouter -–help (2 tirets) à la fin de la commande.

pureftpd.conf (pour s'inspirer :))
  ############################################################
  #                                                          #
  #         Configuration file for pure-ftpd wrappers        #
  #                                                          #
  ############################################################
  
  ChrootEveryone              yes     # Pour empécher les utilisateurs de remonter l'arboresence !
  BrokenClientsCompatibility  no
  MaxClientsNumber            10      # Le max de client
  Daemonize                   yes     # Pour le lancer en arrière plan
  MaxClientsPerIP             3       # Max de connection par IP
  VerboseLog                  yes     # Pour des logs plus bavards
  AllowDotFiles               yes
  DisplayDotFiles             yes
  AnonymousOnly               no      # Pour activer/désactiver les comptes autres qu'Anonymous... (no = active ces comptes
  NoAnonymous                 yes     # Pour empécher les connexions anonymes
  SyslogFacility              ftp
  DontResolve                 yes     # Pour résoudre les noms des clients
  MaxIdleTime                 15
  PureDB                      /etc/pure-ftpd/pure.db
  PAMAuthentication           yes
  LimitRecursion              2000 8
  AnonymousCanCreateDirs      no
  MaxLoad                     4
  AntiWarez                   yes
  AnonymousBandwidth          10
  UserBandwidth               12
  Umask                       177:077
  MinUID                      100
  AllowUserFXP                no
  AllowAnonymousFXP           no
  ProhibitDotFilesWrite       yes
  ProhibitDotFilesRead        no
  AutoRename                  yes
  AnonymousCantUpload         yes
  AltLog                      clf:/etc/pure-ftpd/pureftpd.log
  MaxDiskUsage                99
  NoRename                    yes
  CustomerProof               yes
yast/serveur_pure_ftpd.txt · Dernière modification : 2018/11/17 12:54 de 127.0.0.1