Transferuri triviale cu TFTP, Partea 3: Utilizare
În articolele anterioare, am prezentat TFTP și am discutat de ce ați putea dori să îl utilizați și am analizat diverse opțiuni de configurare. Acum haideți să încercăm să mutăm câteva fișiere. Puteți face acest lucru cu un oarecare confort acum că știți cum să vă securizați serverul un pic mai bine.
Testări 1, 2, 3
Pentru a vă testa serverul, este evident că aveți nevoie de un client cu care să vă conectați. Din fericire, putem instala unul foarte ușor:
# apt-get install tftp
Derivatele Red Hat ar trebui să gestioneze instalarea unui client astfel:
# yum install tftp
Dacă vă uitați la adresa IP a serverului dvs. folosind o comandă precum cea de mai jos, atunci este posibil să vă conectați la serverul TFTP de oriunde (presupunând că configurația TCP Wrappers sau regulile IPtables vă permit, bineînțeles).
# ip a
După ce știți adresa IP, este foarte simplu să începeți. Vă puteți conecta astfel la server de pe client:
# tftp 10.10.10.10
Acum ar trebui să fiți conectat. (Dacă nu a funcționat, verificați firewalling-ul sau ați putea „telnet” la portul 69 pe adresa IP a serverului TFTP). În continuare, puteți rula o comandă „status” după cum urmează:
tftp> statusConnected to 192.168.0.9.Mode: netascii Verbose: off Tracing: offRexmt-interval: 5 seconds, Max-timeout: 25 seconds
În acest moment, prefer să folosesc ieșirea verbose, tastând pur și simplu această comandă:
tftp> verbose
Puteți opta să descărcați fișiere binare sau fișiere text simplu, tastând acest lucru pentru text simplu:
tftp> ascii
Sau puteți forța descărcarea corectă a fișierelor binare cu:
tftp> binary
Pentru a ne oferi un conținut de descărcat, am creat un fișier text simplu ca acesta:
# echo hello > HERE_I_AM
Aceasta înseamnă că fișierul HERE_I_AM conține cuvântul „hello”. Apoi am mutat acel fișier în directorul nostru TFTP implicit, pe care am văzut că este utilizat anterior în fișierul principal de configurare, /etc/inetd.conf. Acel director – din care servește daimonul nostru fidel – se numește /srv/tftp, după cum putem vedea în lista 3.
Pentru că acesta este doar un fișier text simplu, nu este nevoie să activăm modul binar, iar noi am scris deja verbose, așa că acum este vorba doar de a transfera fișierul nostru.
Dacă sunteți familiarizați cu FTP-ul în linia de comandă, atunci nu veți avea nicio dificultate în a prelua limbajul. Este pur și simplu „get” pentru a primi și „put” pentru a plasa. Exemplul meu de fișier HERE_I_AM poate fi preluat după cum urmează:
tftp> get HERE_I_AMgetting from 192.168.0.9:HERE_I_AM to HERE_I_AM Received 7 bytes in 0.1 seconds
Exemplul de mai sus oferă ieșirea verbose atunci când acest mod este activat. Puteți culege informații utile, cum ar fi faptul că nu folosim modul binar, ci doar modul „netascii”. În plus, puteți vedea câți octeți au fost transferați și cât de repede. În acest caz, datele au avut o dimensiune de șapte octeți și au avut nevoie de o zecime de secundă, la o jumătate de kilooctet (sau cam așa ceva) pe secundă, pentru a se finaliza.
Comparați și contrastați acest lucru cu ieșirea din modul non-verbose și sunt sigur că veți fi de acord că merită să-l folosiți:
tftp> get HERE_I_AMReceived 7 bytes in 0.0 seconds
Dacă simțiți nevoia de a ofusca numărul de port al serverului TFTP, atunci, după editarea fișierului /etc/services, trebuie să vă conectați cu software-ul client, astfel:
# tftp 10.10.10.10 11111
În plus, nu vă speriați prea tare de solicitarea mai multor fișiere pe o singură linie. Realizați exact acest lucru folosind această sintaxă:
# get one.txt two.txt three.txt four.txt five.txt
Dacă întâmpinați probleme, există câteva opțiuni de depanare de explorat. S-ar putea, de exemplu, să aveți o legătură de rețea saturată din cauza unei furtuni de difuzare sau un dispozitiv care se comportă greșit și care provoacă ciudățenii ciudate în rețea. Cu toate acestea, veți fi încântat să aflați că puteți ajusta timeout-urile. În primul rând, de la promptul clientului TFTP, putem seta timeout-urile pe fiecare pachet în parte, astfel:
tftp> rexmt 10
Aceasta ne arată setarea timeout-ului de retransmisie pe fiecare pachet la 10 secunde.
Pentru a seta timeout-ul de transfer total, pentru întreaga tranzacție, ajustați următoarea setare, astfel:
tftp> timeout 30
Un alt instrument util pentru depanare este funcționalitatea „trace”. Aceasta poate fi activată după cum urmează:
tftp> tracePacket tracing on.
Acum, fiecare transfer va avea un aspect foarte zgomotos, ca mai jos, ceea ce ar trebui să vă ajute la depanare:
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>
Din informațiile de mai sus, ar trebui să puteți spune în ce moment un transfer eșuează și, poate, să puteți discerne un model de comportament.
În mod întâmplător, dacă doriți să ieșiți din promptul clientului TFTP, atunci ar trebui să fie suficientă apăsarea tastei „q”.
În această secțiune, am văzut cum să configurăm și să primim fișiere de la un server TFTP. După cum am menționat, este o idee bună să se protejeze prin firewall portul 69 de lumea exterioară dacă experimentați cu acest software și mai ales dacă îl implementați în producție.
Vă recomand fie să vă blocați serverul astfel încât să poată fi accesat doar de câteva mașini folosind IPtables sau TCP Wrappers. Deși este o tehnologie mai veche, TFTP este, fără îndoială, încă o unealtă utilă pe care trebuie să o aveți în setul de instrumente și nu ar trebui să fie respinsă ca fiind utilă doar pentru a transmite configurația către stațiile de lucru sau servere în momentul în care acestea pornesc.
Systemd
Incidental, pentru a porni și opri serverul TFTP (sau pentru a-l reporni după ce ați făcut o modificare de configurare) pe sistemele systemd moderne puteți rula această comandă, înlocuind „stop” cu „restart” sau „start” acolo unde este necesar.
# systemctl stop openbsd-inetd
Pe sistemele mai vechi, nu este nevoie să vă reamintim că în majoritatea cazurilor una dintre aceste comenzi va fi suficientă.
# /etc/init.d/openbsd-inetd start# service openbsd-inetd restart
Simplu schimbați openbsd-inetd cu numele scripturilor inetd sau xinetd adecvate pentru distribuția dumneavoastră. Amintiți-vă că puteți afla numele serviciilor rulând o comandă de genul acesta:
# ls /etc/init.d
Acest lucru funcționează chiar și pe versiunile moderne de systemd, dar trebuie să vă uitați cu atenție la lista de fișiere rezultată, deoarece, să recunoaștem, conductele către „inetd” ar putea fi considerate un regres în unele cercuri și au nume de fișiere ciudate.
EOF
Dacă vă decideți să vă luați viața în propriile mâini și să serviți TFTP pe Internet, permiteți-mi să vă ofer un avertisment, ei bine, de fapt un acronim: NAT. Dacă Network Address Translation (traducerea adreselor de rețea) este implicată în conexiunile la distanță, atunci s-ar putea să aveți probleme cu transferurile TFTP din cauza faptului că acestea utilizează UDP. Aveți nevoie ca routerul NAT să acționeze ca un proxy puțin mai avansat pentru ca acest lucru să funcționeze. Ați putea să vă uitați la renumitul software de securitate, pfSense, care se pare că vă poate ajuta.
Am analizat o serie de caracteristici ale TFTP. În mod clar, există circumstanțe specifice în care excelentul TFTP este un instrument util care poate fi utilizat rapid și eficient, cu puțină configurare.
În alte momente, trebuie să recunoaștem, TFTP nu va face față. În astfel de cazuri, sFTP și FTP standard ar putea fi mai potrivite. Totuși, înainte de a căuta aceste pachete, aruncați o privire rapidă pentru a vedea dacă funcțiile de care aveți nevoie sunt prezente în setul de instrumente al TFTP. S-ar putea să fiți plăcut surprins de ceea ce veți găsi. La urma urmei, multe dintre instrumentele pe care le folosim astăzi sunt vestite din vremea din care a apărut TFTP.
Chris Binnie este consultant tehnic cu 20 de ani de experiență în Linux și redactor pentru Linux Magazine și Admin Magazine. Noua sa carte Linux Server Security: Hack and Defend vă învață cum să lansați atacuri sofisticate, cum să vă faceți serverele invizibile și cum să spargeți parolele complexe.
Avansați în cariera dumneavoastră în Administrarea Sistemelor Linux! Consultați cursul Essentials of System Administration de la The Linux Foundation.
Citește articolele anterioare:
Transferuri triviale cu TFTP, Partea 1: De ce să-l folosiți?
Transferuri triviale cu TFTP, Partea 2: Configurație
.