Configuration d’un serveur FTP
Ce document présente les notions essentielles pour comprendre et configurer un serveur FTP, en particulier avec le démon vsftpd. Il s'adresse aux étudiants et professionnels en administration système et réseau souhaitant maîtriser le protocole FTP, ses modes de fonctionnement, ainsi que les options de configuration et de sécurité associées à vsftpd.
D'après le document Configuration d’un serveur FTP
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.
Document source
System and Network Administration · PDF · 15 pages
Afficher l'aperçu du document
Ce document présente les notions essentielles pour comprendre et configurer un serveur FTP, en particulier avec le démon vsftpd. Il s'adresse aux étudiants et professionnels en administration système et réseau souhaitant maîtriser le protocole FTP, ses modes de fonctionnement, ainsi que les options de configuration et de sécurité associées à vsftpd.
Protocole FTP (File Transport Protocol)
Le protocole FTP utilise une architecture client-serveur pour transférer des fichiers via TCP. Il repose sur une authentification simple par nom d'utilisateur et mot de passe non cryptés, ce qui le rend vulnérable en termes de sécurité. Malgré cela, FTP reste largement utilisé pour le partage de fichiers publics.
Ports multiples, Modes multiples
FTP nécessite plusieurs ports pour fonctionner :
- Port 21 : port de commande (control channel) utilisé pour envoyer les commandes au serveur.
- Port de données : port dynamique utilisé pour le transfert des données (data channel).
Le mode de connexion aux données varie selon que le client utilise le mode actif ou passif :
- Mode actif : Le client ouvre une session TCP vers le port 21 du serveur. Après authentification, le serveur ouvre une connexion TCP depuis son port source 20 vers un port dynamique du client. Le client doit donc accepter des connexions entrantes sur des ports supérieurs à 1024.
- Mode passif : Recommandé lorsque le client est derrière un firewall ou NAT. Le client ouvre une session TCP vers le port 21 du serveur, puis demande via la commande PASV que le serveur ouvre un port dynamique en attente. Le client établit ensuite une connexion TCP vers ce port. Ce mode facilite la traversée des firewalls côté client mais complique la gestion côté serveur.
Le serveur vsftpd
vsftpd (Very Secure FTP Daemon) est un démon FTP conçu pour être rapide, stable et sécurisé. Il peut gérer un grand nombre de connexions efficacement grâce à un modèle de sécurité basé sur :
- La séparation stricte entre processus privilégiés et non-privilégiés.
- L'exécution des tâches à privilèges élevés via des processus limités grâce à la bibliothèque libcap.
- L'utilisation de prisons chroot pour isoler les processus dans un répertoire racine spécifique, empêchant l'accès aux autres parties du système.
Fichiers installés avec vsftpd
Les fichiers et répertoires principaux liés à vsftpd sont :
/usr/sbin/vsftpd: le démon FTP./etc/rc.d/init.d/vsftpd: script d'initialisation pour démarrer, arrêter ou recharger vsftpd via la commande/sbin/service./etc/pam.d/vsftpd: configuration du module PAM pour l'authentification des utilisateurs FTP./etc/vsftpd/vsftpd.conf: fichier principal de configuration de vsftpd./etc/vsftpd.ftpusers: liste des utilisateurs interdits d'accès (ex : root, bin, daemon)./etc/vsftpd.user_list: fichier pouvant autoriser ou refuser l'accès à certains utilisateurs selon la directiveuserlist_deny./var/ftp/: répertoire racine FTP, contenant notamment/var/ftp/pub/pour les utilisateurs anonymes.
Démarrage et arrêt de vsftpd
Les commandes principales pour gérer le serveur vsftpd sont :
- Démarrer le serveur :
/sbin/service vsftpd start - Arrêter le serveur :
/sbin/service vsftpd stop - Redémarrer le serveur (arrêt puis démarrage) :
/sbin/service vsftpd restart - Redémarrage conditionnel (uniquement si vsftpd est en cours) :
/sbin/service vsftpd condrestart
Démarrage de multiples copies de vsftpd (multihoming)
Pour héberger plusieurs domaines FTP sur une même machine (multihoming), il est possible d'exécuter plusieurs instances de vsftpd, chacune avec son propre fichier de configuration :
- Attribuer les adresses IP nécessaires aux interfaces réseau ou alias.
- Configurer le DNS pour pointer vers ces adresses IP.
- La première instance utilise le fichier
/etc/vsftpd/vsftpd.conf. - Chaque instance supplémentaire utilise un fichier unique, par exemple
/etc/vsftpd/vsftpd-site-2.conf, avec une directive uniquelisten_address=N.N.N.Ncorrespondant à l'adresse IP du site. - Lancer chaque instance avec la commande :
vsftpd /etc/vsftpd/<configuration-file> &
Remplacer <configuration-file> par le nom du fichier de configuration spécifique.
Pour automatiser le démarrage, ajouter cette commande dans le fichier /etc/rc.local.
Options de configuration de vsftpd
La configuration de vsftpd se fait dans le fichier /etc/vsftpd/vsftpd.conf. Chaque directive est écrite sur une ligne au format :
<directive>=<valeur>Il ne doit pas y avoir d'espaces autour du signe égal. Les commentaires commencent par # et sont ignorés.
Options pour le démon
- listen : active le mode autonome d'écoute sur IPv4. Par défaut NO.
- listen_ipv6 : active le mode autonome d'écoute sur IPv6. Par défaut NO.
- session_support : maintien des sessions PAM. Par défaut YES.
Options de connexion et contrôles d'accès
- anonymous_enable : autorise les utilisateurs anonymes. Par défaut YES.
- banner_file : fichier contenant le message affiché à la connexion, remplace
ftpd_banner. - ftpd_banner : message affiché à la connexion. Par défaut, la bannière standard de vsftpd.
- local_enable : autorise les utilisateurs locaux. Par défaut YES.
- pam_service_name : nom du service PAM utilisé. Par défaut ftp (vsftpd sous Red Hat).
- tcp_wrappers : active les enveloppeurs TCP pour contrôle d'accès. Par défaut NO (YES sous Red Hat).
- userlist_deny : si NO avec
userlist_enable, seuls les utilisateurs listés dansuserlist_fileont accès. Par défaut YES. - userlist_enable : active la liste d'exclusion d'utilisateurs. Par défaut NO (YES sous Red Hat).
- userlist_file : fichier listant les utilisateurs concernés. Par défaut
/etc/vsftpd.user_list.
Options pour les utilisateurs anonymes
- anon_mkdir_write_enable : autorise les anonymes à créer des répertoires (avec
write_enable). Par défaut NO. - anon_root : répertoire racine pour les anonymes, sans valeur par défaut.
- anon_upload_enable : autorise les anonymes à uploader des fichiers (avec
write_enable). Par défaut NO. - anon_world_readable_only : autorise les anonymes à télécharger uniquement des fichiers lisibles par tous. Par défaut YES.
- ftp_username : utilisateur local utilisé pour les anonymes. Par défaut ftp.
- no_anon_password : si activé, l'anonyme ne doit pas saisir de mot de passe. Par défaut NO.
Options pour les utilisateurs locaux
- chmod_enable : autorise la commande FTP SITE CHMOD. Par défaut YES.
- chroot_list_enable : place en prison chroot les utilisateurs listés dans
chroot_list_file. Par défaut NO. - chroot_list_file : fichier listant les utilisateurs pour prison chroot. Par défaut
/etc/vsftpd.chroot_list. - guest_enable : connecte tous les utilisateurs non anonymes en tant qu'invité. Par défaut NO.
- local_umask : valeur umask pour la création de fichiers (octale). Par défaut 022.
- user_config_dir : répertoire contenant des fichiers de configuration spécifiques par utilisateur local. Pas de valeur par défaut.
Options pour les répertoires
- dirlist_enable : autorise la visualisation des listes de répertoires. Par défaut YES.
- dirmessage_enable : affiche un message à l'ouverture d'un répertoire contenant un fichier message (nommé par défaut
.message). Par défaut NO (YES sous Red Hat). - force_dot_files : inclut les fichiers commençant par un point dans les listes (sauf . et ..). Par défaut NO.
- hide_ids : affiche ftp comme utilisateur et groupe pour tous les fichiers. Par défaut NO.
- use_localtime : affiche l'heure locale au lieu de GMT dans les listes. Par défaut NO.
Options pour le transfert de fichiers
- download_enable : autorise le téléchargement de fichiers. Par défaut YES.
- chown_uploads : change la propriété des fichiers uploadés anonymement à l'utilisateur spécifié. Par défaut NO.
- chown_username : utilisateur propriétaire des fichiers uploadés anonymement si
chown_uploadsactivé. Par défaut root. - write_enable : autorise les commandes modifiant le système de fichiers (DELE, RNFR, STOR). Par défaut YES.
- ascii_download_enable : active le mode reprise de téléchargement. Par défaut NO.
Options de journalisation
- syslog_enable : envoie la journalisation au syslog sous le service FTPD si activé avec
xferlog_enable. Par défaut NO. - vsftpd_log_file : fichier journal de vsftpd (par défaut
/var/log/vsftpd.log), utilisé sixferlog_enableactivé etxferlog_std_formatdésactivé. - xferlog_enable : active la journalisation des connexions et transferts. Par défaut NO (YES sous Red Hat).
- xferlog_file : fichier journal compatible wu-ftpd (par défaut
/var/log/xferlog), utilisé sixferlog_std_formatest YES.
Options réseau
- accept_timeout : temps en secondes pour qu'un client en mode passif se connecte. Par défaut 60.
- anon_max_rate : limite du débit en octets/seconde pour les anonymes. Par défaut 0 (pas de limite).
- connect_timeout : temps maximal pour qu'un client en mode actif réponde à une connexion de données. Par défaut 60.
- data_connection_timeout : durée maximale d'inactivité sur la connexion de données avant fermeture. Par défaut 300.
- idle_session_timeout : durée maximale entre commandes d'un client avant fermeture. Par défaut 300.
- listen_address : adresse IP d'écoute pour vsftpd (sans valeur par défaut).
- listen_port : port d'écoute (par défaut 21).
- local_max_rate : limite de débit pour utilisateurs locaux (octets/seconde). Par défaut 0.
- max_clients : nombre maximal de clients simultanés en mode autonome. Par défaut 0 (illimité).
- max_per_ip : nombre maximal de clients par adresse IP source. Par défaut 0.
- port_enable : si activé, interdit les connexions en mode actif. Par défaut YES.
Exemple de configuration simple
# Fichier /etc/vsftpd/vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list
Cette configuration démarre vsftpd en mode autonome, interdit les connexions anonymes, autorise les utilisateurs locaux à se connecter et à écrire, place les utilisateurs locaux dans une prison chroot, et limite l'accès aux utilisateurs listés dans /etc/vsftpd.user_list.
Glossaire des termes clés
- FTP : File Transfer Protocol, protocole de transfert de fichiers client-serveur.
- vsftpd : Very Secure FTP Daemon, serveur FTP sécurisé et performant.
- Port de commande : port 21 utilisé pour envoyer les commandes FTP.
- Port de données : port dynamique utilisé pour le transfert des fichiers.
- Mode actif : mode FTP où le serveur initie la connexion de données vers le client.
- Mode passif : mode FTP où le client initie la connexion de données vers le serveur.
- Prison chroot : environnement isolé limitant l'accès du processus à un sous-arbre du système de fichiers.
- PAM : Pluggable Authentication Modules, système modulaire d'authentification.
- userlist_enable : option pour activer la liste d'utilisateurs autorisés ou refusés.
- write_enable : option autorisant les commandes modifiant le système de fichiers.
- chroot_local_user : option plaçant les utilisateurs locaux dans une prison chroot.
- tcp_wrappers : mécanisme de contrôle d'accès réseau basé sur les fichiers hosts.allow et hosts.deny.
Points clés à retenir
- FTP utilise deux ports distincts : 21 pour les commandes et un port dynamique pour les données.
- Le mode passif est recommandé pour les clients derrière un firewall ou NAT.
- vsftpd est un serveur FTP sécurisé qui utilise la séparation des privilèges et les prisons chroot pour limiter les risques.
- La configuration de vsftpd se fait via le fichier /etc/vsftpd/vsftpd.conf avec des directives au format
directive=valeur. - Il est possible d'exécuter plusieurs instances de vsftpd pour gérer plusieurs domaines FTP sur une même machine.
- Les options de configuration couvrent le comportement du démon, les accès utilisateurs, la gestion des répertoires, le transfert de fichiers, la journalisation et les paramètres réseau.
- La sécurité FTP est limitée par l'absence de chiffrement natif, il faut donc être vigilant lors de son utilisation.
Commentaires
Aucun commentaire pour le moment. Posez la première question.