Transferts triviaux avec TFTP, partie 3 : utilisation
Dans les articles précédents, nous avons présenté TFTP et discuté des raisons pour lesquelles vous pourriez vouloir l’utiliser, et nous avons examiné diverses options de configuration. Maintenant, essayons de déplacer quelques fichiers. Vous pouvez le faire avec un certain confort maintenant que vous savez comment sécuriser un peu mieux votre serveur.
Testing 1, 2, 3
Pour tester votre serveur, vous avez évidemment besoin d’un client avec lequel vous connecter. Heureusement, nous pouvons en installer un très facilement:
# apt-get install tftp
Les dérivés de Red Hat devraient gérer l’installation d’un client de la manière suivante:
# yum install tftp
Si vous recherchez l’adresse IP de votre serveur en utilisant une commande comme celle ci-dessous, il est alors possible de se connecter à votre serveur TFTP de n’importe où (en supposant que votre configuration TCP Wrappers ou les règles IPtables vous le permettent, bien sûr).
# ip a
Une fois que vous connaissez l’adresse IP, il est très simple de se lancer. Vous pouvez vous connecter comme ceci au serveur depuis le client:
# tftp 10.10.10.10
Maintenant vous devriez être connecté. (Si cela n’a pas fonctionné, vérifiez votre pare-feu ou vous pourriez « telnet » au port 69 sur l’adresse IP de votre serveur TFTP). Ensuite, vous pouvez exécuter une commande « status » comme suit:
tftp> statusConnected to 192.168.0.9.Mode: netascii Verbose: off Tracing: offRexmt-interval: 5 seconds, Max-timeout: 25 seconds
À ce stade, je préfère utiliser la sortie verbeuse en tapant simplement cette commande:
tftp> verbose
Vous pouvez opter pour le téléchargement de binaires ou de fichiers en texte brut en tapant ceci pour le texte brut :
tftp> ascii
Ou, vous pouvez forcer les binaires à se télécharger correctement avec:
tftp> binary
Pour nous donner du contenu à télécharger, j’ai créé un simple fichier texte comme ceci:
# echo hello > HERE_I_AM
Cela signifie que le fichier HERE_I_AM contient le mot « hello ». J’ai ensuite déplacé ce fichier dans notre répertoire TFTP par défaut, que nous avons vu utilisé précédemment dans le fichier de configuration principal, /etc/inetd.conf. Ce répertoire – à partir duquel notre démon fidèle sert – est appelé /srv/tftp, comme nous pouvons le voir dans le Listing 3.
Parce qu’il s’agit juste d’un fichier texte simple, il n’y a pas besoin d’activer le mode binaire, et nous avons déjà écrit verbose, donc maintenant c’est juste un cas de transfert de notre fichier.
Si vous êtes un tant soit peu familier avec le FTP en ligne de commande, alors vous n’aurez aucune difficulté à saisir le langage. Il s’agit simplement de « get » pour recevoir et de « put » pour placer. Mon exemple de fichier HERE_I_AM peut être récupéré comme suit :
tftp> get HERE_I_AMgetting from 192.168.0.9:HERE_I_AM to HERE_I_AM Received 7 bytes in 0.1 seconds
L’exemple ci-dessus offre la sortie verbeuse lorsque ce mode est activé. Vous pouvez glaner des informations utiles, comme le fait que nous n’utilisons pas le mode binaire mais simplement le mode « netascii ». De plus, vous pouvez voir combien d’octets ont été transférés et à quelle vitesse. Dans ce cas, les données faisaient sept octets et ont pris un dixième de seconde, à raison d’un demi-kilobyte (environ) par seconde, pour être achevées.
Comparer et contraster cela avec la sortie en mode non-verbose, et je suis sûr que vous conviendrez que cela vaut la peine d’être utilisé :
tftp> get HERE_I_AMReceived 7 bytes in 0.0 seconds
Si vous ressentez le besoin d’obscurcir le numéro de port de votre serveur TFTP, alors, après avoir modifié le fichier /etc/services, vous devez vous connecter avec votre logiciel client, comme ceci :
# tftp 10.10.10.10 11111
En outre, ne soyez pas trop effrayé de demander plusieurs fichiers sur une ligne. Réalisez justement cela en utilisant cette syntaxe:
# get one.txt two.txt three.txt four.txt five.txt
Si vous rencontrez des problèmes, il y a quelques options de dépannage à explorer. Vous pouvez par exemple avoir un lien réseau saturé en raison d’une tempête de diffusion ou un périphérique qui se comporte mal et provoque des bizarreries sur le réseau. Vous serez toutefois heureux d’apprendre que vous pouvez ajuster les délais d’attente. Tout d’abord, à partir de l’invite du client TFTP, nous pouvons régler les délais d’attente sur une base par paquet, comme ceci:
tftp> rexmt 10
Ceci nous montre le réglage des délais de retransmission sur une base par paquet à 10 secondes.
Pour régler le délai de transfert total, pour l’ensemble de la transaction, ajustez le paramètre suivant, comme ceci:
tftp> timeout 30
Un autre outil utile pour le débogage est la fonctionnalité « trace ». Elle peut être activée comme suit:
tftp> tracePacket tracing on.
Maintenant, chaque transfert aura l’air très bruyant, comme ci-dessous, ce qui devrait aider à votre dépannage:
tftp> get HERE_I_AMsent RRQ <file=HERE_I_AM, mode=netascii>received DATA <block=1, 512 bytes> sent ACK <block=1> received DATA <block=2, 512 bytes>sent ACK <block=2> received DATA <block=3, 512 bytes>
À partir des informations ci-dessus, vous devriez être en mesure de dire à quel moment un transfert échoue et peut-être discerner un modèle de comportement.
Incidemment, si vous voulez quitter l’invite du client TFTP, alors frapper la touche « q » devrait suffire.
Dans cette section, nous avons vu comment configurer et recevoir des fichiers d’un serveur TFTP. Comme mentionné, c’est une bonne idée de pare-feu le port 69 du monde extérieur si vous expérimentez avec ce logiciel et surtout si vous le déployez en production.
Je vous recommande soit de verrouiller votre serveur pour qu’il ne soit accessible que par quelques machines en utilisant des IPtables ou des TCP Wrappers. Bien qu’il s’agisse d’une technologie plus ancienne, TFTP est sans aucun doute toujours un outil utile à avoir dans votre boîte à outils, et il ne devrait pas être écarté comme étant seulement utile pour passer la configuration aux stations de travail ou aux serveurs lors de leur démarrage.
Systemd
Incidemment, pour démarrer et arrêter le serveur TFTP (ou le redémarrer après avoir effectué un changement de configuration) sur les systèmes systemd modernes, vous pouvez exécuter cette commande, en remplaçant « stop » par « restart » ou « start » lorsque cela est nécessaire.
# systemctl stop openbsd-inetd
Sur les systèmes plus anciens, il n’est pas nécessaire de vous rappeler que dans la plupart des cas, une de ces commandes suffira.
# /etc/init.d/openbsd-inetd start# service openbsd-inetd restart
Changez simplement openbsd-inetd par le nom des scripts inetd ou xinetd appropriés pour votre distribution. Rappelez-vous que vous pouvez trouver les noms des services en exécutant une commande comme celle-ci :
# ls /etc/init.d
Cela fonctionne même sur les versions modernes de systemd mais vous devez regarder attentivement la liste des fichiers résultants car, avouons-le, les conduits vers « inetd » pourraient être considérés comme un retour en arrière dans certains cercles et avoir des noms de fichiers étranges.
EOF
Si vous décidez de prendre votre vie en main et de servir TFTP à travers l’Internet, laissez-moi vous offrir un mot d’avertissement, enfin, un acronyme en fait : NAT. Si la traduction d’adresse de réseau est impliquée dans les connexions distantes, alors vous risquez d’avoir des difficultés avec les transferts TFTP en raison du fait qu’ils utilisent UDP. Pour que cela fonctionne, il faut que le routeur NAT agisse comme un proxy légèrement plus avancé. Vous pouvez regarder le logiciel de sécurité renommé, pfSense, qui peut apparemment aider.
Nous avons examiné un certain nombre de fonctionnalités de TFTP. Il est clair qu’il y a des circonstances spécifiques où l’excellent TFTP est un outil utile qui peut être utilisé rapidement et efficacement avec peu de configuration.
A d’autres moments, il faut l’admettre, TFTP ne coupera pas tout à fait l’herbe sous le pied. Dans de tels cas, sFTP et FTP standard pourraient être plus appropriés. Avant de chercher ces paquets, cependant, jetez un coup d’œil rapide pour voir si les fonctionnalités dont vous avez besoin sont présentes dans la boîte à outils de TFTP. Vous pourriez être agréablement surpris de ce que vous trouverez. Après tout, de nombreux outils que nous utilisons aujourd’hui annoncent l’époque dont TFTP est issu.
Chris Binnie est un consultant technique avec 20 ans d’expérience Linux et un écrivain pour Linux Magazine et Admin Magazine. Son nouveau livre Linux Server Security : Hack and Defend vous apprend à lancer des attaques sophistiquées, à rendre vos serveurs invisibles et à craquer des mots de passe complexes.
Promouvez votre carrière dans l’administration système Linux ! Consultez le cours Essentials of System Administration de la Fondation Linux.
Lisez les articles précédents :
Transferts triviaux avec TFTP, partie 1 : Pourquoi l’utiliser ?
Transferts triviaux avec TFTP, partie 2 : configuration
.