Table des matières

Installation et configuration de Pure-FTPd

Présentation

On peut avoir besoin d’installer un serveur FTP pour de multiples raisons.

Pure-ftpd permet de mettre en place des utilisateurs virtuels, chrootés, avec des options de restrictions propres à chaque utilisateur.

Très simple à configurer, il comporte de nombreuses fonctions, comme :

Téléchargement

http://www.pureftpd.org/project/pure-ftpd/download

Installation

La sécurité d'abord

Le serveur peut fonctionner avec séparation de privilèges pour une sécurité paranoïaque.

Il peut même fonctionner totalement 100% non-root, avec émulation chroot() et comptes virtuels.

La transmission des mots de passe et des commandes en clair peut être évitée : Pure-FTPd supporte optionnellement une connexion avec couche de cryptage SSL/TLS utilisant la bibliothèque OpenSSL.

Pure-ftpd fonctionne sur votre serveur

Le même code source se compile et fonctionne sous Linux, OpenBSD, NetBSD, FreeBSD DragonflyBSD, Solaris, Tru64, Darwin, Irix, HPUX, AIX et iPhone.

Pure-ftpd parle votre langue

Tous les messages du serveur sont traduits en anglais, allemand, roumain, français, polonais, espagnol, danois, néerlandais, italien, portugais brésilien, slovaque, coréen, suédois, norvégien, russe, chinois traditionnel, chinois simplifié, tchèque, turc, hongrois et en catalan.

Un excellent choix pour les débutants

Un débutant peut installer un serveur Pure-ftpd en 5 minutes. Il suffit d'installer le package, de taper “pure-ftpd &” et … c'est tout. Le serveur s'exécute et les clients peuvent commencer à se connecter.

Inutile d'examiner un fichier de configuration long et complexe, où toute erreur pourrait avoir des implications de sécurité et de fiabilité. Pure-ftpd utilise de simples commutateurs de ligne de commande pour activer les fonctionnalités voulues.

On peut limiter le nombre d'utilisateurs simultanés, limiter leur bande passante, cacher des fichiers système (chroot ), placer des ratios d'upload/download et modérer les nouveaux uploads. Des messages personnalisés peuvent s'afficher à la connexion en temps (en changeant les fichiers “fortune”) et quand un utilisateur entre dans un nouveau répertoire. Pour éviter de remplir les disques, on peut définir un pourcentage maximal → tout nouvel ajout sera rejeté une fois ce pourcentage est atteint.

Le protocole mis en œuvre est FXP (serveur à serveur). Il peut être disponible pour tout le monde, ou seulement pour les utilisateurs authentifiés.

Pure-ftpd fournit une protection contre les petits malins qui utilisent des outils force-brute qui tentent de découvrir des répertoires cachés. L'accès anonyme est sécurisé par défaut. Par exemple, les utilisateurs ne peuvent pas accéder aux fichiers préfixés d'un point (.Bash_history, .Rhosts, …) sauf activation explicite

Et pour voir qui fait quoi, la commande pure-ftpwho montre dasn une table les sessions actives, la bande passante prise par tous les utilisateurs, quels fichiers ils téléchargent, de là où ils viennent, etc.

Une grande flexibilité pour les fournisseurs de services Internet et d'hébergement

Documentation

Le serveur a été conçu pour être sécurisé dans la configuration par défaut, il n'a pas de vulnérabilité connue, il est vraiment trivial à mettre en place et il est spécialement conçu pour les noyaux modernes. Il a été porté avec succès sur Linux, FreeBSD, DragonflyBSD, NetBSD, OpenBSD, ISOS, MirBSD, BSDi, Solaris, Darwin, Tru64, Irix, AIX, HPUX et iPhone.

Les caractéristiques comprennent : répertoires chroot()és et / ou répertoires home virtuels chroot()és, domaines virtuels, 'ls' de base, système anti-warez, ports configurables pour les téléchargements passifs, protocole FXP, limitation de bande passante, ratios, authentication basée sur LDAP / MySQL / PostgreSQL, fichiers fortune, fichiers journaux Apache-like, mode autonome rapide, rapport d'état texte / HTML / XML en temps réel, utilisateurs virtuels, quotas virtuels, séparation de privilèges, SSL/TLS et plus.

Compilation

Dans sa forme actuelle, pure-ftpd utilise certains appels système spécifiques à l'OS. Et bien que certains travaux de portabilité vers d'autres systèmes d'exploitation aient été faits, seuls Linux, FreeBSD, NetBSD, OpenBSD, ISOS, MirBSD, BSDi, DragonflyBSD, Darwin, Solaris, Tru64, Irix, HPUX et AIX sont connus pour fonctionner. D'autres systèmes d'exploitation peuvent avoir besoin quelques ajustements. Avec Linux, une distribution moderne devrait être ok.

Étape 1 (optionnel mais recommandé)

Créer un utilisateur particulier, sans privilége et un groupe appelé _pure-ftpd, sans shell valide. Ne pas l'utiliser pour quoi que ce soit d'autre, y compris les utilisateurs virtuels FTP.

sudo groupadd _pure-ftpd
sudo useradd -g _pure-ftpd -d /var/empty -s /etc _pure-ftpd

Si avoir un utilisateur dont le nom commence par un trait de soulignement vous ennuie, vous pouvez également l'appeler pure-ftpd, sans le trait de soulignement.

Étape 2

Si CDialog ou Xdialog est installé sur le système, essayer la commande suivante pour compiler et installer pure-ftpd :

make -f Makefile.gui

Sinon ou si vous préférez la manière conventionnelle, c'est ici :

./configure
make install-strip

Et voila! Le logiciel est maintenant installé dans /usr/local/sbin/pure-ftpd

Étape 3

Pour lancer le serveur, il suffit de taper la commande suivante :

/usr/local/sbin/pure-ftpd &

Si vous avez installé un paquet binaire (RPM, SLP, Debian),on peut utiliser la commande suivante :

/usr/sbin/pure-ftpd &

Le serveur est prêt. Il suffit de taper

ftp localhost

pour le tester.

Pour exécuter automatiquement le serveur au démarrage du système, ajouter la commande précédente dans /etc/rc.d/rc.local ou /etc/rc.d/boot.local. Ne pas oublier le signe '&'.

<note tip>Pour compiler sous Irix, vous devez taper ceci avant de taper ./configure:

export CC=cc
export CFLAGS=-I/usr/freeware/include
export LDFLAGS=-L/usr/freeware/lib32

Pour compiler sous Solaris, utiliser Make de GNU , pas celui de Solaris. Ensuite, faire :

export PATH=/usr/ccs/bin:$PATH
export MAKE=gmake

Pour désinstaller Pure-FTPd, faire :

./configure
make uninstall

</note>

Compilation avancée

Le script “./configure” accepte quelques arguments à ajouter avant la compilation :

commutateurs --without-

Autres notes

D'autres options autoconf traditionnelles sont bien sûr reconnu, en particulier :

Pour info, les paquetages RPM binaires de Pure-FTPd sont configurés avec la ligne de commande suivante :

./configure --with-everything --with-paranoidmsg --without-capabilities --with-virtualchroot

Les paquetages RPM sont également compilés avec –without-pam pour améliorer leur portabilité.

Installation autonome

Il s'agit de la méthode recommandée pour démarrer le serveur.

Sauf si vous compilez le serveur avec “–without-standalone”, lancer le serveur est aussi facile que de taper :

/usr/local/sbin/pure-ftpd &

Dans les exemples suivants, nous supposons que le fichier 'pure-ftpd' est situé dans /usr/local/sbin. Il s'agit de la valeur par défaut si vous avez compilé le serveur depuis l'archive du code source. Mais comme je l'ai dit plus tôt dans ce document, si vous avez installé un paquet binaire (RPM, SLP, deb, tgz), le serveur peut être installé dans /usr/sbin/. Il suffit donc de remplacer '/usr/local/sbin/pure-ftpd' par '/usr/sbin/pure-ftpd'.

Lorsque la commande précédente est exécutée, le serveur écoute les connexions entrantes sur chaque interface, toutes les adresses IP et le port FTP standard (21). Si votre système a des adresses IPv6, ils devraient travailler ainsi.

Maintenant, si vous voulez écouter une connexion entrante sur un port non standard, suffit d'ajouter “-S” et le numéro de port :

/usr/local/sbin/pure-ftpd -S 42

Les noms de services sont également autorisés ('S-smtp “et le démon acceptera les connexions sur le port SMTP (25). Très rare, mais il faut que tout le monde soit content, même les esprits perturbés).

Et maintenant, si votre système possède de nombreuses adresses IP et que vous voulez que le serveur FTP soit joignable sur une seule de ces adresses, disons 192.168.0.42 ? Il suffit d'utiliser la ligne de commande suivante :

/usr/local/sbin/pure-ftpd -S 192.168.0.42,

La virgule finale est importante, ne l'oubliez pas. En fait, c'est un raccourci pour :

/usr/local/sbin/pure-ftpd -S 192.168.0.42,21

Si vous préférez des noms d'hôte aux adresses IP, c'est votre choix :

/usr/local/sbin/pure-ftpd -S ftp.example.com,21

Les adresses IPv6 sont bien sûr prises en charge.

Avec des lignes de commande précédentes, le serveur va tourner dans la configuration par défaut. Les connexions FTP anonymes seront autorisées s'il ya un compte système appelé 'ftp' et chaque utilisateur de votre système sera en mesure d'accéder au serveur FTP en utilisant son couple login / password.

Si vous devez modifier cette configuration par défaut, d'autres lignes de commande options peuvent être ajoutées. Par exemple:

/usr/local/sbin/pure-ftpd -c 50 &

ou

/usr/local/sbin/pure-ftpd -S ftp.example.com,21 -c 50 &

Et seulement 50 connexions simultanées seront autorisées. Pour découvrir quelles options sont disponibles passer directement au chapitre «Options» ci-dessous. Si le serveur fonctionne parfaitement pour vous en mode autonome, vous n'avez pas besoin de lire le chapitre suivant sur les super-servers. Mais lisez les options. '-m' and '-C' sont recommandées. '-D' est également un bon choix si vous (ou vos clients) utiliser des clients broken. S'il vous plaît lisez la suite.

Lorsque vous exécutez 'ps auxw|grep pure-ftpd', le résultat ressemble à ceci :

root     15211  0.1  0.3  1276  452 ?        S    13:53   0:00 pure-ftpd [SERVER]
root     15212  0.1  0.5  1340  672 ?        S    13:54   0:00 pure-ftpd [IDLE]
root     15214  0.0  0.5  1340  672 ?        S    13:56   0:00 pure-ftpd [DOWNLOADING]

Pour faciliter les scripts, le fichier '/var/run/pure-ftpd.pid' est créé et il contient toujours le PID du processus serveur principal.

Si vous voulez arrêter le serveur, il vous suffit de tuer les processus :

pkill pure-ftpd

Bien sûr, ne pas utiliser -9 sauf si le serveur est complètement coincé. -9 Ne laisse pas la moindre chance au processus pour sortir proprement et ne devrait jamais être utilisée, sauf si il n'y a absolument rien d'autre à faire.

< 50% 10em - >
code action
-0 quand un fichier est uploadé et qu'il y a déjà une version précédente du fichier avec le même nom, l'ancien fichier ne sera ni supprimé, ni tronqué. L'upload aura lieu dans un fichier temporaire et une fois le téléchargement terminé, le passage à la nouvelle version sera atomique. Par exemple, quand un grand script PHP est cours d'upload, le serveur Web fournit toujours l'ancienne version et passera immédiatement à la nouvelle dès que le dossier complet aura été transféré
-1 enregistre le PID de chaque session dans la sortie syslog
-4 n'écouter que les connexions IPv4
-6 ne pas écouter pas IPv4, écouter seulement IPv6
-a <gid> Les utilisateurs authentifiés pourront accéder à leur répertoire personnel et rien d'autre (chroot). Ceci est particulièrement utile pour les utilisateurs sans accès au shell, par exemple, les services WWW-hosting partagés par plusieurs clients. Seul membre du groupe numéro <gid> auront libre accès au système de fichiers entier. Donc ajoutez un groupe «staff», «admin» ou «ftpadmin” et mettez-y vos utilisateurs de confiance. <gid> est un numéro de groupe NUMERIQUE, et non pas un nom de groupe. Cette fonctionnalité est principalement conçu pour les utilisateurs du système, et non pour les utilisateurs virtuels