Triviální přenosy pomocí TFTP, část 3: Použití
V předchozích článcích jsme si představili TFTP, probrali jsme, proč jej používat, a podívali jsme se na různé možnosti konfigurace. Nyní si vyzkoušíme přesunout nějaké soubory. Teď, když už víte, jak svůj server trochu lépe zabezpečit, to můžete dělat s jistým komfortem.
Testování 1, 2, 3
Pro testování serveru samozřejmě potřebujete klienta, se kterým se můžete připojit. Naštěstí ho můžeme nainstalovat velmi snadno:
# apt-get install tftp
Red Hat derivatives by měly zvládnout instalaci klienta takto:
# yum install tftp
Pokud si vyhledáte IP adresu serveru pomocí příkazu, jako je ten níže, pak je možné se k serveru TFTP připojit odkudkoli (samozřejmě za předpokladu, že vám to konfigurace TCP Wrappers nebo pravidla IPtables dovolí).
# ip a
Jakmile znáte IP adresu, je velmi jednoduché začít pracovat. Z klienta se můžete k serveru připojit takto:
# tftp 10.10.10.10
Nyní byste měli být připojeni. (Pokud by to nefungovalo, zkontrolujte firewall nebo můžete „telnetovat“ na port 69 na IP adrese TFTP serveru). Dále můžete spustit příkaz „status“ následujícím způsobem:
tftp> statusConnected to 192.168.0.9.Mode: netascii Verbose: off Tracing: offRexmt-interval: 5 seconds, Max-timeout: 25 seconds
V tomto okamžiku dávám přednost použití slovního výstupu prostým zadáním tohoto příkazu:
tftp> verbose
Můžete se rozhodnout pro stahování binárních souborů nebo prostých textových souborů zadáním tohoto pro prostý text:
tftp> ascii
Nebo můžete vynutit správné stažení binárních souborů pomocí:
tftp> binary
Abych nám dal ke stažení nějaký obsah, vytvořil jsem jednoduchý textový soubor takto:
# echo hello > HERE_I_AM
To znamená, že soubor ZDE_I_AM obsahuje slovo „ahoj“. Tento soubor jsem pak přesunul do našeho výchozího adresáře TFTP, jehož použití jsme viděli dříve v hlavním konfiguračním souboru /etc/inetd.conf. Tento adresář – z něhož obsluhuje náš věrný démon – se jmenuje /srv/tftp, jak vidíme na výpisu 3.
Protože se jedná pouze o obyčejný textový soubor, není třeba povolovat binární režim, a navíc jsme již napsali verbose, takže nyní stačí přenést náš soubor.
Pokud jste alespoň trochu obeznámeni s FTP v příkazovém řádku, pak vám nebude činit potíže zachytit tuto mluvu. Je to jednoduše „get“ pro příjem a „put“ pro umístění. Můj ukázkový soubor ZDE_I_AM lze získat takto:
tftp> get HERE_I_AMgetting from 192.168.0.9:HERE_I_AM to HERE_I_AM Received 7 bytes in 0.1 seconds
Výše uvedený příklad nabízí slovní výstup, pokud je tento režim povolen. Můžete z něj vyčíst užitečné informace, například že nepoužíváme binární režim, ale pouze režim „netascii“. Kromě toho můžete vidět, kolik bajtů bylo přeneseno a jak rychle. V tomto případě měla data velikost sedm bajtů a jejich přenos trval desetinu sekundy, tedy půl kilobajtu (nebo tak nějak) za sekundu.
Srovnejte a porovnejte to s výstupem v režimu bez hlášení a jistě mi dáte za pravdu, že se vyplatí jej použít:
tftp> get HERE_I_AMReceived 7 bytes in 0.0 seconds
Pokud cítíte potřebu zakrýt číslo portu TFTP serveru, pak se po úpravě souboru /etc/services musíte připojit pomocí klientského softwaru, například takto:
# tftp 10.10.10.10 11111
Dále se nemusíte příliš bát vyžádání více souborů na jednom řádku. Dosáhnete toho právě pomocí této syntaxe:
# get one.txt two.txt three.txt four.txt five.txt
Pokud narazíte na problémy, můžete prozkoumat několik možností řešení problémů. Můžete mít například přesycenou síťovou linku v důsledku broadcastové bouře nebo špatně se chovající zařízení, které způsobuje podivné síťové podivnosti. Jistě vás však potěší, že můžete upravit časové limity. Za prvé, z příkazového řádku klienta TFTP můžeme nastavit časové limity na základě jednotlivých paketů takto:
tftp> rexmt 10
Toto nám ukazuje nastavení časových limitů pro opakované přenosy na základě jednotlivých paketů na 10 sekund.
Chcete-li nastavit celkový časový limit přenosu, pro celou transakci, upravte následující nastavení takto:
tftp> timeout 30
Dalším užitečným nástrojem pro ladění je funkce „trace“. Lze ji zapnout následujícím způsobem:
tftp> tracePacket tracing on.
Nyní bude každý přenos vypadat velmi zašuměně, jako níže, což by vám mělo pomoci při řešení problémů:
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>
Z výše uvedených informací byste měli být schopni zjistit, ve kterém okamžiku přenos selže, a možná rozeznat vzorec chování.
Jestliže chcete z výzvy klienta TFTP odejít, mělo by stačit stisknout klávesu „q“.
V této části jsme si ukázali, jak konfigurovat a přijímat soubory ze serveru TFTP. Jak již bylo zmíněno, je dobré bránit port 69 firewallem před vnějším světem, pokud s tímto softwarem experimentujete a zejména pokud jej nasazujete do výroby.
Doporučuji buď uzamknout server tak, aby k němu mělo přístup jen několik málo počítačů, a to pomocí IPtables nebo TCP Wrappers. Přestože se jedná o starší technologii, TFTP je bezpochyby stále užitečným nástrojem, který byste měli mít ve své sadě nástrojů, a neměli byste ho zavrhovat jako užitečný pouze pro předávání konfigurace pracovním stanicím nebo serverům při jejich spouštění.
Systemd
Shodou okolností můžete pro spuštění a zastavení serveru TFTP (nebo jeho restartování po provedení změny konfigurace) v moderních systémech systemd spustit tento příkaz, přičemž v případě potřeby nahradíte „stop“ příkazem „restart“ nebo „start“.
# systemctl stop openbsd-inetd
Na starších systémech není třeba připomínat, že ve většině případů postačí jeden z těchto příkazů.
# /etc/init.d/openbsd-inetd start# service openbsd-inetd restart
Prostě změňte openbsd-inetd na název příslušných skriptů inetd nebo xinetd pro vaši distribuci. Nezapomeňte, že názvy služeb můžete zjistit spuštěním příkazu, jako je tento:
# ls /etc/init.d
Tento příkaz funguje i na moderních verzích systemd, ale je třeba se pozorně podívat na výsledný výpis souborů, protože přiznejme si, že kanály na „inetd“ mohou být v některých kruzích považovány za přežitek a mají podivné názvy souborů.
EOF
Pokud se rozhodnete vzít život do vlastních rukou a obsluhovat TFTP po internetu, dovolte mi jedno varování, no, vlastně jednu zkratku: NAT. Pokud je do vzdálených připojení zapojen překlad síťových adres, můžete mít s přenosy TFTP potíže kvůli tomu, že používají protokol UDP. Aby to fungovalo, je třeba, aby směrovač NAT fungoval jako trochu pokročilejší proxy server. Můžete se podívat na známý bezpečnostní software pfSense, který zřejmě dokáže pomoci.
Podívali jsme se na řadu funkcí TFTP. Je zřejmé, že existují specifické okolnosti, kdy je vynikající TFTP užitečným nástrojem, který lze použít rychle a efektivně s malou konfigurací.
Jindy, pravda, TFTP nebude zcela vyhovovat. V takových případech může být vhodnější sFTP a standardní FTP. Než však začnete hledat tyto balíčky, zběžně se podívejte, zda jsou funkce, které potřebujete, přítomny v sadě nástrojů TFTP. Možná budete příjemně překvapeni tím, co najdete. Koneckonců mnoho nástrojů, které dnes používáme, je předzvěstí doby, ze které TFTP pochází.“
Chris Binnie je technický konzultant s dvacetiletou praxí v Linuxu a autor článků pro časopisy Linux Magazine a Admin Magazine. Jeho nová kniha Linux Server Security: Hack and Defend vás naučí, jak provádět sofistikované útoky, zneviditelnit servery a prolamovat složitá hesla.
Pokročte ve své kariéře v oblasti správy systémů Linux! Podívejte se na kurz Essentials of System Administration od The Linux Foundation.
Přečtěte si předchozí články:
Triviální přenosy pomocí TFTP, část 1:
Triviální přenosy pomocí TFTP, část 2: Konfigurace