Triviális átvitelek a TFTP-vel, 3. rész: Használat

ápr 27, 2021
admin

A korábbi cikkekben bemutattuk a TFTP-t, megvitattuk, hogy miért érdemes használni, és áttekintettük a különböző konfigurációs lehetőségeket. Most próbáljunk meg néhány fájlt mozgatni. Ezt most már nyugodtan megteheted, hogy tudod, hogyan tudod egy kicsit jobban biztosítani a szerveredet.

Tesztelés 1, 2, 3

A szerver teszteléséhez nyilvánvalóan szükséged van egy kliensre, amellyel csatlakozhatsz. Szerencsére nagyon könnyen telepíthetünk egyet:

# apt-get install tftp

A Red Hat származékoknak így kell kezelniük a kliens telepítését:

# yum install tftp

Ha megnézzük a szerver IP-címét egy olyan paranccsal, mint az alábbi, akkor bárhonnan csatlakozhatunk a TFTP-kiszolgálóhoz (feltéve persze, hogy a TCP Wrappers konfiguráció vagy az IPtables szabályok megengedik).

# ip a

Ha már tudod az IP-címet, nagyon egyszerűen elindulhatsz. A kliensről így csatlakozhatsz a szerverhez:

# tftp 10.10.10.10

Most már csatlakoznod kell. (Ha ez nem működik, ellenőrizd a tűzfaladat, vagy “telnetelj” a TFTP szerver IP címének 69-es portjára). Ezután futtathatsz egy “status” parancsot a következőképpen:

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

Az alábbi parancs egyszerű begépelésével ezen a ponton én inkább a verbose outputot használom:

tftp> verbose

A bináris vagy egyszerű szöveges fájlok letöltését választhatod, ha ezt írod be a plain texthez:

tftp> ascii

Vagy kikényszeríthetjük a binárisok helyes letöltését a következővel:

tftp> binary

Azért, hogy legyen valami tartalom a letöltéshez, létrehoztam egy egyszerű szöveges fájlt így:

# echo hello > HERE_I_AM

Ez azt jelenti, hogy az ITT_I_AM fájl a “hello” szót tartalmazza. Ezután ezt a fájlt áthelyeztem az alapértelmezett TFTP könyvtárunkba, amelyet korábban a fő konfigurációs fájlban, az /etc/inetd.conf-ban láttunk használatban. Ennek a könyvtárnak – ahonnan a hűséges démonunk kiszolgál – a neve /srv/tftp, ahogy a 3. listában láthatjuk.

Mivel ez csak egy egyszerű szöveges fájl, nincs szükség a bináris mód engedélyezésére, és már írtunk verbose-t, így most már csak a fájlunk átviteléről van szó.

Ha egyáltalán ismeri az FTP-t a parancssoron, akkor nem lesz nehéz elsajátítania a szóhasználatot. Egyszerűen “get” a fogadáshoz és “put” a helyhez. A HERE_I_AM mintafájlom a következőképpen hívható le:

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

A fenti példa a verbózus kimenetet kínálja, ha ez a mód be van kapcsolva. Hasznos információkat nyerhetünk, például azt, hogy nem bináris módot használunk, hanem csak “netascii” módot. Ezenkívül láthatjuk, hogy hány bájtot és milyen gyorsan továbbítottunk. Ebben az esetben az adat hét bájt méretű volt, és egy tizedmásodpercig tartott, másodpercenként fél kilobájt (vagy úgy).

Hasonlítsd össze és állítsd szembe ezt a nem szóbeli üzemmódú kimenettel, és biztos vagyok benne, hogy egyet fogsz érteni azzal, hogy érdemes használni:

tftp> get HERE_I_AMReceived 7 bytes in 0.0 seconds

Ha úgy érzed, hogy szükséged van a TFTP-kiszolgáló portszámának elhomályosítására, akkor az /etc/services fájl szerkesztése után csatlakoznod kell a kliens szoftvereddel, például így:

# tftp 10.10.10.10 11111

Emellett ne ijedj meg túlzottan attól, hogy több fájlt kérj egy sorban. Éppen ezt érheted el ezzel a szintaxissal:

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

Ha problémákba ütközöl, van néhány hibaelhárítási lehetőség, amit megvizsgálhatsz. Előfordulhat például, hogy egy broadcast vihar miatt telített hálózati kapcsolatod van, vagy egy rosszul viselkedő eszköz okoz furcsa hálózati furcsaságokat. Örülni fogsz azonban, ha megtudod, hogy beállíthatod az időkorlátokat. Először is, a TFTP-kliens promptjából csomagonkénti időkorlátokat állíthatunk be a következőképpen:

tftp> rexmt 10

Ez azt mutatja, hogy az újraküldési időkorlátokat csomagonkénti alapon 10 másodpercre állítjuk be.

A teljes átviteli időkorlát beállításához a teljes tranzakcióra vonatkozóan a következő beállítást kell beállítani, így:

tftp> timeout 30

A másik hasznos eszköz a hibakereséshez a “trace” funkció. Ezt a következőképpen lehet engedélyezni:

tftp> tracePacket tracing on.

Most minden egyes átvitel nagyon zajosan fog kinézni, az alábbiak szerint, ami segíthet a hibaelhárításban:

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>

A fenti információkból meg kell tudnia mondani, hogy egy átvitel melyik ponton sikertelen, és talán felismerhet egy viselkedési mintát.

Mellesleg, ha ki akar lépni a TFTP-kliens promptból, akkor a “q” billentyű lenyomása elegendő lehet.

Ebben a részben láttuk, hogyan konfigurálhatunk és fogadhatunk fájlokat egy TFTP-kiszolgálóról. Mint említettük, jó ötlet tűzfalat építeni a 69-es portra a külvilágtól, ha ezzel a szoftverrel kísérletezünk, és különösen, ha termelésben telepítjük.

Azt javaslom, hogy vagy zárd le a szervert, hogy csak néhány gép férhessen hozzá IPtables vagy TCP Wrapper használatával. Bár ez egy régebbi technológia, a TFTP kétségtelenül még mindig hasznos eszköz az eszköztáradban, és nem szabad elvetni, hogy csak a konfiguráció átadására alkalmas a munkaállomásoknak vagy szervereknek induláskor.

Systemd

A TFTP szerver indításához és leállításához (vagy újraindításához a konfiguráció módosítása után) a modern systemd rendszereken futtathatod ezt a parancsot, szükség esetén a “stop” helyett “restart”-ot vagy “start”-ot használva.

# systemctl stop openbsd-inetd

A régebbi rendszereken nem kell emlékeztetni arra, hogy a legtöbb esetben az ilyen parancsok egyike is elegendő.

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

Egyszerűen változtassa meg az openbsd-inetd parancsot a disztribúciójának megfelelő inetd vagy xinetd szkript nevére. Ne feledd, hogy a szolgáltatások nevét egy ilyen parancs futtatásával is megtudhatod:

# ls /etc/init.d

Ez még a modern systemd verziókon is működik, de alaposan meg kell nézned a kapott fájllistát, mert lássuk be, hogy az “inetd”-hez vezető vezetékek bizonyos körökben visszalépésnek számíthatnak, és furcsa fájlnevekkel rendelkeznek.

EOF

Ha úgy döntesz, hogy a saját kezedbe veszed az életed és a TFTP-t szolgálod ki az interneten keresztül, hadd mondjak egy figyelmeztető szót, nos, igazából egy rövidítést: NAT. Ha a távoli kapcsolatokban a hálózati címfordítás is szerepet játszik, akkor a TFTP átvitellel nehézségekbe ütközhet, mivel az UDP-t használ. Ahhoz, hogy ez működjön, a NAT útválasztónak egy kicsit fejlettebb proxyként kell működnie. Megnézheti a neves biztonsági szoftvert, a pfSense-t, amely nyilvánvalóan tud ebben segíteni.

Megnéztük a TFTP számos funkcióját. Nyilvánvaló, hogy vannak olyan speciális körülmények, amikor a kiváló TFTP hasznos eszköz, amelyet gyorsan és hatékonyan, kevés konfigurációval lehet használni.

Máskor, bevallottan, a TFTP nem igazán vágja a mustárt. Ilyen esetekben az sFTP és a szabványos FTP megfelelőbb lehet. Mielőtt azonban ezek után a csomagok után kutatna, nézze meg gyorsan, hogy a TFTP eszköztárában megtalálhatóak-e a szükséges funkciók. Lehet, hogy kellemesen meg fog lepődni azon, amit talál. Elvégre számos ma használt eszköz abból az időből ered, ahonnan a TFTP származik.

Chris Binnie műszaki tanácsadó, 20 éves Linux-tapasztalattal, a Linux Magazine és az Admin Magazine írója. Új könyve, a Linux Server Security: Hack and Defend megtanítja, hogyan indítson kifinomult támadásokat, hogyan tegye láthatatlanná a szervereit és hogyan törje fel a bonyolult jelszavakat.

Előrelendítse karrierjét a Linux rendszeradminisztrációban! Tekintse meg a The Linux Foundation Essentials of System Administration tanfolyamát.

Olvassa el a korábbi cikkeket:

Triviális átvitel a TFTP-vel, 1. rész: Miért használjuk?

Triviális átvitel a TFTP-vel, 2. rész: Konfiguráció

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.