Comment installer, configurer et sécuriser le serveur FTP dans RHEL 8
FTP (signifie « File Transfer Protocol ») est un protocole réseau standard et ancien utilisé pour le transfert de fichiers entre un client et un serveur sur un réseau informatique. Il est construit sur une architecture de modèle client-serveur, qui offre un accès aux fichiers et répertoires via un client FTP, pour télécharger des fichiers sur le serveur ainsi que pour télécharger des fichiers à partir de celui-ci.
Dans notre article précédent, nous avons expliqué comment installer, configurer et sécuriser le serveur FTP dans CentOS/RHEL 7 pour le transfert de fichiers informatiques entre un client et un serveur sur un réseau informatique.
Dans cet article, nous décrirons comment installer, configurer et sécuriser un serveur FTP sur RHEL 8 pour le partage de fichiers de base entre ordinateurs.
Installer le serveur FTP sur RHEL 8
1. Pour installer le package FTP sécurisé, utilisez la commande dnf suivante.
dnf install vsftpd
2. Une fois l'installation terminée, vous devez démarrer le service vsftpd entre-temps, lui permettre de démarrer automatiquement au démarrage du système, puis vérifier l'état à l'aide des commandes systemctl suivantes.
systemctl start vsftpd
systemctl enable vsftpd
systemctl status vsftpd
3. Ensuite, vous devez ouvrir le port FTP 21 sur le pare-feu du système pour autoriser l'accès aux services FTP à partir de systèmes externes.
firewall-cmd --zone=public --permanent --add-port=21/tcp
firewall-cmd --zone=public --permanent --add-port=45073/tcp
firewall-cmd --reload
Configurer le serveur FTP sur RHEL 8
4. Pour configurer un serveur FTP, vous devez effectuer la sauvegarde du fichier de configuration FTP principal /etc/vsftpd/vsftpd.conf
à l'aide de la commande de copie suivante.
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig
5. Ouvrez ensuite le fichier de configuration à l'aide de votre éditeur de ligne de commande préféré.
vi /etc/vsftpd/vsftpd.conf
Définissez les paramètres suivants avec ces valeurs correspondantes (voir man vsftpd.conf pour la signification des paramètres de configuration) :
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
6. Ensuite, vous devez configurer FTP pour autoriser/refuser l'accès des utilisateurs aux services FTP en fonction du fichier de liste d'utilisateurs /etc/vsftpd.userlist.
Par défaut, les utilisateurs répertoriés dans le fichier /etc/vsftpd.userlist
se voient refuser l'accès avec l'option userlist_deny
définie sur OUI
, si userlist_enable =OUI
, cela permet l'accès.
Mais la définition du paramètre userlist_deny=NO
modifie le paramètre, ce qui signifie que seuls les utilisateurs explicitement répertoriés dans userlist_file=/etc/vsftpd.userlist
seront autorisés à se connecter.
Par conséquent, ajoutez les lignes suivantes dans votre fichier de configuration vsftpd.conf
(ou s'il en existe déjà, décommentez-les et définissez leurs valeurs comme indiqué) :
userlist_enable=YES # allow access to list of usernames from the userlist_file
userlist_file=/etc/vsftpd.userlist # stores usernames.
userlist_deny=NO
7. Ajoutez maintenant les lignes suivantes dans votre fichier de configuration vsftpd.conf
pour restreindre les utilisateurs FTP à leurs répertoires personnels.
chroot_local_user=YES #means local users will be placed in a chroot jail, their home directory after login by default settings.
user_sub_token=$USER
local_root=/home/$USER/ftp
Enregistrez les modifications dans le fichier et fermez-le.
8. Définissez la règle booléenne SELinux suivante pour permettre à FTP de lire/écrire les fichiers du répertoire personnel de l'utilisateur.
semanage boolean -m ftpd_full_access --on
9. Enfin, redémarrez le service vsftpd pour appliquer toutes les modifications que nous avons apportées jusqu'à présent :
systemctl restart vsftpd
Test du serveur FTP sur RHEL 8
10. Pour tester si la configuration FTP ci-dessus fonctionne correctement, commencez par créer un utilisateur FTP avec la commande useradd et créez un mot de passe pour cet utilisateur.
useradd -m -c "Tecmint HowTos" -s /bin/bash tecmint
passwd tecmint
11. Ajoutez ensuite l'utilisateur tecmint au fichier /etc/vsftpd.userlist à l'aide de la commande echo comme suit.
echo "tecmint" | tee -a /etc/vsftpd.userlist
cat /etc/vsftpd.userlist
12. Créez ensuite le répertoire racine local alternatif pour l'utilisateur (tecmint, le vôtre est probablement différent) et définissez les autorisations appropriées sur ce répertoire.
mkdir -p /home/tecmint/ftp
chown nobody:nobody /home/tecmint/ftp
chmod a-w /home/tecmint/ftp
13. Ensuite, créez un répertoire à l'emplacement racine local, où l'utilisateur conservera ses fichiers.
mkdir /home/tecmint/ftp/files
chown tecmint:tecmint /home/tecmint/ftp/files
chmod 0700 /home/tecmint/ftp/files/
14. Connectez-vous maintenant au serveur FTP en utilisant n'importe quel client FTP comme suit.
ftp [email
Exemple de sortie
Connected to 192.168.56.100
220 Welcome to TecMint.com FTP service.
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
C'est ça! Dans cet article, nous avons décrit comment installer, configurer et sécuriser un serveur FTP dans RHEL 8. Dans notre prochain article, nous montrerons comment sécuriser le serveur FTP à l'aide de connexions SSL/TLS. En attendant, restez avec nous.