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

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

Par sa conception d'origine, FTP (Protocole de transfer de fichier) 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 représente une menace massive pour les données ainsi que la sécurité du serveur.

Dans ce tutoriel, nous expliquerons comment activer manuellement les services de chiffrement des données dans un serveur FTP dans CentOS / RHEL 7 et Fedora; Nous passerons par différentes étapes de sécurisation Vsftpd (Démon FTP très sécurisé) Services utilisant SSL / TLS certificats.

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 tutoriel seront exécutées comme racine, Sinon, utilisez la commande sudo pour obtenir des privilèges racine si vous ne contrôlez pas le serveur à l'aide du compte racine.

É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 stockons le SSL / TLS Certificat et fichiers clés:

# mkdir / etc / ssl / privé 

2. Ensuite, exécutez la commande ci-dessous pour créer le certificat et la clé pour vsftpd Dans un seul fichier, voici l'explication de chaque drapeau utilisé.

  1. req - est une commande pour x.509 Gestion de la demande de signature de certificat (RSE).
  2. x509 - signifie x.509 Gestion des données du certificat.
  3. jours - Définit le nombre de jours que le certificat est valable pour.
  4. newcy - 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. clé - Définit le fichier de stockage clé.
  7. dehors - 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.

Nom du pays (code de 2 lettres) [xx]:DANS Nom de l'état ou de la province (nom complet) []:Parel inférieur Nom de la localité (par exemple, ville) [Ville par défaut]:Mumbai Nom de l'organisation (par exemple, société) [Default Company Ltd]:Tecmint.com Nom de l'unité organisationnelle (par exemple, section) []:Linux et open source Nom commun (par exemple, votre nom ou le nom d'hôte de votre serveur) []:Tecmint Adresse e-mail []:[Protégé par e-mail] 

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

3. Avant d'effectuer toutes les configurations VSftpd, ouvrons les ports 990 et 40000-50000 Pour permettre aux connexions TLS et à la plage de ports des ports passifs de définir respectivement 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 - recharger 

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

# vi / etc / vsftpd / vsftpd.confli 

Recherchez l'option ssl_enable et définir sa valeur sur OUI Pour activer l'utilisation de SSL, en outre, puisque TSL est plus sécurisé que SSL, nous limiterons VSFTPD à utiliser TLS à la place, en utilisant le ssl_tlsv1_2 option:

ssl_enable = oui ssl_tlsv1_2 = oui ssl_sslv2 = non ssl_sslv3 = non 

5. Ensuite, ajoutez 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 pour utiliser une connexion SSL sécurisée pour le transfert de données et pour envoyer le mot de passe pendant la connexion:

allow_anon_ssl = non force_local_data_ssl = oui force_local_logins_ssl = oui 

7. De plus, nous pouvons ajouter les options ci-dessous pour augmenter la sécurité du serveur FTP. Lorsque l'option require_ssl_reuse est réglé sur OUI, Ensuite, toutes les connexions de données SSL sont nécessaires pour présenter une réutilisation de la session SSL; prouver qu'ils connaissent le même secret que le canal de contrôle.

Par conséquent, nous devons l'éteindre.

require_ssl_reuse = non 

Encore une fois, nous devons sélectionner quels chiffres SSL VSFTPD permettra pour les connexions SSL cryptées avec le SSL_CIPHERS option. Cela peut limiter considérablement les efforts des attaquants qui essaient de forcer un chiffre 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. Éventuellement, permettez le débogage SSL, ce qui signifie que les diagnostics de connexion OpenSSL sont enregistrés dans le fichier journal VSFTPD avec le debug_ssl option:

debug_ssl = oui 

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

# SystemCTL Redémarrer VSFTPD 

Étape 3: Tester le serveur FTP avec des connexions SSL / TLS

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

# FTP 192.168.56.10 connectés à 192.168.56.10 (192.168.56.dix). 220 Bienvenue à Tecmint.service ftp com. Nom (192.168.56.10: Root): Ravi 530 Les séances non anonymes doivent utiliser le chiffrement. échec de la connexion. 421 Service non disponible, le serveur distant a une connexion fermée FTP> 
Vérifiez la connexion sécurisée FTP SSL

À partir de la capture d'écran ci-dessus, nous pouvons voir qu'il existe une erreur nous informant que VSFTPD ne peut permettre à l'utilisateur de se connecter à des clients qui prennent en charge les services de chiffrement.

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

Étape 4: Installez Filezilla pour se 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 dans Linux, exécutez la commande ci-dessous:

--------- Sur Centos / Rhel / Fedora --------- # yum installer EPEL-Release Filezilla --------- Sur Debian / Ubuntu --------- $ sudo apt-get install filezilla 

12. Lorsque l'installation se termine (ou bien si vous l'avez déjà installée), ouvrez-la et allez à Fichier => gestionnaire de sites ou (appuyez sur Ctrl + s) pour obtenir le Chef de site Interface ci-dessous.

Cliquer sur Nouveau site bouton pour ajouter un nouveau site de connexion site / hôte.

Ajouter un nouveau site FTP dans Filezilla

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

Héberger: 192.168.56.dix Protocole: FTP - Protocole de transfert de fichiers Chiffrement: Nécessitent un FTP explicite sur #Recommunond Type de connexion: Demandez le mot de passe # utilisateur recommandé: nom d'utilisateur 
Ajouter les détails du serveur FTP dans Filezilla

14. Puis cliquez sur Connecter Pour saisir à nouveau le mot de passe, puis vérifier le certificat utilisé pour la connexion SSL / TLS et cliquer D'ACCORD Une fois de plus pour se connecter au serveur FTP:

Vérifiez le certificat FTP SSL

À ce stade, nous devons nous être connectés avec succès dans le serveur FTP sur une connexion TLS, vérifier la section d'état de la connexion pour plus d'informations à partir de l'interface ci-dessous.

Connecté au serveur FTP sur TLS / SSL

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

Transférer des fichiers en toute sécurité à l'aide de FTP

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