Installer un serveur FTP : ProFTPd

Critères requis :

Dans ce tutoriel nous allons voir comment configurer un serveur FTP (ProFTPd) pour transférer des fichiers entre votre PC et votre serveur.

Ce tutoriel se basera sur Ubuntu 14.04. Cela devrait fonctionner de manière très similaire sous Debian

Installation

Nous commençons par installer le serveur :

sudo apt-get install proftpd

Durant l'installation il vous sera demandé si vous souhaitez installer en mode inetd ou en mode standalone. Choisissez le mode standalone.

En effet, inetd est un genre de “Super Daemon” qui se chargera de plusieurs services à la fois, donc le service FTP.
Avec le mode inetd, il vous faudra par la suite le configurer correctement, ce qui n'est pas l'objectif ici.

En mode standalone, ProFTPd fonctionnera tout seul.

Configuration

Il vous faudra éditer le fichier /etc/proftpd/proftpd.conf

Repérez la ligne commentée DefaultRoot et décommentez-la.
Cela permettra de chrooter les utilisateurs dans leur propre home.

Vous pouvez aussi personnaliser le ServerName, le DisplayLogin & le UseIPv6 au besoin. (N'hésitez pas à vous rendre sur la documentation officielle pour plus d'informations)

Sécurisation TLS

Votre serveur est maintenant en place, cependant, tout ce qui transite entre votre serveur et votre Client FTP est envoyé en clair sur le Net, ce qui est loin d'être sécurisé.

Nous allons donc chiffrer le tout avec une sécurisation TLS (SSLv3 étant deprecated).

Commençons par créer un certificat SSL auto-signé :

sudo openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/proftpd.cert -keyout /etc/ssl/private/proftpd.key

Vous devriez avoir un output de la sorte :

Generating a 2048 bit RSA private key
..........................................................+++
..................................................................................+++
writing new private key to '/etc/ssl/private/proftpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:sd-xxxxx.dedibox.fr
Email Address []:me@mymail.tld

Renseignez les champs demandés par OpenSSL avec les bonnes informations.
sd-xxxxx.dedibox.fr peut bien évidemment être remplacé par votre nom de domaine si vous en avez un.

Maintenant nous allons forcer notre serveur FTP à utiliser cela pour générer une connexion chiffrée.

Créez le fichier /etc/proftpd/conf.d/tls.conf :

  <IfModule mod_tls.c>
    TLSEngine on
    TLSLog /var/log/proftpd/tls.log

    # TLSv1 Uniquement
    TLSProtocol TLSv1

    # N'autorise que les connexions sécurisées
    TLSRequired on

    # Renseigne l'emplacement des certificats
    TLSRSACertificateFile /etc/ssl/certs/proftpd.cert
    TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key

    TLSVerifyClient off
    TLSRenegotiate none

  </IfModule>

Puis nous redémarrons notre serveur FTP :

sudo service proftpd restart

Vous allez maintenant pouvoir vous connecter à votre serveur FTP de manière sécurisée !

Au besoin, n'hésitez pas à consulter notre documentation sur les clients FTP.