gluke - Fotolia
Réseau : Pourquoi et comment utiliser TFTP pour transférer des fichiers ?
Les administrateurs utilisent le protocole TFTP pour transférer des fichiers fonctionnels (configuration, images de boot…) entre les machines. Cet article détaille son usage, plus simple que celui de FTP.
L’un des protocoles de couche d’application les moins connus de la pile TCP/IP est le protocole TFTP (Trivial File Transfer Protocol). Son cousin FTP, plus courant, est utilisé pour le transfert fiable de fichiers volumineux, images et autres documents de travail. Le TFTP a un objectif différent : il permet à l’administrateur de transférer simplement des fichiers fonctionnels (fichiers de configuration, images de boot, sauvegardes, etc.) entre des postes clients et un serveur.
Cet article explique le rôle du TFTP dans les environnements réseau, des sauvegardes aux déploiements. Il compare TFTP à FTP de manière plus détaillée et propose quelques cas d’utilisation de TFTP. Enfin, l’article aborde l’installation, les commandes TFTP et la sécurité.
TFTP et FTP : quelles différences ?
La différence principale entre TFTP et FTP réside dans le nombre de commandes possibles. Les applications FTP traditionnelles offrent de nombreuses fonctionnalités, notamment la capacité de lister et de manipuler les fichiers (renommer, supprimer…) se trouvant sur un serveur FTP distant. De plus, les services FTP nécessitent une certaine forme d’authentification, qu’il s’agisse d’une authentification anonyme ou d’une authentification à l’aide d’un compte utilisateur standard, avec mot de passe.
Rien de tout cela avec TFTP. TFTP ne permet pas de manipuler les fichiers à distance. Il offre uniquement la possibilité d’exporter (put) et de télécharger (get) des fichiers, sans voir ceux qui existent, ni pouvoir les renommer ou les supprimer. TFTP n’utilise pas non plus de procédure d’authentification.
En fait, TFTP est principalement un moyen rapide de transférer des fichiers, souvent de manière automatisée ou scriptée. C’est-à-dire que l’on ne cherche généralement jamais à savoir quels fichiers sont disponibles au téléchargement depuis un serveur, l’administrateur connaît par avance les noms de ceux qu’il a mis à disposition sur un serveur TFTP et qu’il doit inclure dans ses scripts de récupération ou d’export automatiques.
Il existe aussi une différence technique entre TFTP et FTP. Les deux protocoles de transfert de fichiers fonctionnent au niveau de la couche application, mais ils s’appuient sur des protocoles de transport différents.
Le protocole FTP utilise le protocole TCP, qui est un protocole fiable, dit « avec état », qui prend en compte chaque paquet à la fois au niveau du nœud source et du nœud de destination. Bien que cette méthode génère davantage d’overhead (latence, trafic), elle garantit que toutes les données envoyées sont reçues à la destination.
TFTP s’appuie sur le protocole UDP pour les transferts rapides. L’UDP est un protocole sans état, qui ne vérifie pas les paquets perdus au niveau de la couche de transport. Notez que l’UDP peut vérifier les paquets perdus à une couche différente, en fonction de l’application.
TFTP utilise le port 69/udp pour établir la connexion initiale. Le client et le serveur négocient ensuite d’autres ports pour le processus de transfert de données. FTP utilise généralement le port 20/tcp (données) et 21/tcp (gestion), en fonction de son mode.
L’avantage du TFTP est qu’il est petit et facile à utiliser. Il est donc utile pour transférer des fichiers de configuration, par exemple la récupération d’un fichier de boot depuis un client du réseau, ou encore la sauvegarde en réseau d’un appareil. Ces circonstances conviennent bien aux scénarios non authentifiés. Le TFTP est également léger, ce qui le rend utile pour les petits appareils ayant peu de capacité de stockage ou de calcul.
Par exemple, dans le cadre d’une petite équipe en entreprise, il est envisageable de configurer un Raspberry Pi comme serveur de stockage central des fichiers de configuration ou de boot des autres machines du réseau.
Quels sont les cas d’utilisation courants du TFTP ?
Les cas d’utilisation du TFTP comprennent :
- Boot d’une machine en réseau dans le cas d’un déploiement PXE (Preboot eXecution Environment), où un poste de travail télécharge son système d’exploitation sous la forme d’une image prête à l’emploi, depuis un serveur.
- Démarrage en réseau d’un client léger dépourvu de disque de boot.
- Sauvegarde en réseau des fichiers de configuration d’une machine.
- Transfert des fichiers de configuration pour une machine.
- Transfert d’un firmware sous forme de fichier image.
- Transfert de fichiers traditionnels entre un client et un serveur.
Toutefois, en raison de son manque de sécurité et d’authentification, le protocole TFTP ne conviendra pas aux opérations qui exigent un niveau de sécurité.
Comment installer TFTP ?
Il faut s’attendre à devoir installer soi-même le service TFTP sur la plupart des systèmes d’exploitation et à devoir gérer les fichiers de configuration qui vont avec. Chaque système d’exploitation gère TFTP de manière légèrement différente. Les sections suivantes résument les configurations pour chaque plateforme.
Sous Linux, tapez ce qui suit pour installer le serveur tftpd-hpa à l’aide d’apt-get :
$ sudo apt-get install tftpd-hpa
Tapez cette commande si la distribution Linux s’appuie sur un gestionnaire de paquets DNF :
$ sudo dnf install tftpd-hpa
Ensuite, créez un répertoire qui servira de dépôt TFTP (celui dans lequel le serveur met à disposition des fichiers téléchargeables et qui servira aussi à réceptionner les fichiers envoyés par les autres machines du réseau). Utilisez votre éditeur de texte préféré pour configurer le fichier de configuration /etc/default/tftpd-hpa, en définissant l’emplacement du répertoire de dépôt et les informations IP. N’oubliez pas de démarrer/activer le service et de configurer le pare-feu.
Sous macOS, un serveur et un client TFTP sont déjà installés, mais il faudra créer de la même manière le fichier de configuration.
Sous Windows, l’usage de nombreux administrateurs est d’ajouter le serveur TFTP tftpd64 ou SolarWinds. Leur interface est similaire à celle de PuTTY, une application généralement familière aux administrateurs Windows. C’est dans cette interface que l’on définit le répertoire de base et d’autres informations, comme on le fait sous Linux et macOS.
Utilisez la commande netstat suivante pour vérifier l’état du serveur TFTP :
netstat -an | more
Vous devriez voir s’afficher udp 0.0.0.0:69.
Les systèmes Windows n’incluent pas non plus le client TFTP par défaut. Sous Windows 10 et 11, accédez au Panneau de configuration > Programmes et fonctionnalités, puis sélectionnez Activer ou désactiver les fonctionnalités de Windows. Cochez la case Client TFTP.
Vous pouvez également exécuter la cmdlet suivante pour ajouter le client :
Enable-WindowsOptionalFeature -FeatureName TFTP -Online
Si le client TFTP fonctionne sous Windows Server, utilisez cette cmdlet à la place :
Install-WindowsFeature TFTP-Client
N’oubliez pas de vérifier les paramètres TFTP dans le pare-feu de Windows.
Quelle que soit la plateforme, le processus d’installation de TFTP est simple : Installer le service, le configurer, modifier le pare-feu et fournir un client.
Comment utiliser TFTP ?
La commande principale du service TFTP est tftp. Cette commande utilise plusieurs sous-commandes qui fournissent des options supplémentaires. La commande utftp est fonctionnellement la même, mais n’écrase pas les fichiers lors du téléchargement.
Les deux sous-commandes essentielles de tftp et utftp sont get et put. La commande put permet d’envoyer un fichier vers un emplacement distant et la commande get permet de récupérer un fichier à partir d’un emplacement distant.
Pour pouvoir transférer des fichiers entre une source et une destination, les utilisateurs doivent avoir le droit de lecture sur le répertoire et les fichiers sources et disposer du droit d’écriture sur le répertoire de dépôt de la destination.
Par exemple, pour récupérer un fichier nommé config.file à partir d’un serveur distant nommé server01, tapez ce qui suit :
tftp server01 get config.file
Les sous-commandes, telles que status et verbose, peuvent être utiles pour confirmer les services TFTP. Consultez la documentation ou la page de manuel pour connaître les autres possibilités.
Command | Description |
put | Envoie un fichier |
get | Télécharge un fichier |
status | Affiche l’état TFTP |
-v | Active le mode verbeux |
-i | Spécifie un type de données, typiquement ASCII ou binaire |
Comment sécuriser TFTP ?
La principale méthode de contrôle d’accès au sein de TFTP est le fichier /etc/tftpaccess.ctl. Ce fichier énumère explicitement les répertoires autorisés ou interdits accessibles par le service TFTP. Le fichier lui-même doit avoir des permissions de 644 pour empêcher les changements non autorisés.
Au-delà, le protocole TFTP n’offre pas de réelle sécurité, en particulier dans le contexte des environnements dits Zero-trust actuels. Néanmoins, vous pouvez utiliser TFTP via des tunnels Secure Shell (SSH) ou d’autres connexions sécurisées, telles que les VPN. Ces mesures de sécurité existent indépendamment de TFTP et devraient être efficaces.
Notez que le protocole FTP ne prévoit pas non plus de chiffrement intégré pour les transferts de données. Mais il existe des variantes telles que Secure Shell FTP (SFTP) et FTP Secure, qui permettent d’améliorer la sécurité des données en transit. Bref, si une politique de sécurité exige des protocoles sécurisés, vous devrez peut-être utiliser SFTP ou HTTPS à la place de TFTP.