Identification

VsFTPd installation et configuration

Catégorie : Auto-hébergement
Mots-clés : ftp sécurité ssl tls

Introduction

VsFTPd est un serveur FTP pour les systèmes Unix-Like. Il a été développé avec comme objectif principal la sécurité. VsFTPd est un serveur fiable, stable et extrêmement performant.

La recette qui suit montre comment installer et paramétrer VsFTPd sur un serveur Debian de manière à ce qu'il utilise SSL pour chiffrer tous les échanges (connexion et données).

Installation

L'installation des paquets nécessaires (vsftpd et openssl) se fait de manière conventionnelle à l'aide de la commande suivante :

# apt-get install vsftpd openssl

Uns fois l'installation terminée, il faut s'assurer que l'on dispose d'un dossier pour ranger nos certificats SSL. La commande suivante créer la structure de dossiers dont nous avons besoin si elle n'existe pas déja :

# mkdir -p /etc/ssl/private/

Configuration

Création du certificat SSL

Il est maintenant temps de créer un certificat pour notre serveur. La commande suivante génère les fichiers nécessaires pour un certificat SSL de 1024 bits valable 365 jours et les déposes dans le dossier /etc/ssl/private/ précédemment créé :

# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.private.key.pem -out /etc/ssl/private/vsftpd.cert.pem

Durant le processus de génération, des entrées utilisateur sont requises (ici en gras). Les réponses sont à personnaliser, en particulier le nom de domaine et l'adresse e-mail :

Generating a 1024 bit RSA private key
....++++++
.........++++++
writing new private key to '/etc/ssl/private/ssl-cert-vsftpd.pem'
-----
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]:FRANCE
Locality Name (eg, city) []:PARIS
Organization Name (eg, company) [Internet Widgits Pty Ltd]:.
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:ftp.mondomaine.com
Email Address []:ftpmaster@mondomaine.com

Note : Si vous désirez laisser un champ vide, utilisez un point pour le signaler.

Configuration de VsFTPd

Modifiez le fichier /etc/vsftpd.conf de manière à ce qu'il contienne les directives suivantes :

...
#
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/private/vsftpd.cert.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.private.key.pem

ssl_enable=YES
ssl_ciphers=HIGH
allow_anon_ssl=NO

force_local_data_ssl=YES
force_local_logins_ssl=YES

ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES

require_ssl_reuse=NO
...

Une fois le fichier de configuration sauvegardé, il faut recharger la configuration de VsFTPd :

# service vsftpd reload

Vérifications

Configuration du client FileZilla

Pour créer une connexion à votre serveur dans FileZilla, rendez-vous dans le menu Fichier > Gestionnaire de Sites..., ou réalisez la combinaison de touches Ctrl+s pour y accéder directement.

Une fois le gestionnaire ouvert, saisissez les informations de connexion à votre serveur et sélectionnez "Connexion FTP explicite sur TLS" dans la liste déroulante "Chiffrement" :

Lors de la première connexion à votre serveur VsFTPd, FileZilla vous avertira que le serveur vous présente un certificat qu'il ne connaît pas encore. Acceptez le.

Voici un extrait du dialogue de négociation lors d'une connexion FTP/SSL réussie entre un client FTP et le serveur. La partie concernant TLS/SSL est en gras:

Statut :    Résolution de l'adresse de ftp.mondomaine.com
Statut :    Connexion à xxx.xxx.xxx.xxx:xx...
Statut :    Connexion établie, attente du message d'accueil...
Réponse :    220 Welcome to blah FTP service.
Commande :    AUTH TLS
Réponse :    234 Proceed with negotiation.
Statut :    Initialisation de TLS...
Statut :    Vérification du certificat...
Commande :    USER utilisateur
Statut :    Connexion TLS/SSL établie.
Réponse :    331 Please specify the password.
Commande :    PASS ********
Réponse :    230 Login successful.
...

Et ensuite ?

A ce stade vous devriez normalement disposer d'un serveur FTP opérationnel. Pour aller plus loin, vous devrez consulter la documentation en ligne, disponible sur le site officiel de VsFTPd.