Bienvenue visiteur (Inscription |  Connexion)
Qui est en ligne ?
Il y a : 22 utilisateurs en ligne, consultez le détail
Auteur Message
gege13821
#0 Message posté le : 17-09-2006 à 00:00:00


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 20-04-2008
Nombre de messages : 0


Le protocole FTP est l'un des protocoles les plus connus avec HTTP(s), il permet à plusieurs personnes de partager des fichiers. ProFTP est l'un des serveurs FTP les plus connus sous Unix, il possède plusieurs fonctions avancées, comme les ratios ou les virtuals hosts, dont nous ne parlerons pas ici. Si vous souhaitez en savoir plus je vous conseille de vous rendre à proftp.org

La version la plus à jour est la 1.2.5. Dans ce document nous étudierons la configuration d'un serveur domestique mais évidemment tout ceci est transposable à un serveur sur internet. L'ensemble des lignes de commandes est à taper dans un terminal (la petite tv noire en bas à gauche).

1. Installation :


  • Pour les utilisateurs de Mandriva.

    Vous n'avez rien à télécharger, tapez simplement ceci dans un terminal :
    urpmi proftpd


  • Pour les utilisateurs de Debian.

    Vous n'avez rien à télécharger, tapez simplement ceci dans un terminal :
    apt-get install proftpd


  • Pour les utilisateurs de RedHat.

    Vous pouvez télécharger proftp ici et l'installer par :
    rpm -Uvh proftpd-1.2.5-fr1.i386.rpm


  • Pour les autres.

    Vous pouvez télécharger la dernière version de proftp ici. L'installation se résume à :
    tar -xzvf /où_est_le_fichier/proftpd-1.2.5.tar.gz
    cd proftpd-1.2.5/
    ./configure --prefix=/usr --sysconfdir=/etc
    make
    make install


2. Configuration :


2.1 L'utilisateur nobody :



Par défaut le daemon proftpd se lance avec les privilèges de root et cela pose évidemment des problèmes de sécurité. C'est pourquoi je vous conseille d'utiliser un utilisateur sans droits particuliers. Le plus indiqué étant nobody du groupe nobody. Ils existent probablement déjà chez, vous vous pouvez le vérifier par :
cat /etc/group | grep nobody


Si vous n'aviez aucune réponse, c'est que vous n'avez pas de group nobody, sa création se limite à :
groupadd nobody


Ensuite :
cat /etc/passwd | grep nobody


Si vous n'aviez aucune réponse c'est que vous n'avez pas d'utilisateur nobody, sa création et son affectation au groupe nobody se limitent à :
useradd nobody -d / -s /bin/false
usermod nobody -g nobody

2.2 les utilisateurs :



Nous allons créer 2 utilisateurs, le premier, adminftp qui sera le login qui vous permettra de vous loguer depuis le net pour rajouter des fichiers sur votre PC serveur FTP. Le second userftp qui sera le login que devront entrer vos utilisateurs pour se loguer à votre FTP.

Vos utilisateurs auront un accès en lecture seule, c'est à dire qu'ils pourront juste récupérer des fichiers. Si vous souhaitiez que d'autres utilisateurs puissent déposer des fichiers sur votre serveur, soit vous leur donnez le mot de passe d'adminftp, soit vous leur créer un compte : pierre, paul ou jacques.

Dans mon exemple, je suppose qu'il n'y a qu'un seul utilisateur susceptible de mettre des choses sur mon PC depuis le net : adminftp, les autres sont de simples clients : userftp. Il n'y a pas non plus d'utilisateur anonyme.

Tout ceci se fait simplement à l'aide de :
useradd adminftp -s /bin/false
useradd userftp -s /bin/false


Il faut, bien-sûr leurs affecter des mots de passe :
passwd adminftp
passwd userftp


Choisissez les mots de passe de votre choix, par exemple chez moi j'ai choisi :
  • pour adminftp : saidmyname
  • pour userftp : myname

Il est très important que les utilisateurs de votre FTP aient des droits restreints et donc ne soient pas des utilisateurs réguliers de votre Linux d'ou le /bin/false au lieu de /bin/bash habituel. Maintenant éditez /etc/shells et rajoutez la ligne (Si elle n'y est pas) :
/bin/false

2.3 Création du partage :



Je vous conseille de mettre tous les fichiers que vous souhaitez rendre disponibles par FTP dans un même répertoire, par exemple /mnt/ftp. Vous pouvez même les classifier : /mnt/ftp/images, /mnt/ftp/mp3, /mnt/ftp/videos, /mnt/ftp/docs. Tout ceci se fait simplement par :
mkdir /mnt/ftp
cd /mnt/ftp
mkdir images mp3 videos docs
chmod -R 777 /mnt/ftp


Avec ça, vous avez crée, un répertoire /mnt/ftp contenant 4 répertoires : images, mp3, videos, docs. Accessibles à tous sans restrictions, pas de panique ! c'est fait exprès et c'est cohérent avec la stratégie qui a été définie plus haut.

Notez que je peux également déposer des choses dans /mnt/ftp sans passer par le net.

2.4 Configuration :



Pour configurer ProFTP, vous disposer de 2 fichiers que vous devrez probablement créer.
  • /etc/ftpusers

C'est le fichier dans lequel sont mentionnés les utilisateurs exclus du FTP, pour l'initialisez tapez :
cp /etc/passwd /etc/ftpusers


Le but est simple, il faut qu'apparaissent dans ce fichier tous les utilisateurs de votre linux à l'exception de ceux que vous avez crée précédemment(adminftp et userftp). N'oubliez pas de rajouter anonymous et faîtes le ménage, pour qu'il ressemble à ça :
# This file describes the names of the users that may

# _*NOT*_ log into the system via the FTP server.

# This usually includes "root", "uucp", "news" and the

# like, because those users have too much power to be

# allowed to do "just" FTP...

#

 root

bin

daemon

adm

lp

sync

shutdown

halt

mail

news

uucp

operator

games

ftp

smmsp

mysql

rpc

gdm

pop

nobody

anonymous

kernel 

Ceci permet que les utilisateurs du FTP ne soient que des utilisateurs de FTP et rien d'autre.
  • /etc/proftpd.conf

C'est le fichier de configuration global de ProFTP. En voici un exemple, commenté :
# le nom du serveur

 ServerName "Kernel's ProFTP server"



# le daemon reste en mémoire et écoute les connections

 ServerType standalone



# Autoriser l'usage de /etc/ftpusers

 UseFtpUsers on



# Répertoire dans lequel arrivent les utilisateurs acceptés

 DefaultChdir /mnt/ftp



# Répertoire racine, les connectés au ftp ne verrons que lui et son contenu

 DefaultRoot /mnt/ftp



# Utile surtout pour les "virtuals hosts" mais laissez ainsi

 DefaultServer on



# le daemon écoute sur le port 21

 Port 21



# On autorise les reprises des téléchargements interrompus :

 AllowStoreRestart on



# Les logs des connections et transferts

 SystemLog /var/log/proftpd.log

TransferLog /var/log/xferlog



# Seul le propriétaire d'un fichier peut le modifier.

 Umask 022



# Nombre de processus fils maximum que va utiliser proftpd, laissez ainsi.

 MaxInstances 30



# Proftp sera lancé avec les privilèges (c'est à dire aucun) de nobody

 User nobody

Group nobody



# Nombre maximum de clients simultanés (sur ADSL ça fait 5ko/s par utilisateurs)

 MaxClients 3



# Nombre maximum de clients ayant le même login

 MaxClientsPerHost 3



# Message d'accueil après une connexion réussie

 AccessGrantMsg "Connexion reussie pour %u"



# Pour ne pas donner d'info sur le serveur

 DeferWelcome off



# Un utilisateur peut écraser ses propres fichiers

 AllowOverwrite on



#Seul l'utilisateur adminftp a le droit d'écrire dans /mnt/ftp

 <Directory /mnt/ftp>



<Limit WRITE>

AllowUser adminftp

DenyAll

</Limit>



#Si vous souhaitez restreindre le ftp à votre réseau local 192.168.0.x et à

#l'adresse 10.0.0.1 décommentez les lignes suivantes :



#<Limit LOGIN>

#Allow 10.0.0.1 192.168.0.

#Deny All #</Limit>



</Directory>

3. Lancement du daemon :



On va lancer proftp en standalone, il faut donc le supprimer de la liste des daemons lançables par inetd ou xinetd.
  • Si vous utilisez inetd (debian, slackawre) :
    Commentez (rajouter un #) la ligne suivante dans /etc/inetd.conf (s'il n'y en pas ne faîtes rien):
    ftp stream tcp nowait root /usr/sbin/tcpd proftpd

    Puis relancer inetd par :
    killall -HUP inetd


  • Si vous utilisez xinetd (Mandriva, redhat) :
    Déplacez le fichier /etc/xinetd.d/proftpd (ou /etc/xinetd.d/proftpd-xinetd) vers un autre répertoire, puis redémarrez xinetd (s'il n'y a pas de fichier /etc/xinetd.d/proftpd ne faîtes rien) :
    mv /etc/xinetd.d/proftpd /root/
    killall -HUP xinetd

Maintenant vous pouvez lancer votre daemon par :
/usr/sbin/proftpd


Et vérifier qu'il est bien lancé par :
ps ax | grep proftp


S'il restait sans réponse, c'est qu'inetd ou xinetd vous bloque, refaites les étapes ci-dessus.

Plus tard, si vous faites des modifications dans /etc/proftp.conf pour qu'elles soient prises en compte par le daemon (déjà lancé) il vous suffira de taper :
killall -HUP proftpd

4. Trucs et astuces :


  • Pour tester rapidement votre serveur ProFTP vous pouvez exécuter la commande qui va suivre, je donne également le dialogue :
    [kernel@slackware kernel]$ ftp localhost
    Connected to localhost.
    220 ProFTPD 1.2.5 Server (Kernel's ProFTP server) [slackware.workstation]
    Name (localhost:kernel): userftp
    331 Password required for userftp.
    Password:
    230 Connexion reussie pour userftp
    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.
    drwxrwxrwx 2 root root 48 Jul 20 22:52 docs
    drwxrwxrwx 2 root root 48 Jul 20 22:52 images
    drwxrwxrwx 2 root root 48 Jul 20 22:52 mp3
    drwxrwxrwx 2 root root 152 Jul 21 01:38 videos
    226 Transfer complete.
    ftp> exit
    221 Goodbye.
    [kernel@slackware kernel]$


  • Pour suivre les connections en direct, vous devez taper en root dans un terminal :
    tail -f /var/log/proftpd.log


  • Pour suivre le téléchargement des fichiers en direct :
    tail -f /var/log/xferlog





--Message édité par TrustRobot le 17-09-2006 à 00:00:00--