Forums d'entraide informatique - Astuces - Conseils
Des experts à votre écoute pour tous vos dysfonctionnements
Vous n'êtes pas identifié.
#1 08-10-2008 18:39:07
- Admin
- Administrateur
- Date d'inscription: 30-07-2008
- Messages: 683
Proftpd : votre serveur FTP
Proftpd : votre
serveur FTP
Lorsque vous souhaitez échanger des fichiers avec plusieurs utilisateurs ou simplement mettre des archives à la disposition des visiteurs de votre ou vos site(s), la meilleure solution est d'installer un serveur FTP. Bien sûr, vous pourriez mettre à disposition des archives via HTPP et l'intéressante fonctionnalité de fancy indexing d'Apache mais si vous recherchez la souplesse, FTP est la réponse.
En effet, un serveur FTP inclut de base toutes les fonctionnalités permettant la gestion des utilisateurs et des droits d'accès. De plus, il vous sera possible d'autoriser le téléchargement de fichiers de la part des clients vers le serveur, chose plus difficilement réalisable avec un serveur Apache et PHP, bien qu'étant parfaitement possible.
La solution FTP reste la moins contraignante pour l'administrateur et pour le visiteur. Il existe un grand nombre de logiciels serveurs pour GNU/Linux mais le choix se résume habituellement autour de wu-ftpd ou de proftpd. Notez qu'un autre serveur gagne de jour en jour davantage de popularité. Il s'agit de PureFTPd qui est basé sur Troll-FTPd. Pour cet article, nous avons choisi proftpd car il s'agit d'une solution classique et qu'il est relativement facile à configurer, tout en restant efficace et souple. En effet, sa configuration repose sur un seul fichier de configuration dont la syntaxe n'est pas sans rappeler celle du fichier httpd.conf d'Apache.
Installer proftps sur votre distribution Debian n'est pas un problème, la simple commande apt-get install proftpd lancée en tant qu'utilisateur root suffira :
root@egon:/home/denis# apt-get install proftpd Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be
installed:
proftpd
0 packages upgraded, 1 newly installed, 0 to remove and 39 not upgraded.
Need to get 357kB of archives. After unpacking 897kB will be used.
Get:1 http://ftp.fr.debian.org stable/main proftpd
1.2.0pre10-2.0potatol [357kB]
Fetched 357kB in 4s (74.8kB/s)
Sélection du paquet proftpd précédemment déselectionné.
(Lecture de la base de données ... 29811 fichiers
et répertoires déjà installés.)
Dépaquetage de proftpd (à partir de .../proftpd_1.2.0pre10-2.0potatol_i386.deb) Paramétrage de proftpd (1.2.0pre10-2.0potatol)
Le script d'installation associé au package s'arrête ensuite pour vous poser une question. Souhaitez- vous autoriser les accès anonymes sur votre serveur FTP ? Dans la plupart des cas, la réponse sera oui et les utilisateurs inconnus pourront accéder aux fichiers mis à leur disposition sur votre site :
Enable anonymous ftp access [y/N]? y
Addiing ftp user to the system ...
Adding system user ftp...
Adding new user ftp (101) with group nogroup. Creating home directory /home/ftp. /usr/share/doc/proftpd/examples/welcome.msg -> /home/ftp/welcome.msg
Editing /etc/proftpd.conf
Starting professional ftp daemon: proftpd.
La procédure d'installation va également créer pour vous un utilisateur ftp.nogroup et un message d'accueil exemple placé automatiquement dans /home/ ftp. Le fichier en question, welcome.msg, pourra être personnalisé par vos soins. Nous verrons cela un peu plus loin dans l'article. Enfin, le démon du serveur FTP est lancé en utilisant les valeurs du fichier de configuration par défaut. Vous pouvez immédiatement faire un test depuis une autre machine (ou la même) :
Proftpd
Name (egon:denis): anonymous
Password:
230-Welcome, archive user anonymous@morgane !
230-
230-The local time is: Thu Jan 17 18:00:28 2002 230-
230-This is an experimental FTP server. If have any unusual problems,
230-please report them via e-mail to <root@egon>. 230-
230 Anonymous access granted, restrictions apply. Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
Nous nous logons ici en tant qu'utilisateur anony- me (anonymous), le mot de passe demandé est alors une adresse email utilisant une syntaxe correcte. Nous arrivons sur le serveur FTP et sommes accueillis par un message contenu dans le fichier welcome . msg. Enfin, nous avons la main et pou- vons explorer le contenu du serveur dans la mesure où nos droits le permettent.
Le fichier de configuration
Nous l'avons dit plus haut, un fichier de configura- tion a déjà été installé en même temps que le packa- ge. Votre serveur est fonctionnel, mais il est impor- tant de connaître la syntaxe du fichier de configura- tion si vous désirez personnaliser l'installation ou les fonctionnalités du serveur.
Voyons dans un premier temps ce qui est configuré par défaut. Le fichier de configuration est /etc/prof tpd.conf. Vous y trouverez ceci :
• Dans un premier temps, tous les paramètres concernant le serveur lui-même et la manière dont il doit fonctionner :
ServerName "Debian"
ServerType standalone
DeferWelcome off
La première ligne détermine le nom du serveur tel qu'il s'affichera dans la bannière sur serveur. En plaçant ici "Egon World" en lieu et place de "Debian", le visiteur verra
Connected to egon.
220 ProFTPD 1.2.0prel0 Server (Egon World) [egon] Name (egon:root):
La seconde ligne détermine le mode de fonctionne- ment du démon proftpd. Deux valeurs sont pos- sibles, standalone pour démarrer un démon et attendre les connexions sur le port FTP ou inetd pour ne rien lancer et demander au super démon inetd de lancer proftpd lorsqu'une connexion est établie.
Enfin, la dernière ligne active ou désactive le fait de retirer le contenu donné par la directive ServerName de la bannière. Ainsi DeferWelcome on n'affichera plus que :
220 ProFTPD 1.2.0prel0 Server ready.
• Viennent ensuite les paramètres "cosmétiques"
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
AllowOverwrite on
La première directive permet de choisir un arrange- ment des lignes entre la RFC 959 et la 2228. Il faut cependant savoir que le muit iiine de la RFC2228 est beaucoup plus compatible avec les navigateurs Web que la 959. DefaultServer est une option utile dans le cas où vous souhaiteriez travailler avec des serveurs virtuels à la manière d'Apache. Nous verrons cette option plus loin au moment où nous apprendrons à configurer de tels serveurs. Pour l'heure, activons cette directive sans raison apparente.
La troisième ligne comprend une directive, cette fois réellement "cosmétique" puisqu'en l'activant, vous permettez au visiteur de voir que tel fichier ou tel répertoire est un lien symbolique ou non. Pour finir avec ce paragraphe, Al 1 owOverwr i t e permet à un visiteur d'écraser un fichier (si ses droits le permet- tent). Par défaut, un client FTP ne peut pas écraser un fichier existant, cette option permet donc de passer outre.
DisplayLogin welcome .msg
DisplayFirstChdir .message
LsDefaultOptions "-1"
Toujours des paramètres permettant d'augmenter la convivialité pour les clients. Nous configurons ici, respectivement, le nom du fichier contenant le mes- sage d'accueil au moment du login, le nom du fichier d'information à afficher lorsque l'utilisateur
entre dans un répertoire du serveur FTP et une (ou plusieurs) option par défaut pour le listage des fichiers.
• Nous avons ensuite la gestion des temporisations avec :
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
Les trois directives déterminent le temps limite pour un client connecté qui n'engage pas de transferts, pour un transfert de données "bloqué" (stalled) et pour un client qui ne fait rien. Les valeurs sont données en nombre de secondes.
• Enfin, pour en finir avec les paramètres globaux, il nous reste à utiliser quelques directives importantes
Port 21
Umask 022 022
Maxlnstances 30
User nobody
Group nogroup
Nous définissons tout d'abord le port sur lequel le serveur FTP doit attendre les connexions. Ici, il s'agit du classique port 21, comme le définit le standard. Mais vous auriez tout aussi bien pu choisir n'importe quel autre port disponible sur votre système.
Umask permet de définir des permissions automatiques pour les fichiers et répertoires créés lors d'une session FTP. Le premier argument de la directive concerne les fichiers et le second les répertoires. 022 est un excellent masque par défaut puisqu'il permet de définir que les fichiers et répertoires créés ne pourront être lus ou exécutés par les utilisateurs du même groupe ou par les autres utilisateurs. Il s'agit d'une précaution définie par défaut : autant en profiter.
Maxlnstances permet de définir le nombre maximal de processus fils qui devront être lancés par le serveur FTP. Plus votre configuration matérielle est légère et plus votre connectivité Internet est basse, plus ce chiffre devra être petit afin d'éviter tout engorgement de la machine. On retrouve ce genre de paramètre dans le fichier de configuration d'Apache.
Enfin, user et Group définissent un nom d'utilisateur et un nom de groupe sous lesquels doivent être exécutés les processus du serveur FTP. Un utilisateur sans aucun privilège particulier est traditionnellement utilisé afin d'éviter tout problème de sécurité majeur. Ne vous inquiétez pas quant à la création de cet utilisateur, la procédure d'installation du package proftpd de Debian l'aura fait pour vous.
Passons maintenant aux paramètres de gestion des archives. A l'instar du fichier de configuration d'Apache, on utilise des directives entre < et > afin de déterminer la portée des instructions. Voyons directement un exemple avec :
<Directory /*>
AllowOverwrite on
</Directory>
Ici, nous définissons un bloc d'instructions portant sur les répertoires (Directory /*). Nous fermons le bloc d'instruction avec un tag (marqueur) /Directory. Toutes les instructions se trouvant entre ces deux marqueurs ne s'appliqueront qu'à l'objet concerné. Ici, nous utilisons la directive AllowOverwrite on afin d'autoriser l'écrasement des fichiers.
Pour l'heure, seuls les utilisateurs possédant un compte sur la machine serveur peuvent accéder au FTP en utilisant leur identifiant sur la machine et leur mot de passe correspondant :
• Nous lançons un client FTP sur egon (le serveur)
denis@morgane:- # ftp egon
Connected to egon.
220 ProFTPD 1.2.0prel0 Server (Egon World) [egon]
• Nous nous identifions comme l'utilisateur moi et utilisons le mot de passe correspondant :
Name (egon:denis): moi
331 Password required for moi. Password:
230 User moi logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
• Enfin, nous listons le contenu du répertoire dans lequel nous arrivons. Il s'agit de notre répertoire "maison" en tant qu'utilisateur moi :
ftp> ls
200 PORT command successful.
Opening ASCII mode data connection for file list.
drwxr-x--- 3 moi users 4096 Dec 19
14:18 irclogs
226-Transfer complete.
226 Quotas off
• En tant qu'utilisateur du système distant. nous pouvons naviguer dans le système de fichiers comme si nous étions en face de la machine.
ftp> ls /
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
drwxr-xr-x 2 mot root 4096 Aug 29 12:15 bin drwxr-xr-x 3 root root 1024 Dec 3019:21 boot
lrwxrwxrwx 1 root root 12 Apr 25 2001 bzImage -> boot/bzImage
drwxr-xr-x 2 root root 4096 Jul 5 2000 cdrom drwxr-xr-x 5 root root 20480 Jan 21 10:14 dey [...]
drwxrwxrwx 3 root root 4096 Jan 2110:29 tmp
drwxr-xr-x 16 root root 4096 Jun 22 2001 usr
drwxr-xr-x 15 root root 4096 Apr 11 2001 var
lrwxrwxrwx 1 root root 19 Apr 11 2001
vmlinuz -> boot/vmlinuz-2.2.17
226-Transfer complete.
226 Quotas off
Ceci n'est pas une très bonne idée en soi. En effet, un utilisateur client du FTP n'est pas forcément une personne de confiance (sinon nous lui aurions per- mis un login avec ssh par exemple). Le laisser ainsi accéder en lecteur au système de fichiers dans sa presque intégralité n'est pas vraiment sage de notre part. proftpd met à notre disposition une directive dans le fichier de configuration qui permet d'éviter ce genre de chose et d'ainsi limiter l'accès de l'utili- sateur à son seul répertoire personnel. Ajoutez pour cela dans les paramètres globaux du fichier de configuration la ligne suivante
DefaultRoot
Nous définissons une racine par défaut comme étant le répertoire de l'utilisateur en cours. Il nous faut bien sûr redémarrer le serveur suite à la modi- fication du fichier avec :
root@egon:-# /etc/init.d/proftpd restart Restarting prof tpd daemon...done.
Résultat, l'utilisateur ne peut plus remonter dans les répertoires supérieurs
Proftpd
ÉftâMDF
230 User moi logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls /
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
drwxr-x--- 3 moi users 4096 Dec 19 14:18
irclogs
226-Transfer complete.
226 Quotas off
ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
drwxr-x--- 3 moi users 4096 Dec 19 14:18
irclogs
226-Transfer complete.
226 Quotas off
TP
Bien qu'il n'obtienne aucun message d'erreur ou d'avertissement, il ne pourra pas accéder à d'autres répertoires que le sien et ceux s'y trouvant. Il perce- vra ainsi son répertoire comme étant la racine du système de fichiers.
Les utilisateurs anonymes
Dans bien des cas, le but d'un serveur FTP n'est pas de permettre aux utilisateurs du système de récupé- rer leurs fichiers ou de parcourir leurs répertoires à distance. Le plus souvent, un serveur FTP permet de mettre des archives et des fichiers à la disposition de tous. En réalité, "tous" n'existe pas dans un sys- tème de type Unix. De ce fait, lorsqu'un serveur FTP est ouvert à tous, on l'utilise en réalité en tant qu'utilisateur anonymous ou f t p.
Ceci n'est guère visible si vous utilisez un navigateur Web pour accéder aux serveurs FTP publics. En fait, votre navigateur utilise le compte anonymous de manière transparente afin de vous éviter la pro- cédure de connexion et vous afficher la liste des fichiers mis à votre disposition.
Voici tout d'abord les directives utilisées pour créer un accès anonyme sur votre serveur :
<Anonymous -ftp> User ftp
Group nogroup
UserAlias anonymous ftp
La définition d'un accès de ce type se fait par les directives <Anonymous> et </Anonymous>. La première débute la portée du code de configuration et la seconde la ferme. La première directive prend en compte un paramètre qui est le répertoire racine du serveur. Ici, il n'est pas nécessaire de faire usage de DefaultRoot, un serveur anonymous limite automatiquement le parcours des répertoires à la racine du serveur. On dit alors que le serveur est chrooté. Car on change la racine comme le fait la commande
chroot.
On utilise ensuite les directives user et Group pour donner une identité de fonctionnement du serveur. Ici, pas de surprise, l'utilisateur ftp est utilisé. On détermine ensuite des alias permettant à l'utilisateur anonymous de se loguer sur le serveur FTP en utilisant les noms anonymous et ftp. Il n'y aura pas pour eux de mot de passe réel à donner. ils devront néanmoins compléter la demande qui leur sera faite par une adresse email à la syntaxe valide. Ce dernier point reste invisible pour les visiteurs utilisant un navigateur Web puisque ce dernier s'en charge.
Nous limitons également le nombre de clients simultanés pouvant se connecter à notre serveur de manière anonymous. Il ne faudrait pas, en effet, gêner les utilisateurs du système en leur bloquant l'accès si trop d'utilisateurs anonymes sont présents et génèrent des processus fils.
DisplayLogin et DisplayFirstChdir permettent
de définir des fichiers contenant le message d'accueil sur le serveur et dans les répertoires.
Enfin, il s'agit d'un accès public, nous devons donc limiter les manipulations et interdire toute écriture sur le serveur. Nous utilisons tout d'abord le marqueur <Directory *> pour désigner tous les réper-
Si la syntaxe permettant de limiter les droits des utilisateurs vous rappelle quelque chose, ne cherchez pas. Le fichier de configuration d'Apache utilise précisément la même. C'est également en cela que proftpd s'avère être un bon choix.
Et voilà, relancez le service proftpds comme précédemment et votre serveur FTP pour accueillir les visiteurs anonymes et vous pourrez mettre vos archives à disposition de tous dans le répertoire /home / ftp.
Cordialement
L'équipe Parisdepannage.fr
Hors ligne
2008 Parisdepannage |Plan du site|Forums |Blog|Lexique ![]()