Stéphane Gill Stephane.Gill@CollegeAhuntsic.qc.ca Table des matières Introduction 2 Protocole ftp 2 Utilisation du client ftp 2 Installer un serveur vsftp 4 Configurer le service ftp 5 Le fichier /etc/services 5 Le fichier /etc/xinetd.d/ftp 5 Le fichier /etc/vsftpd.conf 6 Créer un site ftp anonyme 7 Créer des sites ftp virtuel 7 Références 7 Document écrit par Stéphane Gill Copyright 2004 Stéphane Gill Ce document est soumis à la licence GNU FDL. Permission vous est donnée de distribuer et/ou modifier des copies de ce document tant que cette note apparaît clairement.
Introduction Dans un réseau, le transfert de fichiers d un ordinateur à un autre se pratique couramment. Bien qu il existe plusieurs protocoles de transfert basés sur TCP/IP, ftp (File Transfert Protocol) est certainement le plus utilisé. Il existe de nombreux serveurs ftp, dont les plus connus sont wu-ftp et proftp. Malheureusement, ces logiciels sont de véritables trous de sécurité. La distribution Red Hat Linux (Fedora) inclut maintenant le serveur vsftp (Very Secure File Transfert Protocol deamon). Ce serveur ftp est reconnu comme étant un des plus sécuritaires. Ce chapitre décrit donc la configuration du service ftp avec vsftp sur un serveur Red Hat Linux. Protocole ftp Le protocole ftp permet de transférer des fichiers entre ordinateurs. Les deux ports suivant sont utilisés par ftp: 21 tcp (canal de contrôle) : toutes les commandes échangées par le serveur et le client ftp sont transmise. 20 tcp (canal de données) : c est via ce port que les données sont échangées entre le serveur et le client. ftp peut fonctionner en mode actif ou passif. Dans le premier cas, le client contacte le serveur sur le port 21, et celui-ci transfert les données sur le port 20. Dans le mode passif, le client initie la connexion sur le port 21 et le serveur retourne les données sur un port plus grand à 1024. Utilisation du client ftp Tout comme telnet, FTP peut être lancé en mode commande ou en mode saisie. Après établissement de la connexion, il n y a pas de différence entre les deux modes. Ces différences ne sont visibles qu au démarrage du programme, car l un des modes spécifie l ordinateur hôte, alors que l autre mode n établit la connexion qu à l exécution de la commande open. L appel du client ftp est réalisé comme suit : Copyright 2004 Stéphane Gill Page 2
ftp [-v] [-d] [-i] [-n] [-g] [host] Les paramètres de démarrage remplissent les fonctions suivantes : Option Fonction -v Toutes les réponses de l ordinateur hôte sont affichées et un fichier est créé, contenant les statistiques de transfert des données. -d Activation du mode de débogage. -i Déconnecte le dialogue interactif lors du transfert de plusieurs fichiers. -n La connexion automatique (Auto-Login) est désactivée. Si le fichier.netrc existe, le programme y cherche les informations nécessaires à la connexion. -g Désactive la substitution de noms de fichiers. host Nom de l ordinateur cible (serveur FTP). Si vous démarrez le programme FTP sans indiquer le nom de l ordinateur hôte, l invite FTP est affichée. En tapant la commande «?», le programme affiche la liste des commandes disponibles. Voici la liste des commandes : Commande! $ account append ascii bell binary Fonction La saisie du caractère «!» démarre un shell local. Si ce caractère est suivi par les commandes Unix, cette commande est exécutée dans le shell, puis le programme revient automatiquement à FTP. L appel de la commande $ macro [param] démarre l exécution d une macro défini à l aide de la commande macdef. Certains ordinateurs hôtes attendent un mot de passe supplémentaire pour permettre l accès à certaines ressources spéciales. La commande account [mot_de_passe] permet de le transmettre. La commande append fichier [fichier_distant] permet de connecter un fichier local à un nom de fichier distant de l ordinateur hôte. Si aucun nom n est précisé pour le fichier distant, c est le nom du fichier local qui est utilisé. Le transfert de données passe en mode ASCII. Un signal sonore est émis à la fin de chaque transfert de fichier. Le transfert de données passe en mode binaire. Copyright 2004 Stéphane Gill Page 3
bye case cd cdup chmod close cr delete debug dir Termine l exécution de FTP. La commande case influe sur l analyse des minuscules et des majuscules pour la commande mget. Si la commande case est activée, les noms des fichiers transférés sur l ordinateur hôte sont affichés en majuscules, les minuscules étant transformées automatiquement en majuscules. Change de répertoire sur l ordinateur hôte. Le répertoire de travail courant de l ordinateur hôte devient le répertoire parent courant. Cette commande modifie les droit d accès à un fichier sur l ordinateur hôte. La connexion FTP est interrompue, et le programme FTP revient en mode commande. Le commutateur cr permet de convertir les signaux Carriage- Return/Linefeed, dès que ce commutateur est positionné (par défaut). La commande delete fichier permet d effacer un fichier sur l ordinateur hôte. Ce commutateur active ou désactive le mode débogage Cette commande affiche le contenu du répertoire de l ordinateur hôte. Installer un serveur vsftp Le serveur vsftp est souvent installé automatiquement lors de l installation de Red Hat Linux. Pour vérifier sa présence il suffit de taper la commande suivante : rpm -qa grep vsftpd Si vsftp n est pas installé, il est possible de l installer à partir du CD-ROM à l aide de la commande : rpm -i vsftpd-1.2.0-5.rpm Copyright 2004 Stéphane Gill Page 4
Configurer le service ftp Après l installation de vsftp une configuration de base est active. Voici la liste des fichiers impliqués dans le paramétrage de vsftp: /etc/services /etc/xinetd.d./ftp /etc/vsftpd.banned_emails /etc/vsftpd.chroot_list /etc/vsftpd/vsftpd.conf Le fichier /etc/services Le fichier /etc/services décrit les services TCP/IP disponibles sur un serveurs Linux. Les lignes concernant le service ftp sont les suivantes : ftp-data ftp 20/tcp 21/tcp Ces deux lignes définissent les ports utilisés pour les données et les commandes par le service ftp. Les valeurs de ces ports sont définies officiellement et ne doivent pas être modifiées. Le fichier /etc/xinetd.d/ftp Le démon vsftpd peut démarrer à partir de xinetd. Voici un exemple de configuration de xinetd : service ftp { socket_type = stream wait = no user = root server = /usr/local/sbin/vsftpd server_args = log_on_success += DURATION USERID log_on_failure += USERID nice = 10 disable = no } L instruction nice est importante puisqu elle permet de réguler la bande passante utilisée. vsftp peut aussi être démarré en mode autonome à l aide de la commande : Copyright 2004 Stéphane Gill Page 5
service vsftpd start Le fichier /etc/vsftpd.conf Voici un exemple simple de fichier vsftpd.conf : # connexion en tant qu anonyme interdite anonymous_enable=no # connexion pour les utilisateurs locaux auorisés local_enable=yes # écriture interdite write_enable=no # Upoad pour anonyme interdit anon_upload_enable=no # création de répertoire pour les anonymes interdit anon_mkdir_write_enable=no # écriture de fichier pour anonyme interdit anon_other_write_enable=no # enferme l utilisateur dans le répertoire ftp (chrooté) chroot_local_user=yes # nombre de connexions maximales autorisées par une même adresse IP per_source = 5 # interdiction de se connecter au ftp à partir de cette adresse no_access = 192.168.1.3 # Rend possible la connexion d utilisateurs virtuels guest_enable=yes # souhaitable, vu que la connexion anonyme est refusée guest_username=virtual # cette option permet de limiter l accès des ports pasv_min_port=30000 # disponibles, utile derrière un firewall pasv_max_port=30999 # enregistrement des logs... xferlog_enable=yes Copyright 2004 Stéphane Gill Page 6
Créer un site ftp anonyme Un site ftp anonyme est un site qui permet à des usagers qui ne possèdent pas de compte usager sur un serveur d échanger des fichiers. La connexion à un site ftp anonyme utilise comme authentification le nom d usager "anonymous" et comme mot de passe une adresse e-mail. Une fois connectés les utilisateurs anonymes n accèdent que le répertoire /var/ftp. Voici un exemple de configuration pour un site ftp anonyme: # Permettre la connexion des usagers anonymes anonymous_enable=yes # Permettre aux usagers anonymes de télécharger des fichiers. # L option write_anable doit aussi être activé. anon_upload_enable=yes # Permettre aux usagers anonymes la création de répertoire anon_mkdir_write_enable=no # Permettre aux usagers anonymes l écriture de fichier anon_other_write_enable=no # Répertoire pour les usagers anonymes (Par défaut: /var/ftp) anon_root = /var/ftp Créer des sites ftp virtuel Pour mettre en place des sites ftp virtuels, il faut démarrer autant de démon vsftpd qu il y à d hôtes virtuels. Chaque démon doit avoir sont fichier de configuration avec l instruction listen_adress = x.x.x.x où x.x.x.x est une adresse IP virtuelle. Références La documentation officielle de vsftpd est disponible sur le site http://vsftpd.beasts.org/ Copyright 2004 Stéphane Gill Page 7