FREE, la liberté n'a pas de prix ! Nom de domaine chez OVH Get Firefox!
Installer un serveur FTP sous Debian
par Stéphane Le Caër
19 mai 2005
Introduction

Ce document décrit l'installation d'un serveur ProFTPd sur une distribution Debian GNU/Linux.

J'ai retenu ce serveur du fait de sa popularité sur la toile et parce qu'il se configure d'une façon similaire à celle d'Apache.

 
 
Plan

 
Environnement

La distribution sur laquelle je me suis appuyé pour réaliser ce mémo est la Debian GNU/Linux testing "Sarge" RC3 datée du 23 mars 2005.

Cette distribution a été installée en respectant les instructions suivantes : Installer Debian GNU/Linux testing "Sarge".

 
Installer le serveur ProFTPd

Installer le package ProFTPd :
# apt-get install proftpd proftpd-doc

Ecran Question Réponse
ProFTPd Configuration Lancer proftpd à partir d'inetd ou indépendamment: indépendamment

Remarque :
La version du package utilisé pour ce suppport est la 1.2.10-10 du 11 fevrier 2005.

Le daemon proftpd est lancé automatiquement.

 
Configurer le serveur ProFTPd

Afin de faciliter la gestion des droits d'accès, j'ai créé un groupe d'utilisateur du serveur FTP :
# groupadd ftpusers
# usermod -G ftpusers ftp
# usermod -G ftpusers ftpadmin

Création de l'arborescence :
# cd /home/ftp
# mkdir public
# chmod 775 public
# chown ftp public
# chgrp ftpusers public
#
# mkdir upload
# chmod 775 upload
# chown ftp upload
# chgrp ftpusers upload

La configuration du serveur est définie dans le fichier /etc/proftpd.conf.

Définir le nom et le type de serveur :
ServerName                       "artemis"
ServerType                       standalone

Le type de serveur correspond au mode de lancement de ce dernier. Cette valeur est initailisée lors de l'installation à standalone si vous avez choisi que le serveur soit lancé indépendamment.

Définir l'utilisateur qui lance le daemon proftpd :
User                             nobody
Group                            nogroup

Remarque:
Ces paramètres sont ceux définis par défaut et garantissent la meilleur sécurité car elle donne le minimum de privilège au daemon.

Personnaliser le message de bienvenue :
# cd /home/ftp
# mv welcome.msg .welcome.msg
# vi /home/ftp/.welcome.msg
Bienvenue à %U@%R sur le serveur SLC66.net

Il est : %T

Ceci est mon serveur FTP personnel.
Si vous avez le moindre problème, veuillez contacter <admin@slc66.net>.

Définir les paramètres d'affichage :
DisplayLogin                     .welcome.msg
DisplayFirstChdir                .message
ListOptions                      "-l"
DeferWelcome                     on

Définir le contexte de configuration Global du serveur FTP :
<Global>
    DefaultRoot             ~ !ftpadmin
    MaxClients              3
    MaxClientsPerHost       2
    UseFtpUsers             on
    AllowForeignAddress     on
    AllowOverwrite          on
    ServerIdent             on "ProFTP slc66's Server Ready"
    PathDenyFilter          "(\.quota)|(\.ftpaccess)|(\.htaccess)$"
    Umask                   022  022
    <Directory /*>
        <Limit WRITE>
            DenyAll
            AllowUser        ftpadmin
        </Limit>
    </Directory>
    <Directory /home/ftp/upload/*>
        <Limit WRITE>
            AllowAll
        </Limit>
    </Directory>
<Global>

Remarques :
Ici, je "chroot" tous les utilisateurs à l'exception de l'utilisateur ftpadmin. En d'autres thermes, je limite à l'exception de ftpadmin l'accès des utilisateurs à leur home.

J'interdit l'écriture sur toute l'arborescence du serveur à tous les utilisateurs sauf à ftpadmin.

J'autorise à tous le monde d'écrire dans le répertoire /home/ftp/upload.

Redémarrer le serveur pour prendre en compte les modifications :
# /etc/init.d/proftpd restart

 
Gérer les utilisateurs ayant droits d'accès

Tous les utilisateurs devant se connecter au serveur FTP doivent être connus comme utilisateur du système. Autrement dit, ils doivent avoir une entrée dans le fichier /etc/passwd.

On peut par contre créer un utilisateur qui pourra se connecter au serveur FTP mais qui ne pourra pas ouvrir de session sur le système en lui attribuant un "faux shell" (/bin/false). Comme par défaut ProFTPd n'accepte la connexion que si le shell est valide, il faut s'assurer qu'une ligne contenant /bin/false est présente dans le fichier /etc/shells, ou utiliser la directive RequireValidShell off pour désactiver ce contrôle.

Exemple de création d'un "utilisateur FTP uniquement" :
# useradd -c 'Utilisateur FTP' -d /home/ftp -g ftpusers -s /bin/false userftp # passwd userftp

ProFTPd s'appuie sur le fichier /etc/ftpusers pour identifier les utilisateurs du système qui n'ont pas le droit d'accéder au service FTP.

Le fichier /etc/ftpusers par défaut est le suivant :
# /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5).

root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
nobody

Remarque :
J'y ai personnellement ajouté le compte anonymous pour interdire toute connexion anonyme.

 
Configurer le pare-feu

Pour qu'un client FTP puisse ouvrir une connexion sur le serveur FTP, il faut ouvrir le port 21.

Exemple de configuration d'un routeur Netgear RP614v2 :

 
Quelques commandes

ftpcount Cette commande affiche le nombre courant de connexion par server et virtualhost/anonymous définis dans le fichier proftpd.conf.
ftpshut Cette commande permet à un superutilisateur de programmer un arrêt automatique avec déconnexion des sessions ouvertes et interdiction de nouvelles connexions.
ftptop Cette commande affiche l'état courant des sessions FTP. La mise à jour se fait de façon continu de la même façon que la commande top.
ftpwho Cette commande affiche des informations sur toutes les connexions actives et compte tous les utilisateurs connectés.

Exemple avec la commande ftptop :
ftptop/0.9: Fri May 20 12:48:06 2005, up for 1 hr 07 min
1 Total FTP Sessions: 0 downloading, 0 uploading, 1 idle

PID   S USER     CLIENT               SERVER          TIME   COMMAND
5409  I userftp  192.168.0.3          0.0.0.0:21      0m13s  idle

Fichier de LOGs :
Toutes les informations tracées par le daemon du serveur FTP ptoftpd sont enregistrées dans un fichier nommé xferlog. Ce fichier est généralement placé dans /var/log.

Pour avoir plus d'information, se référer au man.

 
Liens

 
Historique

Version Date Commentaire
1.0 19/05/2005 Version initiale
1.1 20/05/2005 Ajout de quelques liens et documentation de quelques commandes.
     

 
  Get Firefox