Table des matières

Installer proFTPd

ProFTPd est un serveur FTP libre. Ses auteurs l'annoncent comme puissant et parfaitement sécurisé sur le site web dédié au logiciel.

Son architecture est modulaire, ce qui a permis d'écrire des extensions pour le support de la cryptographie SSL/TLS (protocole FTPS) et l'extension de l'authentification via des bases RADIUS, LDAP ou SQL.

Installation

Pour l'installation, exécuter la commande :

sudo apt-get install proftpd

L’installation propose 2 méthodes :

Sauf si vous prévoyez d'utiliser massivement le FTP, sélectionnez inetd

Configuration

Rien de plus simple, on édite le fichier de configuration :

sudo vi /etc/proftpd/proftpd.conf

On désactive l'utilisation d'IPv6 :

UseIPv6 off

On va également cacher l'identification du serveur pour que les petits malins ne voient pas qu'il s'agit d'un serveur proFTPd en ajoutant la ligne suivante :

ServerIdent     off

Puis on va configurer le serveur pour que les utilisateurs du système accèdent à leur home uniquement, on décommente les lignes suivantes :

#DefaultRoot ~
#RequireValidShell off

Puis on relance le service :

sudo service proftpd restart

Dans ce cas, la configuration utilise des utilisateurs réels du système pouvant se connecter au serveur via ssh si on leur laisse le droit, il est fortement recommandé d'utiliser alors la directive AllowUsers dans le fichier /etc/ssh/sshd_config pour autoriser ou non cet accès.

Configuration FTPES (SSL/TLS)

Il est possible d'utiliser une connexion cryptée avec proFTPd utilisant un certificat. Cela amène une sécurité beaucoup plus importante de vos connexions et transferts vers votre serveur. Attention cependant, certains clients FTP ne sont pas compatible avec ce protocole.

Génération de la clé privée

Pour générer la clé privée auto signée on utilise la commande suivante :

sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt

On répond alors à la série de question posée par le générateur, soyez précis si vous voulez donner plus de crédibilité à votre certificat mais vous pouvez laisser les champs vides :

Generating a 1024 bit RSA private key
...++++++
....++++++
writing new private key to '/etc/ssl/private/ssl-cert-snakeoil.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]:
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 (eg, YOUR name) []:
Email Address []:

Puis on protège la clé en changeant les droits :

sudo chmod 0600 /etc/ssl/private/proftpd.key 
sudo chmod 0640 /etc/ssl/certs/proftpd.crt

Configuration

On édite le fichier de configuration du serveur :

sudo vi /etc/proftpd/proftpd.conf

Puis on décommente la ligne suivante :

#Include /etc/proftpd/tls.conf

Si vous êtes derrière une box, décommenter et mettre votre ip publique :

#MasqueradeAddress               1.2.3.4

Puis décommenter et définissez les ports passifs, ne pas oublier d'ouvrir les ports sur votre box (TCP) :

#PassivePorts                  49152 65534

Sortir et éditer le fichier de configuration tls :

sudo vi /etc/proftpd/tls.conf

Décommenter les lignes suivantes :

#TLSEngine                               on
#TLSLog                                  /var/log/proftpd/tls.log
#TLSProtocol                             SSLv23
#TLSRSACertificateFile           	 /etc/proftpd/ssl/proftpd.crt
#TLSRSACertificateKeyFile        	 /etc/proftpd/ssl/proftpd.key
#TLSOptions                              NoCertRequest

Puis vous pouvez définir si les connexions doivent obligatoirement passer par le protocole FTPES ou si vous autorisez quand même les connexions par FTP classique, mettre à off si vous autorisez les deux :

#TLSRequired                             on

Pour finir on redémarre proftpd :

sudo /etc/init.d/proftpd restart

Pour se connecter avec Filezilla utiliser FTPES - FTP plus explicite (TLS/SSL)