Comment installer, configurer et sécuriser le serveur FTP dans CentOS 7 - [Guide complet]

Comment installer, configurer et sécuriser le serveur FTP dans CentOS 7 - [Guide complet]

FTP (Protocole de transfer de fichier) est un outil standard traditionnel et largement utilisé pour transférer des fichiers entre un serveur et les 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 le FTP n'est pas sécurisé par défaut, car il transmet les informations d'identification et les données de l'utilisateur sans cryptage.

Dans ce guide, nous décrire les étapes pour installer, configurer et sécuriser un serveur FTP (Vsftpd représente "Démon FTP très sécurisé") dans Centos/ /Rhel 7 et Feutre distribution.

Notez que toutes les commandes de ce guide seront exécutées comme racine, au cas où vous n'utilisez pas le serveur avec le racine compte, utilisez la commande sudo pour obtenir des privilèges racine.

Étape 1: Installation du serveur FTP

1. Installation vsftpd Le serveur est simple, il suffit d'exécuter la commande suivante dans le terminal.

# Yum Installer vsftpd 

2. Une fois l'installation terminée, le service sera désactivé au début, nous devons donc le démarrer manuellement pour le moment et lui permettre de démarrer automatiquement à partir du prochain démarrage système:

# systemctl start vsftpd # systemctl activer vsftpd 

3. Ensuite, afin d'autoriser 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 

Étape 2: Configuration du serveur FTP

4. Nous allons maintenant nous déplacer pour 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.confli:

# cp / etc / vsftpd / vsftpd.conf / etc / vsftpd / vsftpd.confli.origine 

Ensuite, ouvrez le fichier de configuration ci-dessus et définissez les options suivantes avec ces valeurs correspondantes:

anonymous_enable = non # Disable Anonymous Login local_enable = yes # permettez les connexions locales write_enable = yes # # activer 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 = oui # Activer la diffusion de messages lorsque les utilisateurs entrent en entrée pour les utilisateurs. Un nouveau répertoire xferlog_enable = Oui # Un fichier journal sera maintenu en détail les téléchargements et téléchargement connect_from_port_20 = oui # Utilisez le port 20 (ftp-data) sur la machine du serveur pour les connexions de style de port xferlog_std_format = oui # gardien de fichier journal standard format écouter = non # # # # # # Empêcher VSftpd de fonctionner en mode autonome écouter_ipv6 = oui # vsftpd écoutera sur une prise IPv6 au lieu d'un ipv4 un pam_service_name = vsftpd # nom du service pam vsftpd utilisera userList_enable = oui # enable vsftpd pour charger une liste de noms userner tcp_wrapppers = oui # activer les emballages TCP 

5. Configurez maintenant FTP pour permettre / refuser l'accès FTP aux utilisateurs en fonction du fichier de liste d'utilisateurs / etc / vsftpd.liste d'utilisateur.

Par défaut, les utilisateurs ont indiqué userList_file = / etc / vsftpd.liste d'utilisateur sont refusés l'accès à la connexion avec userlist_deny option définie sur OUI, si userList_enable = Oui.

Cependant, userList_deny = non modifie le paramètre, ce qui signifie que seuls les utilisateurs ont explicitement répertorié dans userList_file = / etc / vsftpd.liste d'utilisateur 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.liste d'utilisateurs # stocke des 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, c'est le répertoire racine local qui agira comme leur répertoire domestique pour la session FTP uniquement.

Ensuite, nous examinerons deux scénarios possibles sur la façon de chroot les utilisateurs FTP vers les répertoires domestiques (Root local) pour les utilisateurs FTP, comme expliqué ci-dessous.

6. Ajoutez maintenant ces deux options suivantes pour restreindre les utilisateurs FTP à leurs répertoires domestiques.

chroot_local_user = oui allow_writable_chroot = oui 

chroot_local_user = oui signifie que les utilisateurs locaux seront placés dans une prison de chroot, leur répertoire domestique après les paramètres par défaut.

Et également par défaut, VSFTPD n'autorise pas le répertoire de la prison de chroot d'être écrit 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.

Sécurisation du serveur FTP avec selinux

7. Maintenant, définissons le Selinux booléen ci-dessous pour permettre au FTP de lire des fichiers dans le répertoire domestique d'un utilisateur. Notez que cela a été initialement fait en utilisant la commande: la commande:

# setSebool -p ftp_home_dir sur 

Cependant, le ftp_home_dir La directive a été désactivée par défaut comme expliqué dans ce rapport de bogue: https: // bugzilla.chapeau rouge.com / show_bug.CGI?id = 1097775.

Maintenant, nous allons utiliser sémanage Commande pour définir la règle SELINUX pour permettre à FTP de lire / écrire le répertoire domestique de l'utilisateur.

# SEMANAGE BOOLEAN -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 

Étape 4: Tester le serveur FTP

8. Nous allons maintenant tester le serveur FTP en créant un utilisateur FTP avec une 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.liste d'utilisateur Utilisation de la commande echo comme suit:

# echo "ravi" | tee -a / etc / vsftpd.liste d'utilisateurs # cat / etc / vsftpd.liste d'utilisateur 

9. Il est maintenant temps de tester si nos paramètres ci-dessus fonctionnent correctement. Commençons par tester des 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.dix Connecté à 192.168.56.10 (192.168.56.dix). 220 Bienvenue à Tecmint.service ftp com. Nom (192.168.56.10: racine): permission anonyme 530 refusée. échec de la connexion. ftp> 
Tester la connexion FTP anonyme

dix. Testons également si un utilisateur n'est pas répertorié dans le fichier / etc / vsftpd.liste d'utilisateur sera accordé l'autorisation de se connecter, ce qui n'est pas le cas comme dans la capture d'écran ci-dessous:

# FTP 192.168.56.dix Connecté à 192.168.56.10 (192.168.56.dix). 220 Bienvenue à Tecmint.service ftp com. Nom (192.168.56.10: Racine): Aaronkilik 530 Permission refusée. échec de la connexion. ftp> 
Échec de la connexion de l'utilisateur FTP

11. Faites maintenant une vérification finale si un utilisateur répertorié dans le fichier / etc / vsftpd.liste d'utilisateur, est en fait placé dans son répertoire d'origine après la connexion:

# FTP 192.168.56.dix Connecté à 192.168.56.10 (192.168.56.dix). 220 Bienvenue à Tecmint.service ftp com. Nom (192.168.56.10: Root): 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 

La connexion de l'utilisateur FTP réussi [Avertissement: En utilisant allow_writeable_chroot = oui a certaines implications de sécurité, surtout si les utilisateurs ont une autorisation de téléchargement ou un accès au shell.

Activez cette option uniquement si vous savez exactement ce que vous faites. Il est important de noter que ces implications de sécurité sont spécifiques à VSFTPD, elles s'appliquent à tous les démons FTP qui proposent également de placer les utilisateurs locaux dans des prisons de chroot.

Par conséquent, nous examinerons un moyen plus sécurisé de définir un autre répertoire racine local non-writable dans la section suivante dans la section suivante.

Étape 5: Configurer différents répertoires domestiques utilisateur FTP

12. Ouvrez à nouveau le fichier de configuration VSFTPD et commencez par commenter l'option non sécurisée ci-dessous:

# allow_writable_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 à tous les utilisateurs à 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 / fichiers # chown ravi: ravi / home / ravi / ftp / fichiers # chmod 0700 / home / ravi / ftp / fichiers / 

Ensuite, ajoutez / modifiez les options suivantes dans le fichier de configuration VSFTPD avec ces valeurs:

user_sub_token = $ user # inserte le nom d'utilisateur dans le répertoire racine local local_root = / home / $ user / ftp # définit tout répertoire racine local des utilisateurs 

Enregistrez le fichier et fermez-le. Encore une fois, redémarrons le service avec les nouveaux paramètres:

# SystemCTL Redémarrer VSFTPD 

14. Répondez maintenant à un test final et voyez que le répertoire racine local des utilisateurs est le répertoire FTP que nous avons créé dans son répertoire domestique.

# FTP 192.168.56.dix Connecté à 192.168.56.10 (192.168.56.dix). 220 Bienvenue à Tecmint.service ftp com. Nom (192.168.56.10: Root): 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 
FTP User Home Directory Login réussi

C'est ça! Dans cet article, nous avons décrit comment installer, configurer et sécuriser un serveur FTP dans CentOS 7, utiliser la section de commentaire ci-dessous pour nous réécrire concernant ce guide / partager toutes les informations utiles sur ce sujet.

Lire suggérée: Installez le serveur ProfTPD sur RHEL / CENTOS 7

Dans le prochain article, nous vous montrerons également comment sécuriser un serveur FTP à l'aide des connexions SSL / TLS dans CentOS 7, jusque-là, restez connecté à Tecmint.