FTP

Comment configurer FTP avec TLS dans Ubuntu

Comment configurer FTP avec TLS dans Ubuntu
FTP (File Transfer Protocol) est principalement utilisé pour transférer des fichiers entre ordinateurs. FTP fonctionne dans une architecture client-serveur, dans laquelle le client demande un fichier au serveur et le serveur renvoie le fichier requis au client. Sur le poste client, l'application client FTP permet de communiquer avec le serveur. Il est également possible d'accéder au serveur FTP sur le navigateur. Par défaut, FTP communique sur un canal non sécurisé, mais il est possible de configurer FTP pour transférer des données sur un canal sécurisé. Dans ce didacticiel, vous apprendrez à configurer un serveur FTP avec TLS, puis à utiliser FileZilla comme application cliente pour vous connecter au serveur FTP.

Installation de VSFTPD

VSFTPD (Very Secure FTP Daemon) est un logiciel utilisé pour configurer FTP sur un serveur. Dans ce tutoriel, VSFTPD sera utilisé pour configurer le serveur FTP sur la machine. Avant d'installer VSFTPD, mettez à jour les référentiels de votre serveur en exécutant la commande suivante.

[email protected]:~$ sudo apt-get update -y

Ensuite, installez VSFTPD à l'aide de la commande suivante.

[email protected]:~$ sudo apt-get install vsftpd -y

Enfin, vérifiez l'installation en vérifiant la version de vsftpd avec la commande suivante.

[email protégé] :~$ vsftpd -v

La commande ci-dessus affichera la version de vsftpd si l'installation réussit.

FTP en mode actif

En mode actif, le client FTP démarre la session en établissant la connexion de contrôle TCP depuis n'importe quel port aléatoire de la machine cliente vers le port 21 du serveur. Ensuite, le client commence à écouter sur un port X aléatoire pour une connexion de données et informe le serveur via la connexion TCP Control que le client attend la connexion de données sur le port X. Après cela, le serveur établit une connexion de données de son port 20 vers le port X sur la machine cliente.

Un problème peut survenir lorsque le client est derrière un pare-feu et que le port X est bloqué. Dans ce cas, le serveur n'est pas en mesure d'établir une connexion de données avec le client. Pour éviter ce problème, le serveur FTP est principalement utilisé en mode Passif, dont nous parlerons plus loin dans cet article. Par défaut, VSFTPD utilise le mode passif, nous devrons donc le changer en mode actif.

Tout d'abord, ouvrez le fichier de configuration VSFTPD.

[email protégé] :~$ sudo nano /etc/vsftpd.conf

Ajoutez la ligne suivante à la fin du fichier.

pasv_enable=NON

Assurez-vous également que l'option 'connect_from_port_20' est définie sur 'YES.' Cette option garantit que la connexion de données est établie sur le port 20 du serveur.

Ensuite, créez un répertoire que le serveur FTP utilisera pour stocker les fichiers. Pour ce tutoriel, nous allons configurer '/home/ubuntu/ftp/' comme chemin racine du serveur FTP.

[email protégé] :~$ sudo mkdir /home/ubuntu/ftp

Maintenant, spécifiez ce répertoire dans le fichier de configuration en changeant l'option 'local_root'. Le paramètre suivant configurera le chemin racine du serveur.

racine_locale=/home/ubuntu/ftp

L'option 'write_enable' doit être activée pour permettre aux utilisateurs d'écrire sur le serveur FTP.

Chaque fois que vous modifiez le fichier de configuration, redémarrez toujours le serveur.

[email protected]:~$ sudo systemctl restart vsftpd

Définition d'un mot de passe pour un utilisateur

Le client FTP se connecte au serveur à l'aide d'un nom d'utilisateur et d'un mot de passe. Définissez le mot de passe de votre utilisateur sur la machine à l'aide de la commande suivante.

[email protégé] :~$ sudo passwd ubuntu

La commande ci-dessus demandera le mot de passe de l'utilisateur 'ubuntu'.

Configuration du pare-feu pour le mode actif

Si FTP est utilisé en mode Actif, le serveur FTP utilisera deux ports pour communiquer avec le client, les ports 21 et 22. Le port 21 est utilisé pour transmettre des commandes au client et le port 20 est utilisé pour transférer des données vers n'importe quel port aléatoire du client. Nous utiliserons ufw pour configurer le pare-feu sur le serveur. Installez ufw à l'aide de la commande suivante.

[email protected]:~$ sudo apt-get install ufw

Maintenant, côté serveur, nous allons ouvrir les ports 20, 21 et 22 (pour la connexion SSH).

[email protected]:~$ sudo ufw autorise de n'importe quel port proto tcp

Activez et vérifiez l'état de ufw à l'aide des commandes suivantes.

[email protected]:~$ sudo ufw enable
[email protected]:~$ sudo ufw status

REMARQUE: si vous configurez votre serveur FTP sur le cloud, vous devrez également autoriser les ports 20, 21 et 22 dans le groupe de sécurité.

ATTENTION: Activez toujours le port 22, ainsi que les ports requis, avant d'activer ufw sur le système distant. Par défaut, UFW bloque le trafic du port 22, vous ne pourrez donc pas accéder à votre serveur distant en utilisant SSH si vous activez ufw sans autoriser le trafic du port 22.

Installation du client FTP

Maintenant, notre serveur est configuré en mode actif, et nous pouvons y accéder du côté client. Pour l'application cliente, nous utiliserons FileZilla, une application cliente ftp. Installez FileZilla à l'aide de la commande suivante.

[email protected]:~$ sudo apt-get install filezilla -y

Ouvrez l'application client FTP et entrez l'adresse IP publique et d'autres informations d'identification du serveur FTP.

Lorsque vous cliquez sur "Connexion rapide", vous vous connecterez au serveur FTP et serez automatiquement dirigé vers le répertoire spécifié dans l'option "local_root" dans le fichier de configuration "/home/ubuntu/ftp".

Problèmes en mode actif

L'utilisation de FTP en mode actif pose des problèmes lorsque le client est derrière le pare-feu. Après avoir entré les commandes de contrôle initiales, lorsque le serveur crée une connexion de données avec le client sur un port aléatoire, le port peut être bloqué par le pare-feu sur le client, provoquant l'échec du transfert de données. FTP peut être utilisé en mode passif pour résoudre ces problèmes de pare-feu.

FTP en mode passif

En mode Passif, le client crée une connexion de contrôle avec le serveur sur le port 21 du serveur. Le client envoie ensuite la commande spéciale 'PASV' pour informer le serveur que la connexion de données sera établie par le client au lieu du serveur. En réponse, le client reçoit l'IP du serveur et le numéro de port aléatoire (ce numéro de port sera configuré sur le serveur). Le client utilise cette IP et ce numéro de port pour créer une connexion de données avec le serveur. En mode passif, les connexions de données et de contrôle sont établies par le client, de sorte que le pare-feu ne perturbe pas la communication entre le client et le serveur.

Ouvrez le fichier de configuration FTP dans votre éditeur préféré.

[email protégé] :~$ sudo nano /etc/vsftpd.conf

Définissez l'option 'pasv_enable' sur 'YES' dans le fichier afin que le serveur puisse communiquer avec le client en mode passif. Définissez également l'option 'local_root' pour spécifier le répertoire racine du serveur et définissez l'option 'write_enable' sur 'YES' pour permettre aux utilisateurs de télécharger des fichiers sur le serveur.

Comme indiqué précédemment, la connexion de données est établie par le client et le serveur envoie son adresse IP publique et un port aléatoire au client pour créer une connexion de données. Ce port aléatoire sur le serveur peut être spécifié à partir d'une plage de ports dans le fichier de configuration.

La connexion de données entre le serveur et le client sera établie sur un port entre 1024 et 1048. Redémarrez le serveur FTP après avoir modifié le fichier de configuration.

[email protected]:~$ sudo systemctl restart vsftpd

Configuration du pare-feu en mode passif

Si nous utilisons FTP en mode passif, la connexion de données sera établie sur n'importe quel port de 1024 à 1048, il est donc nécessaire d'autoriser tous ces ports sur le serveur FTP.

[email protected]:~$ sudo ufw autorise de n'importe quel port proto tcp

Après avoir autorisé tous les ports sur le pare-feu, activez ufw en exécutant la commande suivante.

[email protected]:~$ sudo ufw enable

Autorisez toujours les ports sur le serveur avant d'activer le pare-feu ; sinon, vous ne pourrez pas accéder à votre serveur via SSH en tant que ufw, qui bloque le port 22 par défaut.

Test de la connexion

Maintenant, nous avons configuré le serveur FTP en mode passif et pouvons vérifier la connexion ftp avec l'application cliente. Ouvrez FileZilla dans votre système pour le faire.

Après avoir entré l'hôte, le nom d'utilisateur, le mot de passe et le port, vous pouvez maintenant vous connecter à votre serveur. Maintenant que vous êtes connecté au serveur FTP fonctionnant en mode passif, vous pouvez télécharger des fichiers sur le serveur.

Configuration des certificats SSL avec le serveur FTP

Par défaut, le serveur FTP établit la connexion entre le client et le serveur via un canal non sécurisé. Ce type de communication ne doit pas être utilisé si vous souhaitez partager des données sensibles entre le client et le serveur. Pour communiquer sur un canal sécurisé, il est nécessaire d'utiliser des certificats SSL.

Génération de certificats SSL

Nous utiliserons des certificats SSL pour établir une communication sécurisée entre le client et le serveur. Nous allons générer ces certificats en utilisant openssl. La commande suivante générera des certificats SSL pour votre serveur.

[email protected]:~$ sudo openssl req -x509 -nodes -day 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Lorsque vous exécutez la commande ci-dessus, des questions vous seront posées. Après avoir répondu à ces questions, les certificats seront générés. Vous pouvez vérifier les certificats dans le terminal.

[email protégé] :~$ sudo ls /etc/ssl/private/

Utilisation de certificats dans le fichier de configuration

Maintenant, nos certificats sont prêts à l'emploi. Nous allons configurer le 'vsftpd.conf' pour utiliser les certificats SSL pour la communication. Ouvrez le fichier de configuration avec la commande suivante.

[email protégé] :~$ sudo nano /etc/vsftpd.conf

Ajoutez les lignes suivantes à la fin des fichiers. Ces modifications garantiront que le serveur FTP utilise les certificats SSL nouvellement générés pour communiquer en toute sécurité avec le client.

ssl_enable=OUI
force_local_data_ssl=NON
force_local_logins_ssl=NON
ssl_tlsv1=OUI
ssl_sslv2=NON
ssl_sslv3=NON
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

Redémarrez le serveur FTP pour appliquer ces modifications.

[email protected]:~$ sudo systemctl restart vsftpd

Après avoir redémarré le serveur, essayez de vous connecter à votre serveur à l'aide de l'application cliente FileZilla. Cette fois, l'application cliente vous demandera si vous souhaitez faire confiance à ces certificats.

Si vous avez des certificats d'une autorité de certification de confiance, cet avertissement ne devrait pas apparaître. Nous avons généré nos certificats en utilisant openssl, qui n'est pas une autorité de certification de confiance, c'est pourquoi elle a demandé une authentification de certificat dans notre cas. Maintenant, nous pouvons communiquer entre le client et le serveur via un canal sécurisé.

Configuration anonyme

Vous pouvez également activer la connexion anonyme sur votre serveur FTP. Avec cette configuration activée, n'importe quel utilisateur peut se connecter au serveur FTP avec n'importe quel nom d'utilisateur et mot de passe. Les paramètres suivants dans le fichier de configuration rendront le serveur FTP accessible de manière anonyme.

La configuration ci-dessus définit le chemin d'accès racine pour les utilisateurs anonymes à '/home/ubuntu/ftp/anon' et il ne demandera pas le mot de passe lorsqu'un utilisateur anonyme se connecte.

REMARQUE: Assurez-vous que le chemin '/home/ubuntu/ftp/anon' existe sur le serveur FTP.

Maintenant, redémarrez le serveur FTP.

[email protected]:~$ sudo systemctl restart vsftpd

Après avoir redémarré le serveur, nous essaierons de nous connecter au serveur via le navigateur Google Chrome. Allez à l'URL suivante.

ftp://3.8.12.52

L'URL ci-dessus vous mènera au répertoire racine du serveur FTP, comme spécifié dans le fichier de configuration. Avec la connexion anonyme désactivée, lorsque vous essayez de vous connecter au serveur FTP à l'aide d'un navigateur, il vous sera d'abord demandé une authentification, puis vous serez redirigé vers le répertoire racine du serveur.

Configurer l'accès local

Nous pouvons également autoriser ou bloquer l'accès local au serveur FTP en modifiant le fichier de configuration. Actuellement, nous pouvons accéder à notre serveur FTP localement sans utiliser l'application client FTP, mais nous pouvons bloquer cet accès. Pour cela, il faut modifier le paramètre 'local_enable'.

Tout d'abord, redémarrez le serveur FTP.

[email protected]:~$ sudo systemctl restart vsftpd

Après avoir redémarré le serveur, essayez d'accéder au serveur FTP localement en utilisant l'interface de ligne de commande. Connectez-vous à votre serveur distant en utilisant SSH.

[email protégé] :~$ ssh [email protected] -je

Maintenant, exécutez la commande suivante pour vous connecter localement au serveur FTP à l'aide de l'interface de ligne de commande.

[email protégé] : ~$ ftp localhost

Lorsque vous exécutez la commande ci-dessus, une erreur 500 s'affichera.

Conclusion

Le protocole de transfert de fichiers est utilisé depuis de nombreuses années pour transférer des fichiers et des documents sur Internet. VSFTPD est l'un des packages utilisés comme serveur FTP sur votre machine. VSFTPD contient diverses configurations que vous pouvez utiliser pour personnaliser votre serveur FTP. Ce tutoriel vous a montré comment configurer un serveur FTP avec TLS pour une sécurité renforcée. Pour en savoir plus sur les configurations FTP, visitez le lien suivant.

http://vsftpd.des bêtes.org/vsftpd_conf.html

Comment utiliser le moteur de triche GameConqueror sous Linux
L'article couvre un guide sur l'utilisation du moteur de triche GameConqueror sous Linux. De nombreux utilisateurs qui jouent à des jeux sur Windows u...
Meilleurs émulateurs de console de jeu pour Linux
Cet article répertorie les logiciels d'émulation de console de jeu populaires disponibles pour Linux. L'émulation est une couche de compatibilité logi...
Meilleures distributions Linux pour les jeux en 2021
Le système d'exploitation Linux a parcouru un long chemin depuis son apparence originale, simple et basée sur le serveur. Ce système d'exploitation s'...