FTP (Protocole de transfer de fichier) est un outil standard traditionnel et largement utilisé pour transfert de fichiers entre un serveur et des clients sur un réseau, en particulier lorsqu'aucune authentification n'est nécessaire (permet aux utilisateurs anonymes de se connecter à un serveur). Nous devons comprendre que FTP n'est pas sécurisé par défaut, car il transmet les informations d'identification et les données des utilisateurs sans cryptage.
Dans ce guide, nous allons décrire les étapes pour installer, configurer et sécuriser un serveur FTP (VSFTPD signifie "Démon FTP très sécurisé") dans CentOS/RHEL 7 et Feutre répartitions.
Notez que toutes les commandes de ce guide seront exécutées comme racine, si vous n'utilisez pas le serveur avec le racine compte, utilisez le commande sudo pour obtenir les privilèges root.
1. Installation vsftpd serveur est simple, exécutez simplement la commande suivante dans le terminal.
# miam installer vsftpd.
2. Une fois l'installation terminée, le service sera désactivé dans un premier temps, nous devons donc le démarrer manuellement pour le moment et lui permettre de démarrer automatiquement à partir du prochain démarrage du système :
# systemctl démarre vsftpd. # systemctl active vsftpd.
3. Ensuite, afin de permettre l'accès aux services FTP à partir de systèmes externes, nous devons ouvrir le port 21, où les démons FTP écoutent comme suit :
# firewall-cmd --zone=public --permanent --add-port=21/tcp. # firewall-cmd --zone=public --permanent --add-service=ftp. # firewall-cmd --reload.
4. Nous allons maintenant passer à effectuer quelques configurations pour configurer et sécuriser notre serveur FTP, commençons par faire une sauvegarde du fichier de configuration d'origine /etc/vsftpd/vsftpd.conf:
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig.
Ensuite, ouvrez le fichier de configuration ci-dessus et définissez les options suivantes avec les valeurs correspondantes :
anonyme_enable=NON # désactiver la connexion anonyme. local_enable=YES # autorise les connexions locales. write_enable=YES # active les commandes FTP qui modifient le système de fichiers. local_umask=022 # valeur de umask pour la création de fichiers pour les utilisateurs locaux. dirmessage_enable=YES # active l'affichage des messages lorsque les utilisateurs entrent pour la première fois dans un nouveau répertoire. xferlog_enable=OUI # un fichier journal sera maintenu détaillant les chargements et les téléchargements. connect_from_port_20=OUI # utilise le port 20 (données ftp) sur la machine serveur pour les connexions de style PORT. xferlog_std_format=OUI # conserver le format de fichier journal standard. listen=NO # empêche vsftpd de s'exécuter en mode autonome. listen_ipv6=OUI # vsftpd écoutera sur un socket IPv6 au lieu d'un IPv4. pam_service_name=vsftpd # nom du service PAM que vsftpd utilisera. userlist_enable=YES # permet à vsftpd de charger une liste de noms d'utilisateur. tcp_wrappers=YES # activer les wrappers TCP.
5. Configurez maintenant FTP pour autoriser/refuser l'accès FTP aux utilisateurs en fonction du fichier de liste d'utilisateurs /etc/vsftpd.userlist
.
Par défaut, les utilisateurs répertoriés dans userlist_file=/etc/vsftpd.userlist
se voient refuser l'accès de connexion avec userlist_deny option définie sur OUI, si userlist_enable=OUI.
Pourtant, userlist_deny=NON modifie le paramètre, ce qui signifie que seuls les utilisateurs explicitement répertoriés dans userlist_file=/etc/vsftpd.userlist sera autorisé à se connecter.
userlist_enable=OUI # vsftpd chargera une liste de noms d'utilisateur, à partir du nom de fichier donné par userlist_file. userlist_file=/etc/vsftpd.userlist # stocke les noms d'utilisateur. userlist_deny=NON
Ce n'est pas tout, lorsque les utilisateurs se connectent au serveur FTP, ils sont placés dans une prison chrootée, c'est le répertoire racine local qui servira de répertoire personnel pour la session FTP uniquement.
Ensuite, nous examinerons deux scénarios possibles sur la façon de chrooter les utilisateurs FTP vers les répertoires personnels (racine locale) pour les utilisateurs FTP, comme expliqué ci-dessous.
6. Ajoutez maintenant ces deux options suivantes pour restreindre les utilisateurs FTP à leurs répertoires personnels.
chroot_local_user=OUI. allow_writeable_chroot=OUI.
chroot_local_user=OUI signifie que les utilisateurs locaux seront placés dans une prison chroot, leur répertoire personnel après la connexion par les paramètres par défaut.
Et aussi par défaut, vsftpd n'autorise pas l'écriture du répertoire de la prison chroot pour des raisons de sécurité, cependant, nous pouvons utiliser l'option allow_writeable_chroot=OUI pour remplacer ce paramètre.
Enregistrez le fichier et fermez-le.
7. Maintenant, définissons le SELinux booléen ci-dessous pour permettre à FTP de lire les fichiers dans le répertoire personnel d'un utilisateur. Notez que cela a été initialement fait à l'aide de la commande :
# setsebool -P ftp_home_dir activé.
Cependant, le ftp_home_dir
La directive a été désactivée par défaut comme expliqué dans ce rapport de bogue: https://bugzilla.redhat.com/show_bug.cgi? identifiant = 1097775.
Nous allons maintenant utiliser semanage commande pour définir la règle SELinux pour permettre à FTP de lire/écrire le répertoire personnel de l'utilisateur.
# semanage booléen -m ftpd_full_access --on.
À ce stade, nous devons redémarrer vsftpd pour effectuer toutes les modifications que nous avons apportées jusqu'à présent :
# systemctl redémarrer vsftpd.
8. Nous allons maintenant tester le serveur FTP en créant un utilisateur FTP avec commande useradd.
# useradd -m -c "Ravi Saive, PDG" -s /bin/bash ravi. # passwd ravi.
Ensuite, nous devons ajouter l'utilisateur ravi au fichier /etc/vsftpd.userlist en utilisant le commande echo comme suit:
# echo "ravi" | tee -a /etc/vsftpd.userlist. # cat /etc/vsftpd.userlist.
9. Il est maintenant temps de tester si nos paramètres ci-dessus fonctionnent correctement. Commençons par tester les connexions anonymes, nous pouvons voir sur la capture d'écran ci-dessous que les connexions anonymes ne sont pas autorisées :
# ftp 192.168.56.10 Connecté à 192.168.56.10 (192.168.56.10). 220 Bienvenue sur le service FTP de TecMint.com. Nom (192.168.56.10:root): anonyme. 530 Autorisation refusée. Échec de la connexion. ftp>
10. Testons également si un utilisateur non répertorié dans le fichier /etc/vsftpd.userlist se verra accorder l'autorisation de se connecter, ce qui n'est pas le cas comme dans la capture d'écran ci-dessous :
# ftp 192.168.56.10 Connecté à 192.168.56.10 (192.168.56.10). 220 Bienvenue sur le service FTP de TecMint.com. Nom (192.168.56.10: racine): aaronkilik. 530 Autorisation refusée. Échec de la connexion. ftp>
11. Faites maintenant une dernière vérification si un utilisateur répertorié dans le fichier /etc/vsftpd.userlist, est en fait placé dans son répertoire personnel après la connexion :
# ftp 192.168.56.10 Connecté à 192.168.56.10 (192.168.56.10). 220 Bienvenue sur le service FTP de TecMint.com. Nom (192.168.56.10: racine): ravi. 331 Veuillez spécifier le mot de passe. Mot de passe: 230 Connexion réussie. Le type de système distant est UNIX. Utiliser le mode binaire pour transférer des fichiers. ftp> lsAvertissement: En utilisant
allow_writeable_chroot=OUI
a certaines implications en matière de sécurité, en particulier si les utilisateurs ont une autorisation de téléchargement ou un accès shell.N'activez cette option que si vous savez exactement ce que vous faites. Il est important de noter que ces implications de sécurité ne sont pas spécifiques à vsftpd, elles s'appliquent à tous les démons FTP qui proposent également de placer les utilisateurs locaux dans des prisons chroot.
Par conséquent, nous examinerons un moyen plus sûr de définir un répertoire racine local non inscriptible différent dans la section suivante.
12. Ouvrez à nouveau le fichier de configuration vsftpd et commencez par commenter l'option non sécurisée ci-dessous :
#allow_writeable_chroot=OUI.
Créez ensuite le répertoire racine local alternatif pour l'utilisateur (ravi
, le vôtre est probablement différent) et supprimez les autorisations d'écriture pour tous les utilisateurs de ce répertoire :
# mkdir /home/ravi/ftp. # chown personne: personne /home/ravi/ftp. # chmod a-w /home/ravi/ftp.
13. Ensuite, créez un répertoire sous la racine locale où l'utilisateur stockera ses fichiers :
# mkdir /home/ravi/ftp/files. # chown ravi: ravi /home/ravi/ftp/files. # chmod 0700 /home/ravi/ftp/files/
Ajoutez/modifiez ensuite les options suivantes dans le fichier de configuration vsftpd avec ces valeurs :
user_sub_token=$USER # insère le nom d'utilisateur dans le répertoire racine local local_root=/home/$USER/ftp # définit le répertoire racine local de tout utilisateur.
Enregistrez le fichier et fermez-le. Encore une fois, redémarrons le service avec les nouveaux paramètres :
# systemctl redémarrer vsftpd.
14. Faites à nouveau un dernier test et voyez que le répertoire racine local de l'utilisateur est le répertoire FTP que nous avons créé dans son répertoire personnel.
# ftp 192.168.56.10 Connecté à 192.168.56.10 (192.168.56.10). 220 Bienvenue sur le service FTP de TecMint.com. Nom (192.168.56.10: racine): ravi. 331 Veuillez spécifier le mot de passe. Mot de passe: 230 Connexion réussie. Le type de système distant est UNIX. Utiliser le mode binaire pour transférer des fichiers. ftp> ls
C'est ça! Dans cet article, nous avons décrit comment installer, configurer et sécuriser un serveur FTP dans CentOS 7, utilisez le section commentaires ci-dessous pour nous écrire au sujet de ce guide/partager toute information utile à ce sujet sujet.
Lecture suggérée :Installer le serveur ProFTPD sur RHEL/CentOS 7
Dans le prochain article, nous vous montrerons également comment sécuriser un serveur FTP en utilisant SSL/TLS connexions dans CentOS 7, jusque-là, restez connecté à TecMint.