Accueil
» LINUX
»
Comment configurer un serveur TFTP sur un serveur Ubuntu avec tftpd-hpa
Comment configurer un serveur TFTP sur un serveur Ubuntu avec tftpd-hpa
Installez le serveur et le client TFTP d' Ubuntu . Cette configuration permet de partager des fichiers et de stocker les fichiers téléchargés dans un répertoire distinct. Consultez la liste des paquets serveur et client d'Ubuntu ./srv/tftp
Sécurité : TFTP ne requiert ni authentification ni chiffrement. Limitez l’accès à un réseau local de confiance ; les clients accessibles peuvent lire les fichiers disponibles et en télécharger si les permissions le permettent. Ne transférez pas de données confidentielles. La spécification TFTP décrit ses limites de sécurité.
Configurer le serveur TFTP
1. Installez le serveur et le client
Actualisez les métadonnées APT, puis installez les deux paquets :
--secureCette configuration confine le démon à sa racine, --createautorise les chargements et --umask 027limite les nouveaux fichiers à un mode spécifique 0640. Le manuel de tftpd sous Ubuntu décrit ces options. Enregistrez avec Ctrl+O, appuyez sur Entrée, puis sur Ctrl+X.
Étant donné que TFTP --securerend /srv/tftpla racine visible par le client, les noms de fichiers sont relatifs à celle-ci : utilisez `<nom_du_fichier>` hello.txt, et non ` /srv/tftp/hello.txt<nom_du_fichier>`. Les clients TFTP ne parcourent pas les répertoires ; il est donc conseillé de conserver une liste des noms de fichiers publiés et de leurs chemins.
Limitez les fichiers et définissez le masque de téléchargement.
3. Créez le répertoire racine et le répertoire de téléchargement
Conservez le répertoire racine principal comme propriété de l'utilisateur root et n'accordez l'accès en écriture qu'au dossier upload :
Le démon peut lire la racine, mais seul le tftpcompte peut y écrire /srv/tftp/upload. Évitez de rendre l'ensemble de l'arborescence accessible en écriture à tous avec des permissions telles que `sudo` 777.
Les fichiers du répertoire racine public doivent être accessibles en lecture à tous les clients autorisés. Limitez ce répertoire aux images de démarrage, aux firmwares et aux autres éléments destinés à ce réseau. Pour les transferts privés, utilisez un protocole avec authentification et chiffrement.
Seul le sous-répertoire upload est accessible en écriture.
4. Ajouter un fichier à servir
Créez un fichier connu à la racine. Les contrôles de lecture par défaut de TFTP exigent que les fichiers servis soient accessibles publiquement ; définissez donc le mode0644 :
echo 'TFTP test file' | sudo tee /srv/tftp/hello.txt
sudo chmod 0644 /srv/tftp/hello.txt
Créez un fichier connu pour le test de téléchargement.
5. Activez et redémarrez le service
Activez l'appareil au démarrage, redémarrez-le pour appliquer les paramètres et vérifiez son état :
Si le démarrage échoue, consultez le journal des services avec sudo journalctl -u tftpd-hpa -b --no-pager.
Redémarrez le service après avoir modifié ses paramètres.
6. Limiter l'accès au pare-feu
Si UFW est activé, autorisez uniquement la requête initiale provenant de votre sous-réseau client. Remplacez le réseau d'exemple par votre plage d'adresses LAN de confiance :
sudo ufw allow from 192.168.1.0/24 to any port 69 proto udp
sudo ufw status
Consultez le guide UFW d'Ubuntu pour les règles relatives au réseau source. Le protocole TFTP démarre sur le port UDP 69, puis utilise un port UDP sélectionné par le serveur pour les données des fichiers, conformément à sa spécification . Un pare-feu strict, un routeur ou un périphérique NAT peut autoriser la requête mais bloquer le transfert. En cas de délai d'attente dépassé par les clients, utilisez un suivi des connexions compatible TFTP ou une politique de pare-feu appropriée ; n'ouvrez pas tous les ports UDP et n'exposez pas le protocole TFTP sur Internet. Cette commande ajoute une règle ; elle n'active pas UFW. Si vous administrez le serveur via SSH et prévoyez d'activer un pare-feu inactif, autorisez d'abord SSH afin de préserver l'accès distant.
Autoriser les requêtes initiales provenant d'un sous-réseau de confiance.
Tests de téléchargement et de chargement
7. Télécharger depuis un client Ubuntu
Sur le serveur, exécutez la commande ip -brief addresset notez son adresse LAN accessible. Sur un client Ubuntu, installez le client si nécessaire. Remplacez 192.0.2.10ci-dessous par l'adresse réelle du serveur :
Le fichier est enregistré dans le répertoire courant du client. Le manuel du client TFTP d'Ubuntu documente binarycette procédure get. Le mode binaire est recommandé pour les firmwares, les images de démarrage et les fichiers dont les octets doivent rester inchangés. Les noms de fichiers Linux sont sensibles à la casse ; saisissez donc chaque nom de fichier distant exactement.
Demander le fichier connu en mode binaire.
8. Téléversez dans le dossier restreint
Sur le client, créez un fichier de test, puis envoyez-le vers un chemin situé dans le répertoire de téléchargement du serveur :
Utilisez l'adresse réelle du serveur. Le chemin distant est relatif/srv/tftp ; vérifiez le transfert sur le serveur avec `ftp` sudo ls -l /srv/tftp/upload/. Les clients TFTP utilisent les noms de fichiers connus plutôt que de parcourir le contenu du répertoire.
Les fichiers téléchargés restent dans le sous-répertoire accessible en écriture.
Dépannage des erreurs courantes
Fichier introuvable : vérifiez le nom du fichier par rapport à son emplacement /srv/tftpet confirmez son existence.
Violation d'accès : rendez les fichiers servis accessibles au public ; pour les téléchargements, vérifiez la tftppropriété du répertoire de destination et assurez-vous --createqu'elle est bien définie.
Délai d'attente : Vérifiez que le client utilise l'adresse accessible du serveur, que le service est actif et que le pare-feu autorise le flux de données UDP négocié.
Pour isoler un problème réseau, effectuez d'abord un test depuis un client du même réseau local. Si cela fonctionne mais qu'un client routé expire, vérifiez si le routeur ou le pare-feu gère correctement le protocole TFTP pour le port de données négocié.
Pour un service en lecture seule, supprimez --create-le TFTP_OPTIONSet redémarrez-le tftpd-hpa.