ProFTP

17 Sep. 2006
Auteur : Hyacinthe MENIET
Responsable : gege13821
Score ( voter ) :
Connexes : Même auteur | Même responsable | Historique
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 :

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 : 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. 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. 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. 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 :