Introduction
De plus en plus, le protocole FTP (File Transfert Protocol) est
critiqué pour son manque de sécurité, comparé à d'autres protocoles de
transfert sécurisés, tel scp. Il est cependant toujours très utilisé et
Fedora propose par défaut vsftpd (Very Secure File Transfert Protocol Daemon) comme serveur pour ce protocole.
Comme la plupart des autres serveurs FTP (ProFTPD, pure-ftpd), vsftpd
gère les utilisateurs virtuels, c'est-à-dire la possibilité de créer
des comptes utilisateurs sans que ceux-ci ne soient des utilisateurs
système (ils sont en fait tous "mappés" sur un utilisateur système dédié
à cela). La particularité de vsftpd est qu'il utilise
PAM pour l'authentification des utilisateurs. Nous avons donc autant de
possibilités d'authentification que PAM en propose.
Cette documentation détaille une configuration de vsftpd en mode standalone,
avec authentification des utilisateurs système et des utilisateurs
virtuels. Les informations de connexion de ces derniers seront stockées
au choix dans une base de données au format berkeley, ou bien une base mysql.
Cette documentation a été testée sur Fedora 7, Fedora 8, 9 preview et
Centos 5.0/5.1, mais devrait fonctionner sur les versions antérieures.
Diagrammes de connexion
Les deux diagrammes suivants ont pour but de mettre en évidence le suivi de connexion ip_conntrack pour ces 2 modes afin de mieux comprendre l'échange des données entre le serveur Ftp et un client, permettant ainsi de mettre en oeuvre des règles iptables pour un firewall.Les diagrammes mettent en évidence l'utilisation de deux canaux bien distincts :
- control channel : elle permet au client et au serveur de s'échanger les commandes relatives au protocole, et aussi de s'identifier.
- data channel : comme son nom l'indique, elle est utilisée pour l'échange des données entre les deux postes. C'est sur la mise en place de ce canal que diffère le mode passif et le mode actif.
Installation
Préparation et pre-requis matérielPour installer un serveur vsftpd, il faut disposer des éléments suivants :
- Un serveur sous Linux/Fedora Core.
- Un accès réseau INTERNET.
- De la place disque pour les différentes zones ftp (anonyme ou non) que l'on souhaite mettre en oeuvre.
#yum install vsftpd
Vérification
Demander à RPM de le lister pour vérifier l'installation du paquetages.
#rpm -qa vsftpd*
vsftpd-2.0.1-5
Configuration
Il existe un grand nombre de possibilités de configuration, faisant varier le comportement du serveur de façon très différente. Une lecture de la page de manuel de vsftpd reste indispensable pour une configuration sûre.
$ su - # cd /etc/vsftpd # mv vsftpd.conf vsftpd.conf.defaultNous créons ensuite un dossier qui contiendra les configurations spécifiques à chaque utilisateur :
# mkdir vsftpd_user_conf
ftpusers et user_list Ces deux fichiers ont la même vocation : interdire des utilisateurs. En effet il contiennent tous les deux une liste d'utilisateurs pour lesquels le serveur ftp refusera toute connexion. Pourquoi deux fichiers (au contenu identique) ?
|
- Premier cas (ftpusers) : le système PAM ne va pas réagir, et le mot de passe sera demandé. A partir de là, même si ce dernier est correct, PAM va refuser la connexion car "root" est présent dans le fichier ftpusers.
- Second cas (user_list) : Vsftpd va lui réagir différemment. Lorsque le login sera demandé, et que l'utilisateur tapera "root", il coupera directement la connexion, sans même demander le mot de passe.
N'étant pas utilisé, on supprime le fichier ftpusers (vous pouvez tout à fait le conserver et sauter cette étape, au cas où vous voudriez vous en servir ensuite, notez cependant que son contenu est par défaut le même que user_list) en root :
# rm /etc/vsftpd/ftpusersNous verrons plus loin la configuration de PAM pour qu'il n'aille plus chercher dans ce fichier. À vous de rentrer les identifiants que vous ne souhaitez pas voir se connecter dans user_list en plus de ceux par défaut. Cela sera pratique pour désactiver un utilisateur virtuel, plutôt que de supprimer puis recréer son compte.Venons-en maintenant au fichier de configuration à proprement parler :
# vi /etc/vsftpd/vsftpd.confVous êtes dans un fichier vide, puisque nous avons renommé celui par défaut. Vous trouverez tous les paramètres possibles du fichier de configuration dans la page de man (man vsftpd.conf). Voici la configuration à entrer, avec la documentation de chaque paramètre:
# http://vsftpd.beasts.org/vsftpd_conf.html ou "man vsftpd.conf" # Port d'ecoute listen_port=21 # Banniere de bienvenue ftpd_banner=Bienvenue sur mon ftp perso # Fichier de config PAM pam_service_name=vsftpd # Mode "standalone" listen=YES # Je ne veux pas de connexion anonyme anonymous_enable=Yes # On autorise les connexions des utilisateurs locaux. C'est indispensable # pour que les utilisateurs virtuels (mappes sur un utilisateur local) # puissent se connecter (les "vrais" utilisateurs locaux sont ensuite desactives # avec le fichier user_list local_enable=YES # Fichier de users userlist_file=/etc/vsftpd/user_list # Chargement de la liste userlist_file userlist_enable=YES # On refuse les utilisateurs de la liste userlist_deny=YES # trop restrictif, un utilisateur virtuel pourra ainsi telecharger un fichier meme s'il n'est pas world readable anon_world_readable_only=NO # Refus des commandes influant sur le systeme de fichier (STOR, DELE, RNFR, RNTO, MKD, RMD, APPE and SITE) write_enable=Yes # Refus des droits d'ecriture pour les anonymes (et donc utilisateurs virtuels) par défaut # les autorisations seront données au cas par cas : # pas d'upload anon_upload_enable=NO # pas de creation de repertoire anon_mkdir_write_enable=NO # pas de creation, suppression, renommage de repertoire ... anon_other_write_enable=NO # On fait en sorte que les utilisateurs "guest" (non-anonymes) soient mappés sur le compte local "ftp" guest_enable=YES guest_username=ftp # chroot des utilisateurs chroot_local_user=YES # Nombre maximum de connexion simultanees max_clients=50 # Nombre maximum de connexion venant de la meme IP max_per_ip=4 # Dossier de configuration specifique des utilisateurs user_config_dir=/etc/vsftpd/vsftpd_user_conf # On active le log xferlog_enable=YESPetit résumé :
- On écoute sur le port 21
- On est en standalone
- On refuse les utilisateurs anonymes
- On accepte les utilisateurs système et les utilisateurs virtuels
- Les utilisateurs virtuels sont mappés sur l'utilisateur système "ftp"
- Les utilisateurs n'ont aucun droit d'écriture par défaut
- Ils sont chrootés dans /var/ftp
- /etc/vsftpd/vsftpd_user_conf/ sera le dossier pour les configurations d'utilisateurs virtuels
- /etc/vsftpd/user_list contiendra la liste des utilisateurs refusés (pour lesquels on ne demandera même pas le mot de passe)
# chmod 600 /etc/vsftpd/vsftpd.conf
Création de l'utilisateur système
Cet utilisateur sera le propriétaire des fichiers et dossiers que les utilisateurs virtuels vont créer. # groupadd ftpclient # useradd -g ftpclient -d /home/ftpclient ftpclient
# passwd ftpclient # chown ftpclient:ftpclient /home/ftpclient
# chmod 700 /home/ftpclient
Démarrer le service vsftpd
Une fois le fichier de configuration remplacé, on relance le serveur FTP en tapant en root :# /etc/init.d/vsftpd start
Pour démarrer, redémarrer et stopper le service, les commandes respectives sont (toujours en super utilisateur) :
# service vsftpd start
# service vsftpd restart
# service vsftpd stop
Test de serveur
Commande
1-Ouvrez l'invite de
2-Type -> ftp targetMachineIP
J'utilise ftp 192.168.1.5 dans ce cas,
3-Type de nom d'utilisateur et mot de passe
J'utilise racine et root123
si tout ce que vous fournissez est vrai que vous êtes connecté!
2-Type -> ftp targetMachineIP
J'utilise ftp 192.168.1.5 dans ce cas,
3-Type de nom d'utilisateur et mot de passe
J'utilise racine et root123
si tout ce que vous fournissez est vrai que vous êtes connecté!
Pour accéder à un serveur qui requière un nom d'utilisateur et un mot de passe, tapez l'adresse ainsi:
ftp://login:password@adresse du serveur
login: représente le nom d'utilisateur
password: votre mot de passe
Exemple: ftp://ftpclient:ftpclient@menara.ma
ou
Exemple: ftp://ftpclient:ftpclient@192.168.1.5
Si votre login est correct alors vous accéderez à vos dossiers !
( voir image ci-dessous ! )
Aucun commentaire :
Enregistrer un commentaire