GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment configurer vsftpd pour utiliser SSL/TLS (FTPS) sur CentOS/Ubuntu

Sécuriser le FTP

Vsftpd est un serveur ftp largement utilisé, et si vous le configurez sur votre serveur pour transférer des fichiers, soyez conscient des problèmes de sécurité qui surviennent. Le protocole ftp a une faible sécurité inhérente à sa conception. Il transfère toutes les données en texte brut (non crypté), et sur un réseau public/non sécurisé, c'est quelque chose de trop risqué.

Pour résoudre le problème, nous avons FTPS. Il sécurise la communication FTP en la cryptant avec SSL/TLS. Et cet article montre comment configurer le cryptage SSL avec vsftpd.

Installer vsftpd

Vsftpd est disponible dans les référentiels par défaut de toutes les principales distributions, y compris debian, ubuntu, centos et fedora, et peut être installé sans aucun problème. Il n'y a qu'un seul fichier de configuration nommé vsftpd.conf qui réside dans le répertoire /etc.

# ubuntu/debian
$ sudo apt-get install vsftpd
# centos/fedora
# sudo yum install vsftpd

Le reste est de configurer vsftpd pour utiliser le cryptage ssl pour la communication ftp. C'est juste un processus en 2 étapes.

Générer un certificat SSL

La première étape consiste à créer un certificat SSL et un fichier de clé que vsftpd va utiliser pour le chiffrement. Le paramètre de configuration "rsa_cert_file" doit contenir le chemin d'accès au fichier de certificat. Il a une valeur par défaut qui peut être trouvée dans la page de manuel.

$ man vsftpd.conf | grep rsa_cert_file -A 5
       rsa_cert_file
              This option specifies the location of the RSA certificate to
              use for SSL encrypted connections.
              Default: /usr/share/ssl/certs/vsftpd.pem

C'est différent entre Ubuntu et CentOS. Nous pouvons le stocker à n'importe quel endroit que nous aimons.
Créez un certificat ssl avec la commande openssl. Nous rassemblons le certificat et la clé dans un seul fichier.

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

Répondez aux questions qui suivent et en quelques secondes le fichier de certificat devrait être prêt. La sortie ressemblerait à ceci

# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Generating a 1024 bit RSA private key
.............++++++
....++++++
writing new private key to '/etc/ssl/private/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) [XX]:US
State or Province Name (full name) []:NY
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address []:

Configurer Vsftpd pour SSL

La tâche suivante consiste à configurer vsftpd pour utiliser ce certificat SSL pour le chiffrement. Le fichier vsftpd.conf se trouve à l'emplacement suivant

# Ubuntu/Debian
/etc/vsftpd.conf 

# CentOS/Fedora
/etc/vsftpd/vsftpd.conf

Ouvrez le fichier vsftpd.conf et modifiez-le comme indiqué ci-dessous

Ce qui suit indiquera à vsftpd l'emplacement du certificat/fichier de clé à utiliser.

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

Ajoutez les options suivantes pour activer SSL. Il activera SSL et forcera le cryptage pour les transferts de données ainsi que les connexions.

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

Les lignes suivantes indiqueront à vsftpd d'utiliser TLS le cas échéant, qui est plus sécurisé que son prédécesseur SSL.

ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES

Toutes les directives de configuration nécessaires ont été ajoutées. Enregistrez le fichier et redémarrez vsftpd

# service vsftpd restart
# or
# sudo /etc/init.d/vsftpd restart

Tester SSL sur vsftpd

Maintenant que notre configuration est terminée, il est temps de la tester.

Essayez d'abord de vous connecter à l'aide de la commande plain ftp et la demande de chiffrement devrait échouer.

$ ftp 192.168.1.5
Connected to 192.168.1.5.
220 (vsFTPd 2.2.2)
Name (192.168.1.5:enlightened): pal
530 Non-anonymous sessions must use encryption.
Login failed.
ftp>

Vérifiez ensuite que le cryptage SSL fonctionne correctement. Les clients ftp Gui comme FileZilla peuvent utiliser FTPS, mais pour des raisons de commodité, nous allons recourir à l'outil de ligne de commande appelé curl, et voici la commande très simple qui devrait se connecter au serveur FTPS et lister les fichiers

$ curl --ftp-ssl --insecure --ftp-port 192.168.1.2:6003 --user pal:pal ftp://192.168.1.5
-rw-r--r--    1 0        0               0 Jan 03 06:10 abcd.txt
-rw-r--r--    1 0        0               0 Jan 03 06:10 cdefg.txt

Ces fichiers se trouvent dans le répertoire personnel de l'utilisateur pal sur le serveur ftp. Assurez-vous que vous disposez de certains fichiers dans le répertoire d'accueil du serveur pour les répertorier et les vérifier. Sinon, curl renverrait simplement un blanc.
Voici une explication rapide des options de curl que nous avons utilisées.

ftp-ssl : Tells curl to use ftps

insecure : Tells curl not to use any ssl certificate to authenticate and just connect right away.

ftp-port : Tells curl that we are in ACTIVE mode. In ACTIVE mode the client has to tell the server the hostname and port number to connect back to. If you have configured passive mode ftp, then do not use this.

user : Specifies the username and password joined with a colon.

The last thing is the ftp url.

Si vous ne spécifiez pas le port ftp sur les connexions ftp en mode ACTIF, vous obtiendrez l'erreur "Aucune route vers l'hôte
".

Si vous obtenez "bind() failed, we run out of ports!" erreur alors changez simplement le numéro de port.

Vous pouvez également utiliser une URL comme celle-ci

$ curl ftps://192.168.1.5 ...

Mais alors curl essaierait de se connecter au port 990 et à moins que vous n'ayez configuré vsftpd pour servir sur ce port, cela ne fonctionnera pas.

Si curl ne parvient pas à se connecter à vsftpd ou à répertorier correctement les fichiers, utilisez l'option détaillée (-v) et consultez plus de détails sur ce qui s'est passé, puis corrigez-le.

Remarques supplémentaires

FTPS sécurise FTP en ajoutant un cryptage SSL au canal de communication. Une autre méthode recommandée pour établir des connexions sécurisées consiste à utiliser SFTP (SSH File Transfer Protocol). Le package OpenSSH populaire qui fournit le service ssh, fournit également SFTP sans avoir besoin d'installation ou de configuration supplémentaire. Cependant, tous les clients FTP et outils de développement Web ne prennent pas en charge SFTP.


Cent OS
  1. Comment installer et configurer un serveur FTP (vsftpd) avec SSL/TLS sur Ubuntu 20.04

  2. Comment configurer PureFTPd pour accepter les sessions TLS sur CentOS 6.2

  3. Comment configurer le serveur DHCP sur CentOS 7 / Ubuntu 18.04 / 16.04 / Debian 9

  4. Comment configurer Autofs sur CentOS 7 / Ubuntu 16.04 / Debian 9 / Fedora 27/26

  5. Comment configurer OpenSSH sur CentOS 7

Installez Vsftpd avec SSL/TLS sur Ubuntu 20.04

Comment installer et configurer le serveur FTP sur CentOS

Comment installer et configurer Apache avec Let's Encrypt TLS/SSL sur Ubuntu 20.04

Comment installer et configurer VSFTPD sur Ubuntu 14.04

Comment configurer vsftpd pour utiliser SSL/TLS sur un Ubuntu 20.04

Comment configurer VSFTPD pour utiliser SSL/TLS sur un VPS CentOS