FTP
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