GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment configurer VSFTPD FTPS avec SSL/TLS sur Ubuntu 18.04

FTP, l'acronyme de File Transfer Protocol, est utilisé pour transférer des fichiers entre un ordinateur et un serveur dans un réseau informatique donné. Le protocole FTP utilise un moyen de transfert de données non sécurisé et doit être limité au réseau auquel vous faites confiance. Au lieu de cela, nous devrions avoir FTPS (File Transfer Protocol with SSL) qui utilise une connexion sécurisée SSL entre les deux extrémités ou utiliser SFTP (SSH File Transfer Protocol/Secure File Transfer Protocol).

Ce didacticiel fournit des étapes détaillées sur la configuration du serveur vsftpd sécurisé avec SSL/TLS sur Ubuntu 18.04 et la connexion au serveur à l'aide d'un terminal et d'outils graphiques.

Installer le serveur VSFTPD

Il existe plusieurs serveurs FTP disponibles sur Linux. Nous allons installer vsftp. Pour ce faire sur Ubuntu 18.04, nous tapons la commande suivante dans le terminal :

sudo apt install vsftpd

Une fois le vsftpd installé, son fichier de configuration par défaut se trouve dans /etc/vsftpd.conf. Pour apporter des modifications à ce fichier et tester des configurations personnalisées, nous créons d'abord une sauvegarde de ce fichier. Pour ce faire, vous pouvez exécuter :

sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak

Ensuite, nous créons le fichier vsftpd.conf avec la commande suivante :

sudo vim /etc/vsftpd.conf

et ajoutez les lignes suivantes au fichier :vsftpsft

 listen=NO
 listen_ipv6=YES
 anonymous_enable=NO
 local_enable=YES
 write_enable=YES
 local_umask=022
 dirmessage_enable=YES
 use_localtime=YES
 xferlog_enable=YES
 connect_from_port_20=YES
 chroot_local_user=YES
 secure_chroot_dir=/var/run/vsftpd/empty
 pam_service_name=vsftpd
 pasv_enable=Yes
 pasv_min_port=10000
 pasv_max_port=11000
 user_sub_token=$USER
 local_root=/home/$USER/ftp
 userlist_enable=YES
 userlist_file=/etc/vsftpd.userlist
 userlist_deny=NO

Notez qu'il s'agit des configurations les plus couramment utilisées et que vous êtes libre de les modifier en fonction de vos besoins.

Ubuntu 18.04 est livré avec ufw (pare-feu non compliqué) préinstallé et activé. Vous pouvez vérifier si ufw est en cours d'exécution sur votre machine avec cette commande :

sudo service ufw status

S'il est en cours d'exécution et que vous allez le laisser fonctionner, vous devez autoriser le trafic entrant vers les ports FTP (20,21 pour les connexions actives et 10000-10100 pour les passives). Pour ce faire, vous pouvez exécuter :

sudo ufw allow from any to any port 20,21,10000:11000 proto tcp

En cas de succès, le résultat ressemblera à celui ci-dessous :

Rules updated
Rules updated (v6)

Une fois toutes ces étapes terminées, nous devons redémarrer le serveur vsftpd avec la commande suivante :

sudo service vsftpd restart

Création d'un utilisateur pour se connecter au serveur FTP

Une fois le serveur vsftp installé et configuré selon nos besoins, nous n'avons pas besoin de créer un utilisateur (par exemple ftpsuer) pour se connecter au serveur ftp. Pour ce faire, vous pouvez exécuter :

sudo useradd -m ftpuser

Créez un mot de passe pour l'utilisateur nouvellement créé avec la commande ci-dessous :

sudo passwd ftpuser

Ensuite, vous serez invité à entrer le nouveau mot de passe UNIX et à le retaper pour que les modifications soient appliquées. Une sortie réussie ressemble à celle-ci :

passwd: password updated successfully

Préparer le répertoire utilisateur FTP

L'une des actions les plus importantes à effectuer pour sécuriser la connexion FTP consiste à restreindre les utilisateurs à leur répertoire personnel afin qu'ils n'aient aucun accès aux autres répertoires. Pour ce faire dans vsftpd, nous devons activer le chroot dans le fichier de configuration, ce que nous avons déjà fait dans la partie configurations de l'article (chroot_local_user=YES ). La méthode de sécurité du répertoire de vsftpd suppose que l'utilisateur n'y a pas accès en écriture. Mais si nous donnons un accès FTP aux utilisateurs existants et qu'ils utilisent le shell pour utiliser le serveur, ils peuvent avoir besoin d'un accès en écriture à leur dossier personnel. Pour éviter le manque de sécurité et également avoir un accès FTP approprié pour l'utilisateur, nous créons un dossier ftp dans le répertoire personnel de l'utilisateur et l'ajoutons à la configuration vsftpd en tant que racine locale lors de la connexion via FTP. Nous devons également changer le propriétaire du répertoire et supprimer l'accès en écriture. Pour ce faire, vous pouvez exécuter :

sudo mkdir /home/ftpuser/ftp
sudo chown nobody:nogroup /home/ftpuser/ftp
sudo chmod a-w /home/ftpuser/ftp

puis ajoutez/modifiez les lignes suivantes dans le fichier de configuration vsftpd /etc/vsftpd.conf

user_sub_token=$USER 
local_root=/home/$USER/ftp

Une fois ces étapes terminées, nous devons créer un autre dossier dans /home/ftpuser/ftp et attribuer sa propriété à l'utilisateur

sudo mkdir /home/ftpuser/ftp/files
sudo chown ftpuser:ftpuser/home/ftpuser/ftp/files

Pour tester que nous sommes en mesure d'afficher les fichiers dans le répertoire personnel de l'utilisateur après la connexion au serveur FTP, nous allons créer un fichier de test dans ce répertoire et y ajouter du texte. Pour ce faire, vous pouvez exécuter :

echo "test file for vsftpd" | sudo tee /home/ftpuser/ftp/files/test.txt

Pour autoriser ou refuser l'accès d'utilisateurs spécifiques à vsftpd, nous pouvons utiliser le fichier userlist et ajouter l'enregistrement approprié dans le fichier de configuration vsftpd. Pour ce faire, vous pouvez exécuter ce qui suit :

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

Si userlist_deny est défini sur NO, seuls les utilisateurs ajoutés au fichier peuvent accéder au serveur FTP et s'il est défini sur YES, les utilisateurs répertoriés dans le fichier n'auront pas accès au serveur FTP et les autres y auront accès. Ajoutez les noms d'utilisateur au fichier mentionné ci-dessus avec la commande ci-dessous :

echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist

Configurer SSL pour VSFTPD

Étant donné que les données (même les informations d'identification) transférées via FTP ne sont pas cryptées, nous pouvons activer TLS/SSL pour fournir un autre niveau de sécurité à notre serveur FTP. Pour créer un certificat à l'aide d'openssl, exécutez la commande suivante :

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

où -days 365 est pour ajouter un certificat pour un an et ajouter la même valeur pour -out, -keyout flags pour localiser la clé privée et le certificat dans le même fichier. Vous serez invité à ajouter toutes les informations nécessaires pour créer un certificat, comme indiqué ci-dessous

Generating a 2048 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) [AU]:AU
State or Province Name (full name) [Some-State]:SY
Locality Name (eg, city) []:Sydney
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Linoxide
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:ubuntu
Email Address []:[email protected]

Une fois le certificat créé, nous devons l'ajouter au fichier de configuration vsftpd et activer SSL. Pour ce faire, ajoutez la ligne suivante au fichier mentionné :

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

Ensuite, nous devons refuser les connexions anonymes via SSL et exiger SSL pour le transfert de données et la connexion. Pour ce faire, ajoutez les lignes suivantes à /etc/vsftpd.conf fichier :

 allow_anon_ssl=NO
 force_local_data_ssl=YES
 force_local_logins_ssl=YES

Une fois les lignes ci-dessus ajoutées, nous allons configurer le serveur pour utiliser TLS, qui est le successeur préféré de SSL. Pour cela, ajoutez les lignes suivantes dans le même fichier :

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Après toutes les étapes, notre fichier de configuration vsftpd ressemblera à ceci :

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
pasv_enable=Yes
pasv_min_port=10000
pasv_max_port=11000
user_sub_token=$USER
local_root=/home/$USER/ftp
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Après tout changement dans le fichier de configuration de vsftpd, nous devons redémarrer le service avec la commande suivante :

sudo service vsftpd restart

Vous pouvez également configurer vsftpd pour utiliser le certificat Letsencrypt pour sftp, mais assurez-vous d'avoir un domaine à valider. Vous pouvez ajouter une variable de chemin dans la configuration vsftpd où le certificat ssl et la clé privée sont stockés.

rsa_cert_file=/ssl/letsencrypt/ftpdomain.com/chain-bundle.pem
rsa_private_key_file=/ssl/letsencrypt/ftpdomain.com/private-key.pem

Connexion au serveur FTP

Il existe deux méthodes pour se connecter au serveur ftp :

  • à l'aide d'un terminal
  • utilisation d'un client FTP avec interface graphique

Se connecter à l'aide du terminal

Pour vous connecter au serveur ftp via la ligne de commande, tapez la commande suivante dans le terminal :

ftp ubuntu

ubuntu est le nom d'hôte de la machine sur laquelle le serveur ftp est installé. Assurez-vous que la machine du serveur ftp est accessible via son nom d'hôte à partir de la machine à laquelle vous essayez de vous connecter.

Une fois connecté, vous serez invité à entrer le nom d'utilisateur et le mot de passe pour vous connecter au serveur ftp :

Connected to ubuntu.
220 (vsFTPd 3.0.3)
Name (ubuntu:ubuntu): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Tapez ls pour vérifier si le fichier créé avant le test est là :

ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 2 1001 1001 4096 May 21 13:39 files
226 Directory send OK.

Se connecter à l'aide d'un client FTP avec interface graphique

Nous allons utiliser Filezilla pour nous connecter à notre serveur FTP installé sous Linux. Pour ce faire, ouvrez le client Filezilla sur votre machine et entrez l'adresse IP du serveur FTP, les informations d'identification ftpuser pour vous connecter et appuyez sur le bouton de connexion comme indiqué dans la capture d'écran ci-dessous. Vous serez invité à ajouter le certificat à approuvé, après quoi vous pourrez vous connecter au serveur FTP.

Après la connexion, nous pouvons voir que le test.txt que nous avons créé auparavant est là.

Lecture connexe :

  • Comment configurer le serveur SFTP MySecureShell sur Ubuntu 18.04
  • 5 étapes pour installer et configurer ProFTPD sur Debian 9 Stretch
  • 12 commandes lftp pour gérer les fichiers avec des exemples

Comme vous pouvez l'apprendre dans l'article, l'installation du serveur vsftpd et la connexion à celui-ci sont très simples et peuvent être effectuées en quelques étapes. Le point principal ici est de sécuriser le serveur ftp via son fichier de configuration, comme le chrootage de l'utilisateur dans son répertoire personnel, la désactivation de la connexion anonyme et l'ajout d'umask local et des autorisations de lecture et d'écriture de l'utilisateur.


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

  2. Installer Vsftpd avec SSL/TLS sur Ubuntu 20.04 - Meilleure Procédure ?

  3. Comment sécuriser vsFTPd avec SSL/TLS

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

  5. Comment configurer VSFTPD avec une connexion cryptée SSL/TLS ?

Comment installer le serveur VsFTPD avec TLS sur Ubuntu 18.04 LTS

Comment installer ProFTPD avec TLS sur Ubuntu 20.04 LTS

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

Comment installer Nginx avec Let's Encrypt TLS/SSL sur Ubuntu 20.04

Comment installer Vsftpd sur Ubuntu 16.04

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