Trasferimenti banali con TFTP, parte 3: Uso

Apr 27, 2021
admin

Negli articoli precedenti, abbiamo introdotto TFTP e discusso perché si potrebbe desiderare di usarlo, e abbiamo visto varie opzioni di configurazione. Ora proviamo a spostare alcuni file. Puoi farlo con una certa tranquillità ora che sai come proteggere il tuo server un po’ meglio.

Test 1, 2, 3

Per testare il tuo server, hai ovviamente bisogno di un client con cui connetterti. Fortunatamente, possiamo installarne uno molto facilmente:

# apt-get install tftp

I derivati di Red Hat dovrebbero gestire l’installazione di un client in questo modo:

# yum install tftp

Se cercate l’indirizzo IP del vostro server usando un comando come quello qui sotto, allora è possibile connettersi al vostro server TFTP da qualsiasi luogo (assumendo che la vostra configurazione TCP Wrappers o le regole IPtables ve lo permettano, naturalmente).

# ip a

Una volta che si conosce l’indirizzo IP, è molto semplice partire. Puoi connetterti in questo modo al server dal client:

# tftp 10.10.10.10

Ora dovresti essere connesso. (Se non ha funzionato, controlla il tuo firewall o potresti “telnet” alla porta 69 sull’indirizzo IP del tuo server TFTP). Successivamente, puoi eseguire un comando di “stato” come segue:

tftp> statusConnected to 192.168.0.9.Mode: netascii Verbose: off Tracing: offRexmt-interval: 5 seconds, Max-timeout: 25 seconds

A questo punto, preferisco usare l’output verboso digitando semplicemente questo comando:

tftp> verbose

Puoi scegliere di scaricare file binari o di testo semplice digitando questo per il testo semplice:

tftp> ascii

Oppure, potete forzare i binari a scaricare correttamente con:

tftp> binary

Per darci qualche contenuto da scaricare, ho creato un semplice file di testo come questo:

# echo hello > HERE_I_AM

Questo significa che il file HERE_I_AM contiene la parola “hello”. Ho poi spostato quel file nella nostra directory TFTP di default, che abbiamo visto in uso in precedenza nel file di configurazione principale, /etc/inetd.conf. Quella directory – da cui il nostro demone fedele sta servendo – si chiama /srv/tftp, come possiamo vedere nel listato 3.

Siccome questo è solo un file di testo semplice, non c’è bisogno di abilitare la modalità binaria, e abbiamo già scritto verbose, quindi ora si tratta solo di trasferire il nostro file.

Se avete familiarità con FTP sulla linea di comando, allora non avrete difficoltà a capirne il linguaggio. È semplicemente “get” per ricevere e “put” per mettere. Il mio file di esempio HERE_I_AM può essere recuperato come segue.

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’esempio precedente offre l’output verboso quando questa modalità è abilitata. Si possono ricavare informazioni utili, come il fatto che non stiamo usando la modalità binaria ma solo quella “netascii”. Inoltre, puoi vedere quanti byte sono stati trasferiti e quanto velocemente. In questo caso, i dati erano di sette byte e hanno impiegato un decimo di secondo, a mezzo kilobyte (o giù di lì) al secondo, per completare.

Confrontate e contrastate questo con l’output della modalità non verbosa, e sono sicuro che sarete d’accordo che vale la pena usarlo:

tftp> get HERE_I_AMReceived 7 bytes in 0.0 seconds

Se sentite il bisogno di offuscare il numero di porta del vostro server TFTP allora, dopo aver modificato il file /etc/services, dovete collegarvi con il vostro software client, così:

# tftp 10.10.10.10 11111

Inoltre, non abbiate paura di richiedere più file su una linea. Fate proprio questo usando questa sintassi:

# get one.txt two.txt three.txt four.txt five.txt

Se incontrate problemi, ci sono un paio di opzioni di risoluzione dei problemi da esplorare. Potreste per esempio avere un collegamento di rete saturo a causa di una tempesta di trasmissione o un dispositivo che si comporta male e causa stranezze di rete. Vi farà piacere sapere, comunque, che è possibile regolare i timeout. Per prima cosa, dal prompt del client TFTP, possiamo impostare i timeout su una base per pacchetto come segue:

tftp> rexmt 10

Questo ci mostra l’impostazione dei timeout di ritrasmissione su una base per pacchetto a 10 secondi.

Per impostare il timeout di trasferimento totale, per l’intera transazione, regolare la seguente impostazione, come questa:

tftp> timeout 30

Un altro strumento utile per il debug è la funzionalità “trace”. Può essere abilitata come segue:

tftp> tracePacket tracing on.

Ora, ogni trasferimento apparirà molto rumoroso, come sotto, il che dovrebbe aiutare nella risoluzione dei problemi:

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>

Dalle informazioni di cui sopra, si dovrebbe essere in grado di dire in quale punto un trasferimento fallisce e forse discernere un modello di comportamento.

Tra l’altro, se vuoi uscire dal prompt del client TFTP, dovrebbe essere sufficiente premere il tasto “q”.

In questa sezione, abbiamo visto come configurare e ricevere file da un server TFTP. Come detto, è una buona idea fare un firewall sulla porta 69 dal mondo esterno se si sperimenta questo software e soprattutto se lo si distribuisce in produzione.

Consiglio di bloccare il vostro server in modo che sia accessibile solo a poche macchine usando IPtables o TCP Wrapper. Sebbene sia una tecnologia più vecchia, TFTP è senza dubbio ancora uno strumento utile da avere nella tua cassetta degli attrezzi, e non dovrebbe essere liquidato come utile solo per passare la configurazione alle stazioni di lavoro o ai server all’avvio.

Systemd

Incidentalmente, per avviare e fermare il server TFTP (o riavviarlo dopo aver fatto un cambiamento di configurazione) sui moderni sistemi systemd puoi eseguire questo comando, sostituendo “stop” con “restart” o “start” dove necessario.

# systemctl stop openbsd-inetd

Sui sistemi più vecchi, non c’è bisogno di ricordarvi che nella maggior parte dei casi uno di questi comandi sarà sufficiente.

# /etc/init.d/openbsd-inetd start# service openbsd-inetd restart

Semplicemente cambiate openbsd-inetd con il nome degli script inetd o xinetd appropriati per la vostra distribuzione. Ricordate che potete scoprire i nomi dei servizi eseguendo un comando come questo:

# ls /etc/init.d

Questo funziona anche sulle moderne versioni di systemd, ma dovete guardare attentamente l’elenco dei file risultanti, perché ammettiamolo, i condotti per “inetd” potrebbero essere considerati un ritorno al passato in alcuni ambienti e hanno strani nomi di file.

EOF

Se decidete di prendere la vostra vita nelle vostre mani e servire TFTP attraverso Internet, lasciatemi offrire una parola di avvertimento, beh, un acronimo in realtà: NAT. Se il Network Address Translation è coinvolto nelle connessioni remote, allora si può lottare con i trasferimenti TFTP a causa del fatto che usano UDP. È necessario che il router NAT agisca come un proxy leggermente più avanzato per far funzionare il tutto. Potresti guardare il rinomato software di sicurezza, pfSense, che apparentemente può assistere.

Abbiamo esaminato un certo numero di caratteristiche di TFTP. Chiaramente, ci sono circostanze specifiche in cui l’eccellente TFTP è uno strumento utile che può essere usato rapidamente ed efficacemente con poca configurazione. In questi casi, sFTP e FTP standard potrebbero essere più appropriati. Prima di cercare questi pacchetti, comunque, date un’occhiata veloce per vedere se le caratteristiche di cui avete bisogno sono presenti nel toolkit di TFTP. Potresti essere piacevolmente sorpreso da ciò che troverai. Dopo tutto, molti degli strumenti che usiamo oggi risalgono all’epoca da cui proviene TFTP.

Chris Binnie è un consulente tecnico con 20 anni di esperienza in Linux e uno scrittore per Linux Magazine e Admin Magazine. Il suo nuovo libro Linux Server Security: Hack and Defend vi insegna come lanciare attacchi sofisticati, rendere i vostri server invisibili e craccare password complesse.

Avanzate la vostra carriera nell’amministrazione di sistema Linux! Scopri il corso Essentials of System Administration di The Linux Foundation.

Leggi gli articoli precedenti:

Trivial Transfers with TFTP, Part 1: Perché usarlo?

Trasferimenti banali con TFTP, Parte 2: Configurazione

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.