GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment configurer FTP avec TLS dans Ubuntu

FTP (File Transfer Protocol) est principalement utilisé pour transférer des fichiers entre ordinateurs. FTP fonctionne sur une architecture client-serveur, où le client demande un fichier au serveur et le serveur renvoie le fichier requis au client. Sur la machine cliente, l'application cliente FTP est utilisée pour communiquer avec le serveur. Il est également possible d'accéder au serveur FTP via 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.

Installer VSFTPD

VSFTPD (Very Secure FTP Daemon) est un logiciel permettant de configurer le FTP sur un serveur. Ce didacticiel utilise VSFTPD pour configurer le serveur FTP sur l'ordinateur. Avant d'installer VSFTPD, mettez à jour les référentiels sur votre serveur en exécutant la commande suivante.

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

Ensuite, installez VSFTPD avec la commande suivante.

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

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

[protégé par e-mail] :~$ vsftpd -v

La commande ci-dessus imprime la version de vsftpd si l'installation a réussi.

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 de la machine cliente vers le port 21 du serveur. Ensuite, le client commence à écouter une connexion de données sur un port aléatoire X et informe le serveur via la connexion de contrôle TCP que le client écoute la connexion de données sur le port X. Le serveur établit alors une connexion de données de son port 20 au port X sur l'ordinateur client.

Un problème peut survenir lorsque le client se trouve derrière un pare-feu et que le port X est bloqué. Dans ce cas, le serveur ne peut pas établir de connexion de données avec le client. La plupart du temps, pour éviter ce problème, le serveur FTP est utilisé en mode passif, dont nous parlerons plus loin dans cet article. Par défaut, VSFTPD utilise le mode passif, nous devons donc le changer en mode actif.

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

[protégé par e-mail] :~$ 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.

[protégé par e-mail] :~$ sudo mkdir /home/ubuntu/ftp

Spécifiez maintenant ce répertoire dans le fichier de configuration en modifiant l'option 'local_root'. Le paramètre suivant configure le chemin racine du serveur.

local_root=/home/ubuntu/ftp

L'option 'write_enable' doit être activée pour que les utilisateurs puissent écrire sur le serveur FTP.

Redémarrez toujours le serveur lorsque vous modifiez le fichier de configuration.

[protégé par e-mail] :~ $ sudo systemctl restart vsftpd

Définir un mot de passe pour un utilisateur

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

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

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

Configurer le pare-feu en mode actif

Lorsque FTP est utilisé en mode actif, le serveur FTP utilise 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 envoyer des données à n'importe quel port de . transférer le client. Nous utiliserons ufw pour configurer le pare-feu sur le serveur. Installez ufw avec la commande suivante.

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

Nous ouvrons maintenant les ports 20, 21 et 22 (pour la connexion SSH) côté serveur.

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

Activez et vérifiez l'état d'ufw avec les commandes suivantes.

[email protected] :~$ activer sudo ufw

[protégé par e-mail] :~ $ sudo statut ufw

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

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

Installer le client FTP

Maintenant, notre serveur est configuré en mode actif et nous pouvons y accéder du côté client. Pour l'application client, nous utilisons FileZilla, une application client FTP. Installez FileZilla avec la commande suivante.

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

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

Lorsque vous cliquez sur "Quickconnect", vous vous connectez au serveur FTP et êtes automatiquement dirigé vers le répertoire spécifié dans l'option "local_root" du fichier de configuration "/home/ubuntu/ftp".

Problèmes liés au mode actif

L'utilisation de FTP en mode actif pose des problèmes lorsque le client se trouve derrière le pare-feu. Si, après avoir entré les commandes de contrôle initiales, le serveur établit une connexion de données avec le client sur un port aléatoire, le port peut être bloqué par le pare-feu du 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 établit une connexion de contrôle avec le serveur sur le port 21 du serveur. Le client envoie alors la commande spéciale 'PASV' pour informer le serveur que la connexion de données est établie par le client au lieu du serveur. En réponse, le client obtient l'IP du serveur et un numéro de port aléatoire (ce numéro de port est configuré sur le serveur). Le client utilise cette adresse IP et ce numéro de port pour établir 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 afin que le pare-feu n'interfère pas avec la communication entre le client et le serveur.

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

[protégé par e-mail] :~$ sudo Nano /etc/vsftpd.conf

Définissez l'option 'pasv_enable' dans le fichier sur 'YES' pour permettre au serveur de 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 mentionné 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 établir 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 est établie sur un port entre 1024 et 1048. Redémarrez le serveur FTP après avoir modifié le fichier de configuration.

[protégé par e-mail] :~ $ sudo systemctl restart vsftpd

Configurer le pare-feu en mode passif

Si nous utilisons FTP en mode passif, la connexion de données se fera via 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 le proto tcp de n'importe qui vers n'importe quel port

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

[email protected] :~$ activer sudo ufw

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.

Tester la connexion

Maintenant que nous avons configuré le serveur FTP en mode passif, nous pouvons vérifier la connexion FTP avec l'application cliente. Pour ce faire, ouvrez FileZilla sur votre système.

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.

Configurer les 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 échanger des données sensibles entre le client et le serveur. Afin de communiquer via un canal sécurisé, des certificats SSL doivent être utilisés.

Génération de certificats SSL

Nous utilisons 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ère des certificats SSL pour votre serveur.

[email protégé] :~$ sudo openssl request -x509 -node -tag 365 -new key rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -aus /etc/ssl/private/vsftpd.pem

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

[protégé par e-mail] :~$ sudo ls /etc/SSL/private/

Utiliser des certificats dans le fichier de configuration

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

[protégé par e-mail] :~$ sudo Nano /etc/vsftpd.conf

Ajoutez les lignes suivantes à la fin des fichiers. Ces modifications garantissent 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 propriété /vsftpd.pem
rsa_private_key_file=/etc/SSL/Private/vsftpd.pem

Redémarrez le serveur FTP pour que ces modifications prennent effet.

[protégé par e-mail] :~ $ sudo systemctl restart vsftpd

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

Si vous avez des certificats d'une autorité de certification approuvée, cet avertissement ne devrait pas apparaître. Nous avons généré nos certificats à l'aide d'openssl, qui n'est pas une autorité de certification de confiance, c'est pourquoi il a demandé une authentification de certificat dans notre cas. Nous pouvons maintenant 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. Lorsque cette configuration est 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 du fichier de configuration rendent le serveur FTP accessible de manière anonyme.

La configuration ci-dessus définit le chemin racine pour les utilisateurs anonymes sur "/home/ubuntu/ftp/anon" et ne demande 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.

Redémarrez maintenant le serveur FTP.

[protégé par e-mail] :~ $ sudo systemctl restart vsftpd

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

ftp://3.8.12.52

L'URL ci-dessus vous amène à la racine du serveur FTP comme spécifié dans le fichier de configuration. Si la connexion anonyme est désactivée, toute tentative de connexion au serveur FTP à partir d'un navigateur vous demandera d'abord de vous authentifier, puis vous redirigera vers la 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 ce faire, nous devons modifier le paramètre 'local_enable'.

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

[protégé par e-mail] :~ $ sudo systemctl restart vsftpd

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

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

Tapez maintenant la commande suivante pour vous connecter au serveur FTP localement à l'aide de l'interface de ligne de commande.

[protégé par e-mail] :~$ ftp localhost

L'exécution de la commande ci-dessus génère une erreur 500.

Achèvement

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 ordinateur. VSFTPD est livré avec diverses configurations que vous pouvez utiliser pour personnaliser votre serveur FTP. Ce tutoriel a montré comment configurer un serveur FTP avec TLS pour une sécurité accrue. Pour en savoir plus sur les configurations FTP, visitez le lien suivant.

https://vsftpd.beasts.org/vsftpd_conf.html


Ubuntu
  1. Comment installer Ubuntu 21.04 sur Vmware Workstation

  2. Comment installer Ntopng sur Ubuntu 16.04

  3. Comment installer KeyPass Password Manager sur Ubuntu 20.04

  4. Mise à niveau d'Ubuntu 13.10 vers Ubuntu 14.04

  5. Comment installer Nginx sur Ubuntu 18.04

Comment installer Debian 11 (Bullseye) avec des captures d'écran

Comment vérifier l'historique de redémarrage du système et l'heure de démarrage sous Linux

Comment changer le mot de passe du compte FTP depuis SolidCP ?

Apache ne peut pas accéder au fichier alors qu'il a l'autorisation ?

Linux - Comment corriger la taille de la police dans Xfce après avoir installé un pilote graphique propriétaire ?

Comment installer l'éditeur de texte Atom sur Debian 11