Afin de renforcer la sécurité entre le Client et le Serveur FTP, il est vivement recommandé d’utiliser un certificat SSL pour crypter ces échanges. Dans cet article, nous voyons comment mettre cela en place avec un certificat auto-signé et le serveur vsFTPd sous Debian.
Configuration du serveur vsFTPd
Nous partons du principe que votre serveur FTP est déjà installé et configuré (vous pouvez également consulter cet article pour la configuration du serveur vsFTPd).
Dans le fichier de configuration vsFTPd /etc/vsftpd.conf, nous allons spécifier le chemin du certificat et de la clés :
rsa_cert_file=/etc/vsftpd/server.crt
rsa_private_key_file=/etc/vsftpd/server.key
Ensuite, dans le même fichier, nous allons activer la prise en charge du SSL :
ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
Création du certificat auto-signé
Un certificat au-signé est un certificat de clé publique qu’un utilisateur peut émettre en son propre nom, par opposition à un certificat émis par une autorité de certification comme Sectigo.
Pour générer ce certificat, nous allons utiliser la librairie openSSL (à noter que pour la valeur du Common Name (CN), il faut bien spécifier le même nom d’hôte que vous utilisez pour vous connecter avec votre Client FTP) :
$ cd /etc/vsftpd/
$ openssl req -new -key server.key -out server.csr
$ cp server.key server.key.org
$ openssl rsa -in server.key.org -out server.key
$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
On peut constater que nous avons bien 3 fichiers dans notre répertoire /etc/vsftpd/ :
$ ls -l
server.crt
server.csr
server.key
Enfin, il vous suffit de redémarrer votre serveur vsFTPd :
$ service vsftpd restart
Effectuez les commandes ci-dessous pour tester si le service fonctionne et si le serveur FTP écoute bien sur le port souhaité :
$ service vsftpd status | grep active
Active: active (running) since lun. 2022-05-03 15:24:31 CEST; 34min ago
$ netstat -tpln | grep ftp
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 26009/vsftpd