I) Introduction :
Proftpd est un serveur FTP particulièrement apprécié. C’est l’une des meilleurs solutions disponibles actuellement. Il est distribué sous licence GPL, supportes les Hôtes Virtuels et est particulièrement simple à configurer. La syntaxe de son fichier de configuration est particulièrement proche de celle de Apache. Il supporte également l’utilisation d’une base de données SQL MySQL ou PostgreSQL ou d’un annuaire LDAP pour authentifier les utilisateurs
Il s’installe sous Debian de la manière suivante :
apt-get install proftpd
Le fichier de configuration associé est le fichier
/etc/proftpd.conf
.
L’ensemble des paramètres de configuration et leur signification est donné ici :
http://www.proftpd.org/docs/directives/linked/by-name.html
II) Configuration de base :
ServerName "Serveur FTP Debian" ServerType standalone DeferWelcome off Port 21 MultilineRFC2228 on DefaultServer on ShowSymlinks on # Authorise l'écriture d'un fichier sur un fichier portant le même nom : AllowOverwrite on TimeoutNoTransfer 600 TimeoutStalled 600 TimeoutIdle 1200 DisplayLogin welcome.msg DisplayFirstChdir .message ListOptions "-l" DenyFilter *.*/ MaxInstances 30 # Nom et groupe de l'utilisateur sous lequel Proftpd est lancé : User nobody Group nogroup
Jusque la, ces options standard parlent d’elles-mêmes. Voyons certaines options plus interressantes.
Autoriser la reprise des téléchargements :
AllowStoreRestart on AllowRetrieveRestart on
Limiter la bande passante :
En Woody :
ReadRateBPS 1048576 WriteRateBPS 1048576
Les valeurs se donnent en octets par seconde, soit ici une limite en upload et en download de 1Mo/sec.
En Sarge et en Sid, la version de Proftpd ayant évoluée, les paramètres sont différents. L’option de configuration est maintenant
TransferRate et reçoit en paramètre la commande FTP, le débit et éventuellement un utilisateur.
La syntaxe est la suivante :
TransferRate [commande] [débit] [utilisateur/groupe] [nom de l’utilisateur/du groupe]
Donc pour limiter l’upload à 1Mo/sec pour tout le monde et le download à 2Mo/sec pour l’utilisateur bar on fera :
TransferRate APPE,STOR 1048576 TransferRate RETR 2097152 user foo
Chrooter ses utilisateurs :
Vous pouvez également restreindre la navigation à vos utilisateurs.
Les limiter à leur répertoire personnel :
DefaultRoot ~
Limiter l’utilisateur bar à /ftp/www.boobar.com :
DefaultRoot /ftp/www.foobar.com bar
Interdire le ftp à un utilisateur : Ajoutez son nom à la liste contenue dans le fichiers
/etc/ftpusers
.
III) La directive :
Les options dont nous avons parlées précédement peuvent s’appliquer de manière globale en utilisant
Order Allow,Deny Allow 192.168.1.0/24 Allow 10.0.0.1 Deny ALL
IV) Les Hôtes Virtuels :
Vous pouvez être amenés à gérer plusieurs serveurs FTP sur un même serveur, par exemple si vous gérez plusieurs serveurs Web. Ils se gèrent de la même façon que avec Apache. Vous aurez donc rapidement compris leur fonctionnement. Il suffit d’utiliser les directives
ServerName "Serveur FTP de foobar.com!" Port 4000 Umask 027 DefaultRoot ~ DenyAll User ftp Group ftp UserAlias anonymous ftp AllowAll DenyAll AllowAll TransferRate APPE,STOR 1048576 TransferRate RETR 2097152 user foo
V) Sécurisation des transferts avec TLS :
En premier lieu, il faut générer le certificat x509 :
openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/proftpd.cert.pem -keyout /etc/ssl/certs/proftpd.key.pem
Ensuite il faut rajouter dans /etc/proftpd.conf :
TLSEngine on TLSLog /var/log/tls.log TLSProtocol SSLv23 TLSOptions NoCertRequest TLSRSACertificateFile /etc/ssl/certs/proftpd.cert.pem TLSRSACertificateKeyFile /etc/ssl/certs/proftpd.key.pem TLSVerifyClient off