• Aucun résultat trouvé

Le serveur FTP ProFTP

Dans le document Présentation des serveurs DNS DHCP FTP (Page 15-19)

Nous allons utiliser la version 1.2.5 de ProFTP.

5.1 Présentation

Le service FTP est très souvent mis à la disposition des utilisateurs pour faire des téléchargements en « download » et moins souvent en « upload ». Cependant, il est plus facile de mettre en place un répertoire de téléchargement de manière sécurisé avec un serveur FTP qu'avec un serveur web et php. Il permet aussi de gérer plus finement l'occupation de la bande passante.

5.2 Installation du serveur ProFTP sous Debian 3.0

Dans un shell, installez les paquetages proftpd proftpd-doc :

root@tux# apt-get install proftpd proftpd-doc

Mettre le serveur en mode « standalone », vous pouvez avoir un accès anonyme au serveur FTP en répondant par l'affirmative aux questions de l'installeur debian. Demandez à l'installeur de modifier le fichier proftpd.conf pour nous.

Le fichier de configuration de ProFTP est /etc/proftpd.conf.

La documentation se trouve dans /usr/share/doc/proftpd-doc/.

Le démon dhcp se gère avec les commandes :

/etc/init.d/proftpd {start|stop|restart|reload|status}.

Si vous avez activé l'accès ftp anonyme, le répertoire de cet accès sera dans /home/ftp.

5.3 Installation du serveur ProFTP sous Mandrake 9.1

Dans un shell, installez les paquetages proftpd proftpd-anonymous : root@tux#urpmi proftpd proftpd-anonymous

Les fichiers de configuration de ProFTP sont /etc/proftpd.conf et /etc/proftpd-anonymous.conf.

La documentation se trouve dans /usr/share/doc/proftpd/. Le démon dhcp se gère avec les commandes :

/etc/init.d/proftpd {start|stop|restart|reload|status}.

Si vous avez activé l'accès ftp anonyme, le répertoire de cet accès sera dans /var/ftp.

5.4 Création de fichier proftpd.conf

Tout d'abord, il faut vérifier l'existence du fichier /etc/ftpusers. Tous les comptes listés dans ce fichier ne seront pas autorisés à se connecter au service ftp.

Nous allons nous placer dans le cas suivant :

les utilisateurs ont un accès ftp à leur compte, ils peuvent lister le contenu de leur compte mais il ne sont autorisés qu'à écrire dans le répertoire public_html (répertoire ou ils peuvent déposer leur page web et que apache gère lors d'un accès du type :

http://monserveur/~dartoiso/). C'est un choix de ma part, vous pouvez en changer !

Un accès ftp anonyme sera disponible (pour stocker tous les utilitaires Windows et

GNU/Linux, les images iso de distributions, etc...) en téléchargement (dowload). Les utilisateurs ont aussi la possibilité « d'uploader » des fichiers dans le répertoire incoming mais ils ne peuvent lister le contenu de ce répertoire (le tri de ce qui a été téléchargé revient à l'administrateur du ftp).

Il faut créer l'arborescence de notre serveur ftp avec les commandes suivantes (adapté à une debian, pour une mandrake le répertoire racine est /var/ftp) :

root@tux#cd /home/ftp

root@tux#mkdir -p pub/linux pub/windows incoming root@tux#chown -R ftp:nogroup /home/ftp/

La syntaxe du fichier de configuration est assez proche de celle d'apache. Le fichier de configuration peut être « coupé » en « contexte de configuration » :

server config : tout ce qui concerne les paramètres de fonctionnement du serveur,

Global : tous les réglages par défaut des entités qui suivent,

<Anonymous> : le contexte pour le serveur anonyme,

<VirtualHost> : le contexte d'un hôte virtuel (hébergement de plusieurs serveurs FTP sur une seule machine),

<Limit> : permet de limiter les commandes ou l'accès à un contexte de configuration,

<Directory> : permet de configurer l'accès à des répertoires.

Server config ne sera pas entre crochet car il est implicite.

Nous allons donc avoir le fichier de configuration /etc/proftpd.conf suivant :

# Fichier de configuration du serveur ProFTP MultilineRFC2228 on DefaultServer on AllowOverwrite on

TimeoutNoTransfer 600 TimeoutStalled 600 TimeoutIdle 1200

LsDefaultOptions "-l"

MaxLoginAttempts 3

DefaultRoot ~

# Décommenter cette ligne si vous utilisez NIS ou

# LDAP pour valiser les mots de passe :

#PersistentPasswd off

<Limit READ WRITE>

DenyAll </Limit>

</Directory>

<Directory ~/public_html>

<Limit WRITE STOR RNFR DELE>

AllowAll </Limit>

</Directory>

Les commentaires commencent avec le signe « # ».

ServerName représente le nom du serveur qui s'affiche à la connexion.

ServerType indique le mode de fonctionnement du serveur (standalone, inetd). Standalone est plus adapté car il permet de sécuriser le serveur.

DeferWelcome on permet de na pas afficher de messages de bienvenue tant que l'utilisateur ne s'est pas authentifié.

ServerIdent off : ne renvoie pas d'information sur le serveur lorsqu'une connexion est établie, juste

« FTP server ready ».

ShowSymlinks on montre les liens symboliques.

MultilineRFC2228 permet une meilleur compatibilité avec les clients http.

DefaultServer on permet de supporter les serveurs virtuels.

AllowOverwrite on permet de réécire les fichiers.

Tous les paramètres Timeout permettent de couper une connexion s'il n'y a pas d'activité.

MaxLoginAttempts limite le nombre de tentatives de connexion erronées.

DefaultRoot ~ permet d'enfermer chaque utilisateur dans son répertoire racine.

Port 21 : le port standard d'écoute du serveur FTP.

Dans un serveur virtuel, vous pouvez changer ce port.

MaxInstances limite le nombre de processus fils simultanées (protection DOS, ne fonctionne qu'en mode standalone).

User et Group indique avec quels droits le serveur FTP doit tourner (le moins possible).

Pour tous les répertoires sous la racine du serveur FTP, les masques seront de 022 pour les fichiers et 022 pour les répertoires (soit rwxr-xr-x).

Pour le répertoire personnel de chaque utilisateur (<Directory ~>), nous allons limiter toutes les opérations de lecture/écriture (<Limit READ WRITE>) avec le paramètre DenyAll.

Puis pour le répertoire public_html, nous limitons le nombre d'actions possibles (<Limit WRITE STOR RNFR DELE>), celles-ci seront exécutables par tout le monde (AllowAll).

Je vous conseille très vivement de consulter la documentation de ProFTP et en particulier la commande Limit qui détaille toutes les commandes FTP.

<Anonymous ~ftp> DisplayFirstChdir .message

<Directory *>

Nous créons ici notre serveur ftp anonyme.

Les fichiers auront les droits de ftp et du group nogroup.

UserAlias permet de mettre un alias à l'utilisateur ftp, ici ce sera anonymous.

RequireValidShell off : Les personnes qui se connectent au serveur ftp anonyme n'ont pas besoin d'avoir un shell valide sur la machine.

MaxClients limite le nombre de connexions simultanées. MaxClientsPerHost limite le nombre de connexion simultanées d'un même utilisateur.

DisplayLogin affiche le message welcome.msg à la connexion. DisplayFirstChdir affiche le fichier .message qui se trouve dans le répertoire de destination à chaque changement de répertoire.

Nous limitons l'accès en écriture à tout le répertoire du ftp anonyme. Pour le répertoire incoming et ces sous-répertoires, nous limitons d'abord tout puis nous autorisons seulement la commande STOR (c'est à dire le transfert de fichiers). La commande ls ne

fonctionnera pas dans ce répertoire.

Je vous rappelle à nouveau, que le fichier précédent n'est qu'un exemple. Il faut absolument lire la documentation de ProFTP.

Vous allez maintenant relancer (ou lancer sur la mandrake) le serveur proftp. Puis vérifiez dans les fichiers log que le serveur est bien lancé.

5.5 Tests du serveur ProFTP

Depuis votre machine GNU/Linux, vous pouvez tester votre serveur ftp avec la commande ftp. Testez tout d'abord la connexion anonyme puis avec un utilisateur du système.

Pour la connexion anonyme : ftp localhost, nom : anonymous, mot de passe : bidon@bidon. Puis faites des tests avec les commandes put get cd.

Pour la connexion avec un utilisateur, il faut que cet utilisateur existe sur le système (adduser toto et passwd toto) puis il faut créer dans son répertoire home le répertoire public_html. Testez enfin la connexion au serveur ftp, vérifiez que vous arrivez bien dans votre répertoire puis que vous pouvez écrire uniquement dans le répertoire public_html.

Installez sous Windows un client FTP quelconque puis testez votre serveur. Si la

configuration du serveur dhcp est correcte, celui-ci doit envoyer l'adresse ip du serveur dns. Le serveur dns doit normalement avoir un alias vers ftp.monetab.

Sous GNU/Linux, utilisez les commandes ftpwho (man ftpwho) et ftpcount (man ftpcount)pour suivre les connexions à votre serveur FTP.

5.6 Utilisation de Webmin avec ProFTPd

Sous Mandrake, le module est installé. Sous debian, le module n'existe pas dans la version stable, il faut donc installer la version test de webmin.

Enfin installez le module pour ProFTPd : apt-get install webmin-proftpd

Connectez-vous à webmin depuis un navigateur, identifiez-vous en tant que root puis cliquez sur l'onglet serveur puis sur l'icône serveur ProFTPD server. Quasiment toutes les opérations sont faisables depuis l'interface.

5.7 Extensions possibles et liens

Il faut savoir que le service ftp ne crypte pas les données. Votre mot de passe transite donc en clair entre votre machine cliente et le serveur. D'après ce que j'ai lu sur le site de proftp, il est possible de crypter le canal de commande (port 21) mais pas les données.

L'authentification peut se faire avec LDAP ou une base de données (PostgresSQL, MySQL).

Il faut savoir qu'il existe aussi d'autres serveurs FTP (wu-ftp le plus vieux, vsftp pour very secure ftp, etc...).

Liens :

Le site officiel de ProFTP : http://www.proftpd.net

Dans le document Présentation des serveurs DNS DHCP FTP (Page 15-19)

Documents relatifs