Triviaalit siirrot TFTP:llä, osa 3: Käyttö

huhti 27, 2021
admin

Edellisissä artikkeleissa esittelimme TFTP:n ja keskustelimme siitä, miksi sitä kannattaa käyttää, sekä tarkastelimme erilaisia määritysvaihtoehtoja. Nyt kokeillaan siirtää joitakin tiedostoja. Voit tehdä tämän melko rauhassa nyt, kun osaat turvata palvelimesi hieman paremmin.

Testaus 1, 2, 3

Palvelimesi testaamiseen tarvitset tietenkin asiakkaan, johon voit muodostaa yhteyden. Onneksi voimme asentaa sellaisen hyvin helposti:

# apt-get install tftp

Red Hat -johdannaisilla pitäisi onnistua asiakkaan asennus näin:

# yum install tftp

Jos katsot palvelimesi IP-osoitteen alla olevan kaltaisella komennolla, on mahdollista muodostaa yhteys TFTP-palvelimeesi mistä tahansa (olettaen tietysti, että TCP Wrappers -konfiguraatiosi tai IPtables-sääntösi sallivat sen).

# ip a

Kun IP-osoite on tiedossa, aloittaminen on hyvin helppoa. Voit muodostaa yhteyden palvelimeen asiakkaalta näin:

# tftp 10.10.10.10

Nyt sinun pitäisi olla yhteydessä. (Jos se ei toimi, tarkista palomuurisi tai voit ”telnetata” TFTP-palvelimen IP-osoitteen porttiin 69). Seuraavaksi voit suorittaa ”status”-komennon seuraavasti:

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

Tässä vaiheessa käytän mieluummin sanallista tulostusta kirjoittamalla yksinkertaisesti tämän komennon:

tftp> verbose

Voit valita, lataatko binääritiedostoja vai pelkkiä tekstitiedostoja kirjoittamalla tämän pelkän tekstin kohdalla:

tftp> ascii

Tai voit pakottaa binääritiedostot latautumaan oikein komennolla:

tftp> binary

Luodakseni meille jotain sisältöä ladattavaksi, loin yksinkertaisen tekstitiedoston näin:

# echo hello > HERE_I_AM

Tämä tarkoittaa, että tiedosto HERE_I_AM sisältää sanan ”hello”. Siirsin sitten tämän tiedoston oletusarvoiseen TFTP-hakemistoomme, jonka näimme aiemmin olevan käytössä pääasetustiedostossa /etc/inetd.conf. Tuo hakemisto – josta uskollinen daemonimme palvelee – on nimeltään /srv/tftp, kuten näemme Listing 3:sta.

Koska kyseessä on pelkkä tekstitiedosto, ei ole juurikaan tarvetta ottaa käyttöön binääritilaa, ja olemme jo kirjoittaneet sanatarkkuuden (verbose), joten nyt on vain siirrettävä tiedostomme.

Jos tunnet FTP:n komentoriviltä, ei ole vaikeuksia omaksua sanastoa. Se on yksinkertaisesti ”get” vastaanottaa ja ”put” siirtää. Esimerkkitiedostoni HERE_I_AM voidaan hakea seuraavasti:

tftp> get HERE_I_AMgetting from 192.168.0.9:HERE_I_AM to HERE_I_AM Received 7 bytes in 0.1 seconds 

Yllä oleva esimerkki tarjoaa verbose-tulosteen, kun tämä tila on käytössä. Siitä voi poimia hyödyllistä tietoa, kuten sen, että emme käytä binääritilaa vaan vain ”netascii”-tilaa. Lisäksi näet, kuinka monta tavua siirrettiin ja kuinka nopeasti. Tässä tapauksessa datan koko oli seitsemän tavua, ja sen siirto kesti kymmenesosan sekunnista, eli puoli kilotavua (tai noin) sekunnissa.

Vertaile tätä nonverbose-tilan tulosteeseen, ja olet varmasti samaa mieltä siitä, että sitä kannattaa käyttää:

tftp> get HERE_I_AMReceived 7 bytes in 0.0 seconds

Jos koet tarpeelliseksi hämärtää TFTP-palvelimesi porttinumeron, niin /etc/services-tiedoston muokkaamisen jälkeen sinun on muodostettava yhteys asiakasohjelmistollasi näin:

# tftp 10.10.10.10 11111

Lisäksi, älä pelkää liikaa useiden tiedostojen pyytämistä yhdellä rivillä. Saavuta juuri se käyttämällä tätä syntaksia:

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

Jos törmäät ongelmiin, on olemassa pari vianmääritysvaihtoehtoa, joita voit tutkia. Sinulla saattaa esimerkiksi olla lähetysmyrskyn aiheuttama kyllästynyt verkkolinkki tai huonosti käyttäytyvä laite, joka aiheuttaa outoja verkkokummallisuuksia. Olet kuitenkin iloinen kuullessasi, että voit säätää aikakatkaisuja. Ensinnäkin TFTP-asiakkaan kehotteesta voimme asettaa aikakatkaisut pakettikohtaisesti seuraavasti:

tftp> rexmt 10

Tässä näytetään, että asetamme uudelleenlähetyksen aikakatkaisun pakettikohtaisesti 10 sekuntiin.

Kokonaissiirron aikakatkaisun asettamiseksi koko tapahtumalle säädä seuraavaa asetusta näin:

tftp> timeout 30

Toinen hyödyllinen työkalu virheenkorjaukseen on ”trace”-toiminto. Sen voi ottaa käyttöön seuraavasti:

tftp> tracePacket tracing on.

Nyt jokainen siirto näyttää hyvin kohinaiselta, kuten alla, minkä pitäisi auttaa vianetsinnässä:

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>

Ylläolevista tiedoista pitäisi pystyä kertomaan, missä vaiheessa siirto epäonnistuu, ja kenties havaita käyttäytymismalli.

Sattumoisin, jos haluat poistua TFTP-asiakaskehotteesta, ”q”-näppäimen painamisen pitäisi riittää.

Tässä osiossa olemme nähneet, miten konfiguroida ja vastaanottaa tiedostoja TFTP-palvelimelta. Kuten mainittiin, on hyvä idea suojata portti 69 palomuurilla ulkomaailmalta, jos kokeilet tätä ohjelmistoa ja varsinkin jos otat sen käyttöön tuotannossa.

Suosittelen, että joko lukitset palvelimesi niin, että siihen pääsee käsiksi vain muutama kone käyttämällä IPtauluja tai TCP Wrappereita. Vaikka TFTP on vanhempi tekniikka, se on epäilemättä edelleen hyödyllinen työkalu työkalupakissasi, eikä sitä pidä hylätä niin, että se on hyödyllinen vain konfiguraation välittämiseen työasemille tai palvelimille niiden käynnistyessä.

Systemd

Sattumoisin TFTP-palvelimen käynnistämiseksi ja pysäyttämiseksi (tai sen uudelleenkäynnistämiseksi konfiguraatiomuutoksen tekemisen jälkeen) nykyaikaisissa systemd-järjestelmissä voit ajaa tämän komennon, korvaten ”pysäyttämisen” sanan ”uudelleenkäynnistämisellä” (restart) tai ”käynnistämisellä” (start), kun se on tarpeen.

# systemctl stop openbsd-inetd

Vanhemmissa järjestelmissä ei tarvitse muistuttaa, että useimmissa tapauksissa yksi näistä komennoista riittää.

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

Vaihda openbsd-inetd yksinkertaisesti jakelullesi sopivan inetd- tai xinetd-skriptin nimeksi. Muista, että voit selvittää palveluiden nimet ajamalla tällaisen komennon:

# ls /etc/init.d

Tämä toimii jopa nykyaikaisilla systemd-versioilla, mutta sinun on katsottava tarkkaan tuloksena saatua tiedostolistausta, koska myönnettäköön, että ”inetd:n” johtoja saatetaan joissain piireissä pitää heitteillejättönä, ja niillä on outoja tiedostonimiä.

EOF

Jos päätät ottaa elämäsi omiin käsiisi ja tarjoilla TFTP:tä internetissä, haluan antaa yhden varoituksen sanan, no, oikeastaan yhden lyhenteen: NAT. Jos etäyhteyksissä on mukana verkko-osoitteiden kääntäminen (Network Address Translation), voit joutua kamppailemaan TFTP-siirtojen kanssa, koska ne käyttävät UDP:tä. NAT-reitittimen on toimittava hieman kehittyneempänä välityspalvelimena, jotta tämä toimisi. Voit tutustua tunnettuun tietoturvaohjelmistoon, pfSenseen, joka ilmeisesti voi auttaa.

Olemme tarkastelleet useita TFTP:n ominaisuuksia. On selvää, että on olemassa erityistilanteita, joissa erinomainen TFTP on hyödyllinen työkalu, jota voidaan käyttää nopeasti ja tehokkaasti pienellä konfiguroinnilla.

Muina aikoina TFTP ei tosin ole aivan riittävä. Tällaisissa tapauksissa sFTP ja tavallinen FTP saattavat olla sopivampia. Ennen kuin etsit näitä paketteja, vilkaise kuitenkin nopeasti, löytyvätkö tarvitsemasi ominaisuudet TFTP:n työkalupakista. Saatat yllättyä iloisesti siitä, mitä löydät. Loppujen lopuksi monet nykyään käyttämämme työkalut ovat peräisin ajalta, josta TFTP on peräisin.

Chris Binnie on tekninen konsultti, jolla on 20 vuoden kokemus Linuxista, ja hän kirjoittaa Linux Magazinen ja Admin Magazinen artikkeleita. Hänen uusi kirjansa Linux Server Security: Hack and Defend (Linux-palvelinten tietoturva: hakkerointi ja puolustautuminen) opettaa sinulle, miten voit käynnistää hienostuneita hyökkäyksiä, tehdä palvelimistasi näkymättömiä ja murtaa monimutkaisia salasanoja.

Edistä urasi Linux-järjestelmänhallinnassa! Tutustu The Linux Foundationin Essentials of System Administration -kurssiin.

Lue aiemmat artikkelit:

Triviaali siirto TFTP:llä, osa 1: Miksi käyttää sitä?

Triviaalit siirrot TFTP:llä, osa 2: Konfigurointi

Vastaa

Sähköpostiosoitettasi ei julkaista.