Recherche de site Web

Comment sécuriser un serveur FTP à l'aide de SSL/TLS pour le transfert de fichiers sécurisé dans CentOS 7


De par sa conception originale, le FTP (File Transfer Protocol) n'est pas sécurisé, ce qui signifie qu'il ne crypte pas les données transmises entre deux machines, ainsi que les informations d'identification de l'utilisateur. Cela constitue une menace massive pour les données ainsi que pour la sécurité des serveurs.

Dans ce didacticiel, nous expliquerons comment activer manuellement les services de cryptage de données sur un serveur FTP sous CentOS/RHEL 7 et Fedora ; nous passerons par différentes étapes de sécurisation des services VSFTPD (Very Secure FTP Daemon) à l'aide de certificats SSL/TLS.

Conditions préalables:

  1. Vous devez avoir installé et configuré un serveur FTP dans CentOS 7

Avant de commencer, notez que toutes les commandes de ce didacticiel seront exécutées en tant que root. Sinon, utilisez la commande sudo pour obtenir les privilèges root si vous ne contrôlez pas le serveur à l'aide du compte root.

Étape 1. Génération du certificat SSL/TLS et de la clé privée

1. Nous devons commencer par créer un sous-répertoire sous : /etc/ssl/ où nous stockerons le certificat SSL/TLS et les fichiers de clés. :

mkdir /etc/ssl/private

2. Exécutez ensuite la commande ci-dessous pour créer le certificat et la clé pour vsftpd dans un seul fichier, voici l'explication de chaque indicateur utilisé.

  1. req – est une commande pour la gestion des demandes de signature de certificat (CSR) X.509.
  2. x509 – signifie gestion des données de certificat X.509.
  3. jours – définit le nombre de jours pendant lesquels le certificat est valable.
  4. newkey – spécifie le processeur de clé de certificat.
  5. rsa:2048 – Le processeur de clé RSA générera une clé privée de 2048 bits.
  6. keyout – définit le fichier de stockage de clés.
  7. out – définit le fichier de stockage du certificat, notez que le certificat et la clé sont stockés dans le même fichier : /etc/ssl/private/vsftpd.pem.
openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem -days 365 -newkey rsa:2048

La commande ci-dessus vous demandera de répondre aux questions ci-dessous, n'oubliez pas d'utiliser des valeurs qui s'appliquent à votre scénario.

Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:Lower Parel
Locality Name (eg, city) [Default City]:Mumbai
Organization Name (eg, company) [Default Company Ltd]:TecMint.com
Organizational Unit Name (eg, section) []:Linux and Open Source
Common Name (eg, your name or your server's hostname) []:tecmint
Email Address []:[email 

Étape 2. Configuration de VSFTPD pour utiliser SSL/TLS

3. Avant d'effectuer une configuration VSFTPD, ouvrons les ports 990 et 40000-50000 pour autoriser les connexions TLS et la plage de ports passifs. à définir respectivement dans le fichier de configuration VSFTPD :

firewall-cmd --zone=public --permanent --add-port=990/tcp
firewall-cmd --zone=public --permanent --add-port=40000-50000/tcp
firewall-cmd --reload

4. Maintenant, ouvrez le fichier de configuration VSFTPD et spécifiez-y les détails SSL :

vi /etc/vsftpd/vsftpd.conf

Recherchez l'option ssl_enable et définissez sa valeur sur YES pour activer l'utilisation de SSL. De plus, puisque TSL est plus sécurisé que SSL, nous limiterons VSFTPD à l'utilisation de TLS. à la place, en utilisant l'option ssl_tlsv1_2 :

ssl_enable=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO

5. Ajoutez ensuite les lignes ci-dessous pour définir l'emplacement du certificat SSL et du fichier de clé :

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

6. Ensuite, nous devons empêcher les utilisateurs anonymes d'utiliser SSL, puis forcer toutes les connexions non anonymes à utiliser une connexion SSL sécurisée pour le transfert de données et à envoyer le mot de passe lors de la connexion :

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7. De plus, nous pouvons ajouter les options ci-dessous pour renforcer la sécurité du serveur FTP. Lorsque l'option require_ssl_reuse est définie sur YES, alors toutes les connexions de données SSL sont requises pour présenter la réutilisation de session SSL ; prouvant qu'ils connaissent le même secret principal que le canal de contrôle.

Nous devons donc l'éteindre.

require_ssl_reuse=NO

Encore une fois, nous devons sélectionner les chiffrements SSL que VSFTPD autorisera pour les connexions SSL cryptées avec l'option ssl_ciphers. Cela peut limiter considérablement les efforts des attaquants qui tentent de forcer un chiffrement particulier dans lequel ils ont probablement découvert des vulnérabilités :

ssl_ciphers=HIGH

8. Maintenant, définissez la plage de ports (port min et max) des ports passifs.

pasv_min_port=40000
pasv_max_port=50000

9. Vous pouvez éventuellement autoriser le débogage SSL, ce qui signifie que les diagnostics de connexion openSSL sont enregistrés dans le fichier journal VSFTPD avec l'option debug_ssl :

debug_ssl=YES

Enregistrez toutes les modifications et fermez le fichier. Redémarrons ensuite le service VSFTPD :

systemctl restart vsftpd

Étape 3 : Test du serveur FTP avec les connexions SSL/TLS

10. Après avoir effectué toutes les configurations ci-dessus, testez si VSFTPD utilise des connexions SSL/TLS en essayant d'utiliser FTP à partir de la ligne de commande comme suit :

ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp>

D'après la capture d'écran ci-dessus, nous pouvons voir qu'il y a une erreur nous informant que VSFTPD ne peut autoriser l'utilisateur à se connecter qu'à partir de clients prenant en charge les services de cryptage.

La ligne de commande n'offre pas de services de cryptage, produisant ainsi l'erreur. Ainsi, pour nous connecter en toute sécurité au serveur, nous avons besoin d'un client FTP prenant en charge les connexions SSL/TLS telles que FileZilla.

Étape 4 : Installez FileZilla pour vous connecter en toute sécurité à un serveur FTP

11. FileZilla est un client FTP moderne, populaire et surtout multiplateforme qui prend en charge les connexions SSL/TLS par défaut.

Pour installer FileZilla sous Linux, exécutez la commande ci-dessous :

--------- On CentOS/RHEL/Fedora --------- 
yum install epel-release filezilla

--------- On Debian/Ubuntu ---------
sudo apt-get install  filezilla   

12. Une fois l'installation terminée (ou bien si vous l'avez déjà installé), ouvrez-le et accédez à Fichier=>Gestionnaire de sites ou (appuyez sur Ctrl+S ) pour obtenir l'interface Site Manager ci-dessous.

Cliquez sur le bouton Nouveau site pour ajouter de nouveaux détails de connexion site/hôte.

13. Ensuite, définissez le nom de l'hôte/du site, ajoutez l'adresse IP, définissez le protocole à utiliser, le cryptage et le type de connexion comme dans la capture d'écran ci-dessous (utilisez les valeurs qui s'appliquent à votre scénario) :

Host:  192.168.56.10
Protocol:  FTP – File Transfer Protocol
Encryption:  Require explicit FTP over   #recommended 
Logon Type: Ask for password	        #recommended 
User: username

14. Cliquez ensuite sur Connecter pour saisir à nouveau le mot de passe, puis vérifiez le certificat utilisé pour la connexion SSL/TLS et cliquez une fois sur OK plus pour vous connecter au serveur FTP :

À ce stade, nous aurions dû nous connecter avec succès au serveur FTP via une connexion TLS, consultez la section état de la connexion pour plus d'informations à partir de l'interface ci-dessous.

15. Enfin et surtout, essayez de transférer des fichiers de la machine locale vers le serveur FTP dans le dossier des fichiers, jetez un œil à l'extrémité inférieure de l'interface FileZilla pour voir rapports concernant les transferts de fichiers.

C'est tout! Gardez toujours à l’esprit que FTP n’est pas sécurisé par défaut, à moins que nous ne le configurions pour utiliser les connexions SSL/TLS comme nous vous l’avons montré dans ce tutoriel. Partagez vos réflexions sur ce didacticiel/sujet via le formulaire de commentaires ci-dessous.