FTP

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Transfert de fichiers
Couche OSI 7 (Application, sur TCP)
Port(s) 21 (contrôle) + 20 ou port dynamique (données)
RFC RFC 959 (1985)
Voir aussi TCP · TELNET

FTP (File Transfer Protocol) est l'un des plus anciens protocoles applicatifs de l'Internet, défini par la RFC 959 en 1985, et remarquablement peu modifié depuis. Il utilise deux canaux séparés : un canal de contrôle (port 21, commandes et réponses) et un canal de données distinct pour le transfert effectif des fichiers.

Modes actif et passif

  • Mode actif : le client indique au serveur un port sur lequel se connecter en retour ; le
 serveur initie la connexion de données depuis son port 20. Pose problème derrière un pare-feu ou
 du NAT côté client (connexion entrante non sollicitée).
  • Mode passif (PASV) : le serveur ouvre un port dynamique (>1023) et communique son adresse
 au client, qui initie lui-même la connexion de données. Compatible NAT/pare-feu côté client,
 c'est le mode par défaut de la plupart des clients modernes.

Sécurité

FTP transmet identifiants et données en clair, y compris en mode anonyme mal configuré. Préférer FTPS (FTP sur TLS) ou SFTP (transfert de fichiers sur SSH, protocole totalement différent malgré le nom) pour tout usage exposé sur Internet.

Exemple : autoriser FTP dans un pare-feu iptables

# nécessite le module de suivi de connexion dédié au protocole FTP
# (pour que les connexions de données en mode actif soient reconnues comme liées au contrôle)
modprobe nf_conntrack_ftp
iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --sport 21 -m state --state ESTABLISHED,RELATED -j ACCEPT

Voir aussi

  • TCP — transport fiable sur lequel s'appuie FTP
  • TELNET — autre protocole texte historique en clair, même génération