Vissza a bloghoz

Netcat segédprogram Linuxon: TCP/UDP kapcsolatok tesztelése VPS-en a Netcat segítségével

Netcat segédprogram Linuxon: TCP/UDP kapcsolatok tesztelése VPS-en a Netcat segítségével

Bevezetés

Az egyik legnagyobb előnye a Linux használatának a rengeteg hasznos segédprogram, amit biztosít. A programon belüli funkciók általában elegendőek a legtöbb programozó számára a munkájuk elvégzéséhez. Ez azt jelenti, hogy az esetek többségében nem lesz szükséged külső programok és szoftverek letöltésére. A beépített eszközök elegendő funkciót biztosítanak majd. Ezen hasznos funkciók közé tartozik a netcat segédprogram is.

Ha a hálózati eszközök világáról van szó, a netcat szinte egy túlméretezett fegyver. Ez egy hihetetlenül sokoldalú parancs, amelyet számos célra használhatsz. Például használhatod ezt az egyetlen eszközt a rendszerkapcsolatokon keresztüli monitorozásra, tesztelésre, valamint mindenféle fájl és adat átvitelére. Ebben az útmutatóban megvizsgáljuk, hogyan hajthatod végre mindezen műveleteket egy VPS segítségével, a netcat használatával.

A Netcat megtalálása

A Netcat általában minden modern Linux disztribúción elérhető. Ez azt jelenti, hogy nagy valószínűséggel már rendelkezel vele, és nem kell külön telepítened. Oktatóanyagunkban az Ubuntu 12.04 VPS-t fogjuk használni. A saját Ubuntu szerveredet is telepítheted az útmutatónkat követve. Az Ubuntu általában a netcat segédprogram BSD változatával érkezik. Tartsd szem előtt, hogy ha másik verziód van, az kissé eltérően működhet.

Az alapvető szintaxis áttekintése

Kezdésként megismerkedünk a netcat segédprogramban működő általános szintaxissal. A netcat-et egy TCP-kapcsolat indításával működtetheted. A kapcsolatot egy távoli gazdagép felé kell kezdeményezni. Íme a netcat alapvető szintaxisa:

Ez a parancs megpróbál egy TCP-kapcsolatot indítani egy távoli gazdagép felé. Hogy melyik gazdagéphez csatlakozik, az a parancsban megadott portszámtól függ. A kapcsolat titkosítatlan lesz. Mint látható, ez a parancs hasonlóan működik, mint a telnet parancs.

Másrészt kezdeményezhetsz egy UDP-kapcsolatot is. Ha TCP helyett UDP csomagot szeretnél küldeni, a -u opciót kell használnod. Ez így nézne ki:

Ha szeretnéd, megadhatsz egy porttartományt is. Ehhez egy kötőjelet kell tenned az első és az utolsó port közé. Íme egy példa:

Ehhez további jelzőket (flag) is hozzáadhatsz. Egy másik fontos dolog, hogy a netcat és az nc parancsokat felcserélhetően használhatod. Mindkettő ugyanazt a parancsot indítja el, vagyis egymás álnevei (alias).

A Netcat használata portszkennelésre

Kezdésként vizsgáljuk meg a netcat egyik leggyakoribb felhasználási módját. Megnézzük, hogyan használhatjuk portszkennerként. A legtöbb helyzetben jobban jársz egy olyan eszköz használatával, mint az nmap. Ha azonban csak egyszerű portszkennelést kell végezned, a netcat hasznos lehet. Segítségével könnyedén azonosíthatod a nyitott portokat.

Ahhoz, hogy a netcat-et portszkennerként használd, meg kell adnod a portok tartományát. Ezt a -z opcióval teheted meg. Így a rendszer a kapcsolat megkísérlése helyett a porttartományt fogja pásztázni. Tegyük fel, hogy az 1-es porttól az 1000-es portig szeretnénk szkennelni:

A -z parancs mellett a -v opciót is használtuk. Ez utóbbi lehetővé teszi, hogy több információt kapjunk a parancstól. Lehetővé teszi, hogy részletesebb (verbose) kimenetet kapjunk.

Cserébe egy ehhez hasonló kimenetet fogsz kapni:

port scanning netcat utility

A kimenet sok információt mutat minden egyes portról. Láthatod az egyes portok kapcsolati állapotát. Másrészt a domain név helyett használhatod az IP-címet is, ha ismered azt. Ez sokkal gyorsabbá teszi a folyamatot. Íme egy példa:

A -n jelzőt használtuk annak jelzésére, hogy a rendszernek nem szükséges DNS-t használnia az IP-cím feloldásához.

A visszatérési üzenetek általában a szabványos hiba kimenetre (standard error) küldődnek. Az eredmények gyorsabb kiszűrése érdekében átirányíthatod őket a szabványos kimenetre (standard out). Ehhez a 2>&1 bash szintaxist fogjuk használni. Ezt követően a grep segítségével szűrjük ki az eredményeket. Alkalmazzuk ezt a példánkra:

A kimenet ehhez hasonlóan fog kinézni:

port scan succeeded

A kimenet azt mutatja, hogy a megadott tartományban csak a 22-es port van nyitva a kapcsolódáshoz. A 22-es port történetesen a hagyományos SSH-port.

Kommunikáció Netcaten keresztül: Hogyan működik?

A következőkben megnézzük, hogyan használhatja a netcatot TCP- és UDP-csomagok küldésére. Nemcsak erre képes, hanem különféle portokon is tud csomagokat fogadni. Ennek a képességnek köszönhetően két netcat példány segítségével kliens-szerver kapcsolatot hozhat létre. Kezdetben meghatározza a klienst és a szervert. A kezdeti konfiguráció után mindkét kliens küldhet és fogadhat csomagokat mindkét irányban.

Természetesen az egyik rendszeren konfigurálnia kell a netcatot, hogy figyelje a kapcsolatokat egy adott porton. Ehhez a -l paramétert kell használnia. Ezzel a következőképpen választhatja ki a kívánt portot:

Most a TCP ezen a gépen a 4444-es porton fogja várni a kapcsolatokat. Fontos megjegyezni, hogy ha Ön nem root vagy normál felhasználó, nem fog tudni hozzáférni az 1000 alatti portokhoz.

Ezután konfigurálnia kell egy második gépet a kapcsolat létrehozásához. Ugyanazt a portszámot fogja használni, és megad egy konkrét domain nevet a következőképpen:

Ennek a parancsnak a futtatása nem ad semmilyen kimenetet. Azonban létrehozza a kapcsolatot. Ez azt jelenti, hogy elkezdhet üzeneteket küldeni az egyik szerverről a másikra. Ehhez mindössze annyit kell tennie, hogy beírja az üzenetet, majd megnyomja az ENTER billentyűt. Az üzenet mindkét képernyőn megjelenik.

Ha végzett, a CTRL+D billentyűkombináció megnyomásával bezárhatja a TCP-kapcsolatot.

Küldhetők fájlok a Netcat használatával?

A következőkben megmutatjuk, hogyan küldhet fájlokat a netcaten keresztül. TCP-kapcsolattal üzeneteket és más típusú adatokat is küldhet. Kezdésként ki kell választania egy gépet, amely fogadja a kapcsolatokat. Ahelyett azonban, hogy beírnánk az információkat a parancsba, egy fájlba helyezzük el azokat, így:

A másik gépen létre kell hoznia egy új szöveges fájlt. Íme a használandó parancs:

A fájl átviteléhez bemenetként fogja használni a kapcsolat számára a figyelő számítógépen:

A másik számítógépen megjelenik egy új, „received_file” nevű fájl. Ez tartalmazni fogja az összes beírt információt:

file transmissionEzt a segédprogramot fájlátviteli programmá is alakíthatja. Tegyük fel, hogy egy könyvtár tartalmát szeretné átvinni. Ezt úgy fogjuk megtenni, hogy létrehozunk egy névtelen tarballt, amelyet átviszünk a rendszerre, és kicsomagolunk a távoli könyvtárba. A másik gépen fel kell készülnünk a fájl fogadására. Tudjuk, hogy ki kell csomagolnunk és ki kell bontanunk. Ehhez adja ki ezt a parancsot:

A kötőjel azt jelzi, hogy a tar a szabványos bemeneten fog működni. Ez a kezdeti szerveren lévő netcat-től származik, amikor létrehoztuk a kezdeti kapcsolatot.

Végül a teljes könyvtár tartalmát egy tarballba helyezhetjük, és a netcaten keresztül elküldhetjük így:

A tar parancsban lévő kötőjel azt mutatja, hogy arra utasítjuk a rendszert, hogy archiválja (tar) és tömörítse (zip) a könyvtár tartalmát. Arra is utasítja, hogy az eredményt a szabványos kimenetre írja. A fájl a TCP-kapcsolaton keresztül jut el a másik oldalra. A fogadó szerver kicsomagolja és elmenti az aktuális távoli könyvtárba.

Ugyanígy más típusú adatokat is átvihet a netcaten keresztül. Sokan használják a dd parancsot lemezképek készítésére és átvitelére. Az adatok és fájlok átvitelének egy másik módjáért tekintse meg a útmutatónkat, amely bemutatja, hogyan szavatolható a biztonság az SFTP-vel történő fájlátvitel során.

A Netcat használata webszerverként

A netcat másik hasznos funkciója, hogy segítségével tesztelheti az oldalait. Tegyük fel, hogy egy szervert használunk egy ilyen HTML-fájl létrehozásához:

Ez az a HTML-kód, amelyet a fájl tartalmaz:

Írja be ezt a fájlba, majd mentse el és zárja be. Általában a 80-as port az alapértelmezett webes port. Normál, nem root felhasználóként a 8888-as portot fogjuk választani. Feltételezve, hogy egyszer szeretné kiszolgálni és ellenőrizni az oldalt, a következő parancsot kell használnia:

A fájl tartalmának megjelenítéséhez nyissa meg a böngészőjét. Látogasson el a következő címre:

Láthatja majd az oldalt, amelyet a HTML-fájllal kódolt:

output html page netcat utility

Miután megkapta az oldalt, a netcat kapcsolat bezárul. Ez azt jelenti, hogy az oldal frissítésekor a tartalom helyett hibaüzenetet fog kapni. Ez azért van, mert úgy konfiguráltuk, hogy csak egyszer szolgálja ki az oldalt. Ha továbbra is szeretné fogadni a kapcsolatokat, hogy az oldalt a végtelenségig láthassa, egy másik kódot kell használnia:

Itt az utolsó parancsot egy végtelen ciklusba ágyaztuk. Ha le akarja állítani a ciklust, mindössze a CTRL-C billentyűkombinációt kell leütnie. Most már az első kapcsolat lezárása után is folytathatja az oldal és annak megjelenítésének megtekintését. Azonban ez a maximális funkcionalitás, amit a netcat segédprogram webszerverként való használatából kihozhat. Ne próbálja meg valódi webhelyek kiszolgálására használni, mivel nem nyújt semmilyen biztonságot. Ehelyett tekintse meg az alábbi oktatóanyagainkat: hogyan telepíthet webszerver-szoftvereket, például Nginx-et vagy Apache.

Összegzés

Ebben az oktatóanyagban bemutattuk a netcat segédprogramot, és feltártuk sokoldalúságát mint eszközt az Ubuntu rendszeren. Ahogy a fenti szakaszokban bemutattuk, használhatja kommunikációra, adatátvitelre és oldalkiszolgálási célokra. Tökéletesen működik a szerverek közötti gyors interakciókhoz TCP/UDP kapcsolatokon keresztül. Ez egy nagyon hasznos funkció számos alapszintű funkcióhoz és diagnosztikához.

Kellemes számítógéphasználatot!

author

Akshay Nagpal

Szerző · CloudSigma

Preslav Dobrev a CloudSigma kreatív tervezője, aki hagyományos és innovatív marketingcsatornák segítségével következetes vállalati identitás kialakítására összpontosít. Kiemelkedően képes ötvözni a művészi látásmódot a stratégiai marketinggel, hogy hatásos márkatörténeteket hozzon létre.

Hozzászólások

Még nincsenek hozzászólások. Legyen Ön az első.