Il peut y avoir plusieurs avantages à installer un serveur FTP :
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”.
Il existe plusieurs façons d'installer pure-ftpd.
Soit par :
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
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
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.
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 pour “anonyme” 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.
Ces 2 répertoires vous seront utile lors de la configuration du serveur.
“groupadd ftpgroup”, cela aura pour effet de créer un groupe “ftpgroup”.
“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.
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”
“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.
“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 :
Autres commandes : pure-pw –help
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 :
(ne pas autoriser les utilisateurs authentifiés – accès anonyme uniquement)
Passer la valeur en “no” pour un accès non anonyme
Ne pas autoriser les connections anonymes.
Mettre la valeur en “Yes” ou en “no” si vous souhaitez utiliser le compte anonyme et autres
(créer automatiquement le répertoire personnel de l'utilisateur si il n'existe pas)
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.
Dans la console, en “su“
“/etc/init.d/pure-ftpd restart“
Si vous avez des problèmes d'accès avec vos utilisateurs virtuels
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.
Une excellente explication sur ce site :
http://3psilon.info/FTP-Actif-ou-Passif.html
Pour vulgariser :
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 :
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
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.
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.
############################################################ # # # 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