Serveur FTP ProFTPd pour Linux : Installation et configuration
Actuellement, il existe un grand nombre de programmes qui agissent comme des serveurs FTP. Le protocole FTP (File Transfer Protocol) nous permet de transférer des fichiers localement et à distance facilement et surtout très rapidement. Le protocole FTP en lui-même ne crypte pas les données transmises ou l’authentification par nom d’utilisateur et mot de passe, mais si nous utilisons FTPES tout le trafic est crypté du client FTP au serveur FTP . Aujourd’hui, dans RedesZone, nous allons vous apprendre à installer et configurer de manière avancée le serveur FTP proFTPd, l’un des logiciels les plus complets et les plus puissants disponibles pour les systèmes d’exploitation Linux. Ce serveur FTP est le préféré de nombreux administrateurs système pour la configurabilité qu’il est capable de nous fournir. Dans cet article, nous allons vous montrer comment l’installer et le configurer complètement sur un système qui exécute Ubuntu afin que plusieurs utilisateurs puissent y accéder à distance.
Principales caractéristiques de proFTPd
Le serveur proFTPd est compatible avec tous les systèmes d’exploitation basés sur Linux et Unix , il est donc également compatible avec les systèmes d’exploitation populaires basés sur FreeBSD qui sont largement utilisés à grande échelle pour les serveurs. Ce serveur FTP dispose d’un grand nombre d’options de configuration, telles que la création d’utilisateurs virtuels qui ne sont utilisés que sur le serveur FTP et qui ne font pas partie du système d’exploitation. Nous pouvons également définir des routes virtuelles pour chacun de ces utilisateurs que nous avons créés précédemment, limiter la bande passante des différents utilisateurs au niveau de l’application, et nous pouvons même définir une MasqueradeAddressafin que nous n’ayons aucun problème si nous utilisons FTP PASV, qui est le plus recommandé pour éviter les problèmes dans les environnements NAT. D’autres options sont la possibilité de créer des règles avancées pour que d’un certain réseau nous ayons une série d'»autorisations», et d’un autre réseau nous en ayons d’autres, puisque nous pouvons subdiviser le serveur FTP en classes.
Le protocole FTP utilise une architecture client-serveur, il utilise le port TCP 21 (qui peut être modifié) pour le canal de contrôle, où la connexion de données sera établie, l’authentification du client FTP qui se connecte au serveur, et aussi la fin de la connexion de données. Le canal de contrôle dépend de la façon dont nous avons configuré le serveur FTP, auparavant c’était le mode actif qui utilisait le port TCP 20 pour transférer des données, mais cela pose des problèmes avec le NAT des réseaux. Actuellement, le mode passif de FTP est utilisé, où nous avons une gamme de ports passifs, sur le serveur FTP, nous devrons ouvrir les ports passifs sur le routeur pour éviter les problèmes de connectivité.
Une option très importante aujourd’hui est le cryptage, à la fois lorsqu’il s’agit d’authentifier les clients qui se connectent au serveur FTP, et lorsqu’il s’agit de transmettre toutes les informations localement et à distance. Ce logiciel proFTPd intègre la possibilité de mettre en place un serveur FTPES , il utilisera donc le protocole TLS 1.2 ou TLS 1.3 afin que toutes les informations de l’origine (client FTP) à la destination (le serveur FTP lui-même) soient cryptées et authentifiées . Afin de configurer le proFTPd avec FTPES, il sera nécessaire de créer des certificats numériquesDans ce tutoriel, nous vous apprendrons également à les créer et à les utiliser, afin que toutes vos communications avec le serveur FTPES soient sécurisées. Grâce à ce protocole, l’authentification et le transfert de données seront protégés, à la fois avec TLS 1.2 et TLS 1.3 dans le canal de contrôle, et avec AES-256-GCM dans le canal de données, idéal pour avoir une accélération de cryptage par matériel et atteindre un haut vitesses de transfert. Si nous comparons les performances que nous obtenons avec un processeur qui intègre AES-NI par rapport à un autre qui ne l’a pas, nous parlons de performances environ 10 fois supérieures, c’est pourquoi il est très important que notre processeur intègre cette technologie.
Une fois que nous connaissons les principales fonctionnalités de proFTPd, voyons comment installer ce serveur sur n’importe quelle distribution Linux ou Unix.
Installation de ProFTPd
proFTPd est très facile à installer car il se trouve dans les référentiels de logiciels de toutes les distributions Linux et Unix, cependant, vous pouvez également le télécharger depuis le site officiel pour l’installer ultérieurement manuellement. Pour l’installer sur n’importe quelle distribution Linux telle que Debian ou Ubuntu, installez simplement le package «proftpd» depuis un terminal avec la commande suivante :
sudo apt install proftpd
Lors de l’installation, il nous demandera le type d’installation que nous souhaitons. En cas de faible utilisation du serveur FTP, nous pouvons sélectionner l’option » inetd » pour économiser les ressources système. Si nous allons faire un usage considérable du serveur FTP avec plusieurs utilisateurs et pendant longtemps, nous devons l’installer en tant que » standalone » ou » indépendamment «. Cette configuration pourra être modifiée ultérieurement, mais nous vous recommandons de sélectionner «standalone» car elle fonctionnera comme un serveur indépendant, et en cas de fort trafic, elle fonctionnera mieux pour vous.
Nous sélectionnons l’option qui correspond le mieux à nos besoins et finalisons l’installation du serveur. Comme avec d’autres programmes sous Linux, il ne sera pas nécessaire de redémarrer l’ordinateur ou le serveur, nous pouvons commencer à travailler avec lui instantanément.
Démarrer, arrêter, redémarrer et recharger le processus proFTPd
Si vous devez démarrer, arrêter ou redémarrer le processus proFTPd et que vous utilisez le système SysVinit typique , vous pouvez exécuter les commandes suivantes pour effectuer toutes les actions.
Pour démarrer le serveur proFTPD :
/etc/init.d/proftpd start
ou vous pouvez également utiliser :
service proftpd start
Pour arrêter le serveur proFTPD :
/etc/init.d/proftpd stop
ou vous pouvez également utiliser :
service proftpd stop
Si vous souhaitez redémarrer le serveur proFTPd, vous pouvez utiliser :
/etc/init.d/proftpd restart
ou vous pouvez également utiliser :
service proftpd restart
Si vous devez démarrer, arrêter ou redémarrer le processus proFTPd et que vous utilisez le système systemd , vous pouvez exécuter les commandes suivantes pour effectuer toutes les actions.
Pour démarrer le serveur proFTPD :
systemctl start proftpd
ou vous pouvez également utiliser :
systemctl start proftpd.service
Pour arrêter le serveur proFTPD :
systemctl stop proftpd
ou vous pouvez également utiliser :
systemctl stop proftpd.service
Si vous souhaitez redémarrer le serveur proFTPd, vous pouvez utiliser :
systemctl restartproftpd
ou vous pouvez également utiliser :
systemctl restart proftpd.service
Quand aurions-nous besoin de faire un « rechargement » pour recharger le service proFTPd ? Lorsque nous apportons une modification à la configuration, afin qu’elle l’applique automatiquement. Dans le cas de l’utilisation de SysVinit pour faire le «reload», vous devez mettre les éléments suivants :
/etc/init.d/proftpd reload
ou vous pouvez également utiliser :
service proftpd reload
Dans le cas de l’utilisation de Systemd, vous devez mettre les éléments suivants :
systemctl reload proftpd
ou vous pouvez également utiliser :
systemctl reload proftpd.service
Enfin, si vous souhaitez voir l’état actuel du serveur proFTPd, vous pouvez exécuter les commandes suivantes, selon que vous utilisez SysVinit ou Systemd, vous devez utiliser les commandes suivantes. Si vous utilisez SysVinit, vous devrez utiliser :
service proftpd status
ou alors
/etc/init.d/proftpd status
et si vous utilisez Systemd :
systemctl status proftpd
ou alors
systemctl status proftpd.service
Une fois que vous savez comment démarrer, arrêter, restaurer, recharger la configuration et voir l’état du logiciel proFTPd, voyons comment nous pouvons le configurer avec le démarrage du système.
Configurer proFTPd au démarrage du système
Lorsque nous installons proFTPd, nous le configurerons automatiquement au démarrage, c’est-à-dire que lorsque le système démarre, le processus proFTPd démarre afin que nous puissions nous connecter. Si cela ne se produit pas, nous pouvons toujours l’activer manuellement en exécutant les commandes suivantes :
Si vous utilisez SysVinit :
chkconfig proftpd on
Si vous utilisez systemd :
systemctl enable proftpd
systemctl enable proftpd.service
Une fois que nous saurons comment le démarrer avec le système, nous allons voir chacune des configurations proFTPd afin que vous puissiez tout configurer en détail.
Configuration ProFTPd
Le fichier de configuration principal de proFTPd se trouve dans /etc/proftpd/proftpd.conf . À partir de là, nous devrons configurer la plupart des aspects de notre serveur FTP. La première chose que nous devons faire est d’établir un dossier comme répertoire principal pour tous les utilisateurs FTP. Pour ce faire, nous allons ouvrir le fichier de configuration précédent avec notre éditeur de texte préféré :
sudo gedit /etc/proftpd/proftpd.conf
Une fois là-bas, nous chercherons la ligne commentée «DefaultRoot» et la décommenterons en supprimant le hash #. Cela nous permettra que lorsque chaque utilisateur accède à son compte FTP, il accède directement à son dossier « home ».
Si nous voulons que tous les utilisateurs qui se connectent accèdent au même dossier par défaut, nous devons modifier le paramètre DefaultRoot et ajouter le chemin auquel nous voulons qu’ils accèdent. Par exemple, dans notre cas, nous avons créé un dossier appelé «proftpd» dans / home / et nous souhaitons que tous les utilisateurs y accèdent par défaut. Le fichier de configuration sera le suivant :
Nous pouvons également faire en sorte que tous les utilisateurs accèdent à un dossier par défaut (comme à l’étape précédente) à l’exception d’un utilisateur pour lequel nous souhaitons accéder à un autre ou simplement disposer d’une autorisation d’administrateur et pouvant accéder à l’intégralité du disque.
Pour cela nous devons modifier les aspects suivants :
Le paramètre DefaultRoot a la structure suivante :
DefaultRoot [directorio] [grupo de usuarios que tendrán ese directorio por defecto] [Grupo de usuarios a los que no se les aplicará ese directorio]
C’est-à-dire que nous allons donner l’exemple d’avoir 2 utilisateurs, A et B. A ne pourra accéder qu’à son répertoire tandis que B pourra accéder à l’intégralité du disque dur. Il faut ajouter les lignes suivantes :
DefaultRoot /home/ftp A
DefaultRoot / B
De cette façon, lorsque l’utilisateur B accède au serveur, il aura un contrôle total sur tous les fichiers du disque, alors que si c’est A qui accède, il ne pourra gérer que son dossier.
D’autres paramètres intéressants à configurer sont :
- ServerName : permet d’établir un nom pour le serveur.
- AccessGrantMsg : message de bienvenue. (Vous devez l’ajouter manuellement à la fin du fichier).
- AccessDenyMsg : Message d’erreur au démarrage. (Vous devez l’ajouter manuellement à la fin du fichier).
Ensuite, nous allons redémarrer le serveur pour que les modifications apportées soient appliquées en tapant :
sudo /etc/init.d/proftpd restart
Nous allons vérifier que le serveur fonctionne pour nous. Pour cela nous utiliserons un client comme FileZilla et nous nous connecterons à notre compte.
Créer des utilisateurs et des mots de passe pour FTP
Le processus de création d’utilisateurs est le même que pour les créer sur le système puisque proftpd utilise les utilisateurs du système par défaut. Il faut taper les paramètres suivants dans un terminal :
sudo adduser usuario
(nous créons l’utilisateur)
Ensuite, nous allons définir le mot de passe pour cela :
sudo passwd usuario
(nous créons le mot de passe pour l’utilisateur « utilisateur »)
Désormais, «user» pourra se connecter au FTP et accédera, par défaut, au dossier spécifié dans DefaultRoot.
Autoriser et refuser les utilisateurs
Nous pouvons contrôler les utilisateurs qui peuvent et ne peuvent pas se connecter à notre serveur de manière très simple. Pour ce faire, nous ouvrons le fichier de configuration et ajoutons ce qui suit à la fin :
<Limit LOGIN>
AllowUser ruvelro
DenyAll
</Limit>
Les autres paramètres que nous pouvons utiliser ici sont :
- AllowUser : Cela nous permet d’autoriser un utilisateur spécifique.
- DenyUser : nous bloquons l’accès à un utilisateur spécifique.
- DenyAll : nous bloquons l’accès à tous les utilisateurs, à l’exception de ceux spécifiés avec AllowUser.
- AllowAll : permet aux utilisateurs comme « anonymes » de se connecter au FTP.
Par exemple, si nous voulons autoriser les connexions anonymes à notre FTP, nous devons ajouter le paramètre AllowAll au groupe précédent, en le laissant comme suit :
<Limit LOGIN>
AllowUser ruvelro
AllowAll
</Limit>
Pour ajouter un nouvel utilisateur, nous devons créer un compte utilisateur dans notre Ubuntu et accéder au serveur FTP avec les informations d’identification de votre compte.
Autres commandes utiles pour proFTPd
Nous pouvons interroger un journal de connexion et d’activité avec le paramètre suivant :
sudo cat /var/log/proftpd/proftpd.log
Nous pouvons consulter les utilisateurs connectés à notre serveur FTP en temps réel avec les commandes suivantes :
ftpwho
ftptop
Configurer FTPES sur le serveur proFTPd pour la sécurité
FTPES est connu sous le nom de FTP explicite , ce protocole nous permet de nous connecter au port TCP 21 du serveur FTP, et avant de s’authentifier et de commencer à transférer des informations, une couche TLS 1.2 ou TLS 1.3 est ajoutée pour protéger toutes les informations. Par conséquent, avec FTPES, nous continuerons à utiliser le port populaire 21, ou le port que vous souhaitez utiliser. Nous avons également la possibilité de n’autoriser que les connexions FTPES , et de laisser de côté les connexions FTP, afin que l’authentification et le transfert de fichiers soient sécurisés. En raison de l’utilisation du protocole TLS/SSL, nous devons configurer un certificat RSA ou similaire sur le serveur, avec sa clé publique et sa clé privée, pour pouvoir configurer correctement le service FTP.
La première chose que nous devons faire est d’activer la directive dans le fichier de configuration principal de proFTPd, en décommentant la partie de «Include /etc/proftpd/tls.conf», comme vous pouvez le voir ci-dessous :
Maintenant, nous allons créer le certificat numérique RSA, nous aurons besoin à la fois de la clé publique et de la clé privée qu’il génère, afin que les clients puissent se connecter correctement au serveur proFTPd avec FTPES. ProFTPd lui-même intègre un outil qui automatise grandement le processus de création de certificats, cet outil s’appelle proftpd-gencert, et il est très simple à utiliser :
root@debian-vm:/home/bron# proftpd-gencert
Generating a RSA private key
.............................................................................................................+++++
...............+++++
writing new private key to '/etc/ssl/private/proftpd.key'
-----
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]:ES
State or Province Name (full name) [Some-State]:RedesZone
Locality Name (eg, city) []:RedesZone
Organization Name (eg, company) [Internet Widgits Pty Ltd]:RZ
Organizational Unit Name (eg, section) []:RZ
Common Name (e.g. server FQDN or YOUR name) []:RedesZone.NET
Email Address []:webmaster
Use the following information in your ProFTPD configuration:
TLSRSACertificateFile /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key
See /etc/proftpd/tls.conf for suggested TLS related configuration
items and include that file in your /etc/proftpd/proftpd.conf file.
root@debian-vm:/home/bron#
Mais nous allons vous montrer comment le faire «manuellement» pour sélectionner la longueur de clé RSA que vous souhaitez. Pour ce faire, nous devrons exécuter la commande suivante :
openssl genrsa -out /etc/ssl/private/proftpd.key 4096
Cette commande génère la clé privée avec RSA 4096 bits, plus tard nous devrons générer le certificat numérique public qui sera partagé avec les clients :
openssl req -new -x509 -days 1460 -key /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt
Nous indiquons que nous voulons qu’il expire dans 1460 jours, et ici nous devrons importer la clé privée et ensuite exporter le certificat proftpd.crt vers ce répertoire. Le processus que nous avons suivi est le suivant, comme vous pouvez le voir dans ce dossier :
root@debian-vm:/home/bron# openssl genrsa -out /etc/ssl/private/proftpd.key 4096
Generating RSA private key, 4096 bit long modulus (2 primes)
...................................................................................................................................................................++++
..................................................++++
e is 65537 (0x010001)
root@debian-vm:/home/bron# openssl req -new -x509 -days 1460 -key /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt
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]:ES
State or Province Name (full name) [Some-State]:RedesZone
Locality Name (eg, city) []:RZ
Organization Name (eg, company) [Internet Widgits Pty Ltd]:RZ
Organizational Unit Name (eg, section) []:RZ
Common Name (e.g. server FQDN or YOUR name) []:RZ
Email Address []:webmaster
root@debian-vm:/home/bron#
Une fois que nous l’avons fait, nous pouvons éditer le fichier de configuration «etc/proftpd/tls.conf», qui a cette configuration par défaut :
# Proftpd sample configuration for FTPS connections.
#
# Note that FTPS impose some limitations in NAT traversing.
# See http://www.castaglia.org/proftpd/doc/contrib/ProFTPD-mini-HOWTO-TLS.html
# for more information.
##TLSEngine on
#TLSLog /var/log/proftpd/tls.log
#TLSProtocol SSLv23
#
# Server SSL certificate. You can generate a self-signed certificate using
# a command like:
#
# openssl req -x509 -newkey rsa:1024
# -keyout /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt
# -nodes -days 365
#
# The proftpd.key file must be readable by root only. The other file can be
# readable by anyone.
#
# chmod 0600 /etc/ssl/private/proftpd.key
# chmod 0640 /etc/ssl/private/proftpd.key
#
#TLSRSACertificateFile /etc/ssl/certs/proftpd.crt
#TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key
#
# CA the server trusts...
#TLSCACertificateFile /etc/ssl/certs/CA.pem
# ...or avoid CA cert and be verbose
#TLSOptions NoCertRequest EnableDiags
# ... or the same with relaxed session use for some clients (e.g. FireFtp)
#TLSOptions NoCertRequest EnableDiags NoSessionReuseRequired
#
#
# Per default drop connection if client tries to start a renegotiate
# This is a fix for CVE-2009-3555 but could break some clients.
#
#TLSOptions AllowClientRenegotiations
#
# Authenticate clients that want to use FTP over TLS?
#
#TLSVerifyClient off
#
# Are clients required to use FTP over TLS when talking to this server?
#
#TLSRequired on
#
# Allow SSL/TLS renegotiations when the client requests them, but
# do not force the renegotations. Some clients do not support
# SSL/TLS renegotiations; when mod_tls forces a renegotiation, these
# clients will close the data connection, or there will be a timeout
# on an idle data connection.
#
#TLSRenegotiate required off
Le fichier de configuration que nous devons avoir dans /etc/proftpd/tls.conf est le suivant :
TLSEngine sur
TLSLog /var/ftpd/tls.logTLSProtocole TLSv1.2 TLSv1.3
TLSRequired désactivé
TLSRSACertificateFile /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile /etc/ssl/certs/proftpd.keyTLSVerifyClient désactivé
TLS Renégocier aucun
Nous sauvegardons le fichier et procédons au redémarrage du service proFTPd avec ce que nous avons appris précédemment. Lorsque nous allons nous connecter, nous verrons que nous nous connectons efficacement avec TLS 1.3 avec un échange de clés sécurisé et avec un cryptage AES-256-GCM qui nous fournira la meilleure sécurité et les meilleures performances.
Vous pouvez également créer des certificats basés sur ECC, puisque proFTPd intègre les directives « TLSECCertificateFile » et également « TLSECCertificateKeyFile » pour cela. Vous pouvez voir toutes les options disponibles sur FTPES et TLS dans proFTPd sur le site officiel de mod_tls .
Comme nous pouvons le voir, proFTPd est un serveur FTP très puissant et facile à configurer. Avec ProFTPd, nous n’aurons pas de problèmes, par exemple, lorsque nous devons utiliser le serveur avec plusieurs utilisateurs en même temps ou lorsque nous devons partager des fichiers avec plusieurs utilisateurs en même temps. Grâce à ses options de configuration avancées, nous avons la possibilité de définir tous les paramètres du serveur FTP en détail, ce logiciel est plus puissant et avancé que vsftpd, un autre des logiciels par excellence pour créer un serveur FTP sur les systèmes Linux.
Proftpd est également compatible avec FreeBSD et les systèmes d’exploitation dérivés, pour cette raison, les systèmes d’exploitation orientés vers les serveurs NAS tels que XigmaNAS ou TrueNAS ont ce logiciel pour fonctionner comme un serveur FTP.