Chapitre 15. FTP

FTP (de l'anglais File Transfer Protocol) est l'un des protocoles les plus anciens et les plus utilisés que l'on trouve sur Internet de nos jours. Son but est de transférer de manière sécurisée des fichiers entre les ordinateurs hôtes d'un réseau sans que l'utilisateur ne doive se connecter directement à l'hôte distant ou ne doive savoir comment utiliser le système distant. Ce protocole permet aux utilisateurs d'accéder à des fichiers sur des systèmes distants en utilisant un ensemble standard de commandes simples.

Ce chapitre présente les éléments de base du protocole FTP ainsi que les options de configuration pour le serveur FTP primaire inclus dans Red Hat Enterprise Linux, vsftpd.

15.1. Protocole FTP (File Transport Protocol)

FTP utilise une architecture de serveur client pour transférer des fichiers à l'aide du protocole réseau TCP. Étant donné que FTP est un protocole relativement ancien, il utilise une authentification basée sur un nom d'utilisateur et un mot de passe non-cryptés. Telle est la raison pour laquelle ce protocole est considéré comme vulnérable au niveau de la sécurité et que son utilisation est déconseillée à moins qu'elle ne soit essentielle. Une bonne alternative à FT existe avec sftp, de la suite d'outils OpenSSH. Pour obtenir des informations sur la configuration d'OpenSSH, reportez-vous au chapitre intitulé OpenSSH du Guide d'administration système de Red Hat Enterprise Linux. Pour de plus amples informations sur le protocole SSH, reportez-vous au Chapitre 20.

Toutefois, en raison de l'utilisation très répandue de FTP sur Internet, il est souvent nécessaire de partager des fichiers avec le public. Les administrateurs système devraient donc être conscients des caractéristiques uniques du protocole FTP.

15.1.1. Ports multiples, Modes multiples

Contrairement à la plupart des protocoles utilisés sur Internet, FTP a besoin de multiples ports réseau afin de pouvoir fonctionner correctement. Lorsqu'une application FTP client établit une connexion avec un serveur FTP, elle ouvre le port 21 sur le serveur — appelé port de commande. Ce port est utilisé pour exécuter toutes les commandes destinées au serveur. Toute donnée requise du serveur est renvoyée au client via un port de données. Le numéro de port pour les connexions aux données et la manière selon laquelle les connexions aux données sont effectuées varient selon que le client demande les données en mode actif ou en mode passif.

Ces modes sont définis de la manière suivante :

mode actif

Le mode actif représente la méthode utilisée à l'origine par le protocole FTP pour transférer des données à l'application cliente. Lorsqu'un transfert de données en mode actif est engendré par le client FTP, le serveur établit une connexion depuis le port 20 sur le serveur vers l'adresse IP et un port aléatoire, non-privilégié (supérieur à 1024) spécifié par le client. Dans une telle situation, l'ordinateur client doit être autorisé à accepter des connexions sur tout port supérieur à 1024. Avec le nombre croissant de réseaux non-sécurisés, tels que l'Internet, l'utilisation de pare-feu pour protéger les ordinateurs clients est désormais très répandue. Étant donné que ces pare-feu côté client refusent souvent les connexions entrantes originaires de serveurs FTP en mode actif, il est recommandé d'utiliser le mode passif.

mode passif

Le mode passif, tout comme le mode actif, est engendré par l'application client FTP. Lors d'une demande de données auprès du serveur, le client FTP indique qu'il souhaite accéder aux données en mode passif et le serveur fournit une adresse IP et un port aléatoire, non-privilégié (supérieur à 1024) sur le serveur. Le client se connecte alors à ce port sur le serveur afin de télécharger les informations demandées.

Alors que le mode passif résout les problèmes d'interférence du pare-feu côté client avec des connexions aux données, il peut rendre plus complexe l'administration du pare-feu côté serveur. En limitant dans le fichier de configuration du serveur FTP, l'éventail des ports non-privilégiés disponibles pour des connexions passives, il est possible de restreindre le nombre de ports ouverts sur un serveur, ce qui permet également de simplifier la création de règles de pare-feu pour le serveur. Reportez-vous à la Section 15.5.8 pour obtenir de plus amples informations sur la manière de limiter le nombre de ports passifs.