A Wireshark szűrők használata Linuxon

A Wireshark egy világszínvonalú csomagelemző, amely Linuxon, Windowson és macOS-en érhető el. Szűrői rugalmasak és kifinomultak, de néha ellentmondásosak. Elmagyarázzuk, hogy milyen „gondokra” kell figyelned.

Csomagelemzés Real Bite segítségével

A Wireshark a nyílt forráskódú világ egyik ékköve. Ez egy világszínvonalú szoftvereszköz, amelyet profik és amatőrök egyaránt használnak a hálózati problémák kivizsgálására és diagnosztizálására. A szoftverfejlesztők a kommunikációs rutinok hibáinak pontos meghatározására és jellemzésére használják. A biztonsági kutatók segítségével rögzítik és megszüntetik a rosszindulatú tevékenységeket a hálózaton.

Egy tipikus munkafolyamat a Wireshark Capture módban történő futtatása, így a hálózati forgalmat a számítógép valamelyik hálózati interfészén keresztül rögzíti. A hálózati csomagok valós időben jelennek meg, ahogy rögzítik őket. Azonban az utólagos rögzítés analízisben derül ki a hálózatban zajló események részleteiről.

A rögzített csomagokat nyomkövetésnek nevezzük. Amikor a rögzítés befejeződött, a nyomkövetést csomagonként át lehet lépni. Megvizsgálhatja bármelyik csomagot a legapróbb részletekig, feltérképezheti az eszközök közötti hálózati „beszélgetéseket”, és szűrők használatával bevonhatja (vagy kizárhatja) a csomagokat az elemzésből.

A Wireshark szűrési képességei felülmúlhatatlanok, nagy rugalmassággal és felbontóképességgel rendelkeznek. Vannak olyan finomságok a szintaxisukban, amelyek megkönnyítik a szűrő írását, és olyan eredményt kapnak, amely nem felel meg az elvárásoknak.

Ha nem érti, hogyan működnek a szűrők a Wiresharkban, soha nem fog kiszállni az első sebességfokozatból, és lefojtani a szoftver képességeit.

A Wireshark telepítése

A Wireshark telepítésekor a rendszer megkérdezi, hogy bárki, aki nem root fiókot használ, képes-e rögzíteni a hálózati nyomokat. Nemet mondani erre vonzó ötlet lehet. Lehet, hogy nem szeretné, ha mindenki láthatná, mi történik a hálózaton. Ha azonban a Wiresharkot úgy telepíti, hogy csak a root jogosultsággal rendelkezők használhassák, akkor az összes összetevője emelt szintű jogosultságokkal fog futni.

A Wireshark több mint 2 millió sor bonyolult kódot tartalmaz, és a legalacsonyabb szinten működik együtt a számítógéppel. A legjobb biztonsági gyakorlatok azt tanácsolják, hogy a lehető legkevesebb kód fusson magasabb jogosultságokkal – különösen, ha ilyen alacsony szinten működik.

Sokkal biztonságosabb a Wireshark futtatása normál felhasználói fiókkal. Továbbra is korlátozhatjuk, hogy ki futtathatja a Wiresharkot. Ehhez néhány további beállítási lépésre van szükség, de ez a legbiztonságosabb módja a folytatásnak. A Wireshark adatrögzítési elemei továbbra is magasabb jogosultságokkal fognak futni, de a Wireshark többi része normál folyamatként fut.

Az Ubuntu telepítésének elindításához írja be:

sudo apt-get install wireshark

Fedorán írja be:

sudo dnf install wireshark

Manjaro esetén használja ezt a parancsot:

sudo pacman -Syu wireshark-qt

A telepítés során az alábbi képernyő jelenik meg, amely azt javasolja, hogy ne rootként futtassa a Wiresharkot. Nyomja meg a Tab gombot, hogy a piros kiemelést a „” és nyomja meg a szóköz billentyűt.

A következő képernyőn nyomja meg a Tab billentyűt, hogy a piros kiemelést a „” és nyomja meg a szóköz billentyűt.

Az opció képernyő, amely lehetővé teszi a nem root felhasználók számára a Wireshark futtatását

A Wireshark futtatásához a „wireshark” csoport tagjának kell lennie, amely a telepítés során jön létre. Ez lehetővé teszi annak szabályozását, hogy ki futtathatja a Wiresharkot. Aki nem tartozik a „wireshark” csoportba, az nem tudja futtatni a Wiresharkot.

  A hírek olvasásának legjobb módjai iPhone-on vagy iPaden

Ha fel szeretné venni magát a „Wireshark” csoportba, használja ezt a parancsot:

sudo usermod -a -G wireshark $USER

Az új csoporttagság életbe lépéséhez kijelentkezhet, majd újra bejelentkezhet, vagy használja ezt a parancsot:

newgrp wireshark

Ha látni szeretné, hogy az új csoport tagja-e, használja a groups parancsot:

groups

Látnia kell a „wireshark”-ot a csoportok listájában.

A Wireshark indítása

A Wiresharkot az alábbi paranccsal indíthatja el. Az és (&) elindítja a Wiresharkot háttérfeladatként, ami azt jelenti, hogy folytathatja a terminálablak használatát. Még a terminál ablakát is bezárhatja, és a Wireshark tovább fut.

Írja be a következőket:

Wireshark &

Megjelenik a Wireshark felület. A számítógépben található hálózati interfész eszközök, valamint néhány beépített áleszköz szerepel a listában.

Az interfész melletti hullámos vonal azt jelenti, hogy az élő, és a hálózati forgalom áthalad rajta. A lapos vonal azt jelenti, hogy nincs tevékenység a felületen. A lista legfelső eleme az „enp0s3”, a számítógép vezetékes kapcsolata, és a várakozásoknak megfelelően tevékenységet mutat.

A csomagok rögzítésének megkezdéséhez kattintson a jobb gombbal az „enp0s3” elemre, majd a helyi menüben válassza a „Rögzítés indítása” lehetőséget.

Kattintson

Szűrőket állíthat be a Wireshark által rögzített forgalom csökkentésére. Inkább mindent rögzítünk, és kiszűrünk mindent, amit nem akarunk látni az elemzés során. Így tudjuk, hogy minden, ami történt, a nyomban van. Nem szeretne véletlenül lemaradni egy olyan hálózati eseményről, amely megmagyarázza a rögzítési szűrő miatt vizsgált helyzetet.

Természetesen a nagy forgalmú hálózatok esetében a nyomkövetések gyorsan nagyon nagyokká válhatnak, így ebben a forgatókönyvben van értelme a rögzítéskor történő szűrésnek. Vagy talán csak jobban szereti ezt így.

Vegye figyelembe, hogy a szintaxis a rögzítési szűrők kissé eltérnek mint a kijelzőknél.

A fenti képen látható kiemelt ikonok a következőket jelzik balról jobbra:

Cápauszony: Ha ez kék, rákattintva elindul a csomagrögzítés. Ha a Wireshark csomagokat rögzít, ez az ikon szürke lesz.
Négyzet: Ha ez piros, a rákattintás leállítja a futó csomagrögzítést. Ha a Wireshark nem rögzít csomagokat, ez az ikon szürke lesz.
Cápauszony környíl: Ha ez zöld, a rákattintás leállítja az éppen futó nyomkövetést. Ez lehetőséget ad a rögzített csomagok mentésére vagy eldobására, valamint a nyomkövetés újraindítására. Ha a Wireshark nem rögzít csomagokat, ez az ikon szürke lesz.

A nyom elemzése

A piros négyzet ikonra kattintva leállítja az adatrögzítést, így elemezheti a nyomkövetésben rögzített csomagokat. A csomagok időrendben kerülnek bemutatásra, és a csomag protokollja szerint színkódolva vannak. A kiemelt csomag részletei a Wireshark felület két alsó ablaktáblájában jelennek meg.

A nyomkövetés egyszerűbb beolvasásának egyszerű módja, ha a Wireshark értelmes neveket ad a csomagok forrás- és cél IP-címéhez. Ehhez kattintson a Nézet > Névfelbontás elemre, és válassza a „Hálózati címek feloldása” lehetőséget.

A Wireshark megpróbálja feloldani az egyes csomagokat küldő és fogadó eszközök nevét. Nem fog tudni minden eszközt azonosítani, de azok, amelyekre képes, segítenek a nyomkövetés kiolvasásában.

A kijelző balra görgetése több oszlopot jelenít meg a jobb oldalon. Az információs oszlopban minden olyan információ látható, amelyet a Wireshark észlel a csomagból. Az alábbi példában néhány ping kérést és választ látunk.

  A legjobb Siri-parancsikonok az induláshoz

Alapértelmezés szerint a Wireshark az összes csomagot abban a sorrendben jeleníti meg, amelyben nyomon követték őket. Sok eszköz egyszerre küld oda-vissza csomagokat. Ez azt jelenti, hogy két eszköz közötti egyetlen beszélgetés során valószínűleg másoktól származó csomagok vannak átlapolva.

Egyetlen beszélgetés vizsgálatához protokollal elkülönítheti azt. Az egyes csomagok protokollja a protokoll oszlopban látható. A legtöbb látható protokoll a TCP/IP családhoz tartozik. Megadhatja a pontos protokollt, vagy használhatja az Ethernetet egyfajta gyűjtőhelyként.

Kattintson a jobb gombbal a vizsgálni kívánt sorozat bármelyik csomagjára, majd kattintson a Beszélgetésszűrő > Ethernet elemre. Az alábbi példában kiválasztottunk egy ping kérési csomagot.

Elszigetelt ping

A csomagok sorozata a közöttük lévők nélkül jelenik meg, mivel a Wireshark automatikusan generált egy szűrőt ehhez. Megjelenik a szűrősávban és zöld színnel kiemelve, ami azt jelzi, hogy a szűrő szintaxisa helyes.

A szűrő törléséhez kattintson az „X” gombra a szűrősávon.

Saját szűrők létrehozása

Tegyünk egy egyszerű szűrőt a szűrősávba:

ip.addr == 192.168.4.20

Ez kiválasztja az összes olyan csomagot, amelyet a 192.168.4.20 IP-című eszköz küldött vagy fogadott. Jegyezze meg a kettős egyenlőségjeleket (==) szóköz nélkül.

Az eszköz (a forrás) által küldött csomagok megtekintéséhez használhatja az ip.src fájlt; az eszközhöz (a célhoz) érkezett csomagok megtekintéséhez használja az ip.dst fájlt, az alábbiak szerint:

ip.dst == 192.168.4.20 && ip.src == 192.168.4.28

Vegye figyelembe a kettős „és” jel (&&) használatát a logikai „és” jelzésére. Ez a szűrő a 192.168.4.28 címről 192.168.4.20 címre érkezett csomagokat keresi.

A Wireshark szűrőkben újoncok gyakran azt gondolják, hogy egy ilyen szűrő minden csomagot rögzít két IP-cím között, de ez nem így van.

Valójában kiszűri az összes csomagot a 192.168.4.20 IP-címre vagy onnan, függetlenül attól, hogy honnan érkeztek vagy hová küldték. Ugyanezt teszi a 192.168.4.28 IP-címről érkező összes csomaggal. Egyszerűbben fogalmazva, kiszűri az összes forgalmat bármelyik IP-címre vagy onnan.

Más protokollokon is kereshet tevékenységet. Például beírhatja ezt a szűrőt a HTTP-kérések kereséséhez:

http.request

Az eszközről érkező vagy arra küldött csomagok kizárásához használjon felkiáltójelet (!), és tegye zárójelbe a szűrőt. [()]:

!(ip.addr == 192.168.4.14)

Ez a szűrő kizárja a 192.168.4.14 címre vagy onnan küldött összes csomagot.

Ez ellentétes, mert a szűrő tartalmazza az egyenlőség operátort (==). Azt várhatta, hogy ezt a szűrőt a következőképpen írja be:

ip.addr !=192.168.4.14

Ez azonban nem fog működni.

Protokoll alapján is kereshet karakterláncokat a csomagokon belül. Ez a szűrő ezt keresi Transmission Control Protocol (TCP) csomagok, amelyek a „youtube” karakterláncot tartalmazzák:

tcp contains youtube

Az újraküldést kereső szűrő hasznos lehet annak ellenőrzésére, hogy van-e kapcsolati probléma. Az újraküldések olyan csomagok, amelyeket újraküldenek, mert az első átvitel során megsérültek vagy elvesztek. A túl sok újraküldés lassú kapcsolatot vagy lassan reagáló eszközt jelez.

Írja be a következőket:

tcp.analysis.retransmission

Születés, élet, halál és titkosítás

Két eszköz közötti hálózati kapcsolat akkor jön létre, amikor az egyik kapcsolatba lép a másikkal, és SYN (szinkronizálás) csomagot küld. A fogadó eszköz ezután egy ACK (nyugtázás) csomagot küld. SYN csomag küldésével jelzi, hogy elfogadja-e a kapcsolatot.

  A PulseAudio Equalizer telepítése Linuxra és a hangzás javítása

A SYN és az ACK valójában két zászló ugyanabban a csomagban. Az eredeti eszköz ACK küldésével nyugtázza a SYN-t, majd az eszközök hálózati kapcsolatot létesítenek.

Ezt háromirányú kézfogásnak hívják:

A -> SYN -> B

A  ACK -> B

Az alábbi képernyőképen valaki a „nostromo.local” számítógépen a Secure Shell (SSH) csatlakozik a számítógéphez „ubuntu20-04.local”. A háromirányú kézfogás a két számítógép közötti kommunikáció első része. Vegye figyelembe, hogy a SYN csomagokat tartalmazó két sor sötétszürke színkóddal van ellátva.

A kijelző görgetése a jobb oldali oszlopok megjelenítéséhez megjeleníti a SYN, SYN/ACK és ACK kézfogási csomagokat.

Észreveheti, hogy a két számítógép közötti csomagcsere váltakozik a TCP és az SSH protokollok között. Az adatcsomagokat a titkosított SSH-kapcsolaton keresztül továbbítják, de az üzenetcsomagokat (például az ACK-t) TCP-n keresztül küldik. Hamarosan kiszűrjük a TCP-csomagokat.

Ha a hálózati kapcsolatra már nincs szükség, a rendszer eldobja. A hálózati kapcsolat megszakítására szolgáló csomagsorozat négyirányú kézfogás.

Az egyik oldal FIN (finish) csomagot küld. A másik vég ACK-t küld a FIN nyugtázására, majd szintén FIN-t küld, jelezve, hogy egyetért a kapcsolat megszakításával. Az első oldal ACK-t küld az éppen kapott FIN-re, majd a hálózati kapcsolat megszakad.

Így néz ki a négyirányú kézfogás:

A -> FIN -> B

A  ACK -> B

Időnként az eredeti FIN egy ACK-csomagon található, amelyet egyébként is el akartak küldeni, amint az alább látható:

A -> FIN, ACK -> B

A  ACK -> B

Ebben a példában ez történik.

Ha csak az SSH-forgalmat szeretnénk látni ehhez a beszélgetéshez, használhatunk egy szűrőt, amely meghatározza az adott protokollt. A következőket írjuk be, hogy megtekinthessük az SSH protokollt használó összes forgalmat a távoli számítógép felé és onnan:

ip.addr == 192.168.4.25 && ssh

Ez mindent kiszűr, kivéve a 192.168.4.25 SSH-forgalmat.

Egyéb hasznos szűrősablonok

Amikor beír egy szűrőt a szűrősávba, az piros marad mindaddig, amíg a szűrő szintaktikailag helyes lesz. Zöldre vált, ha a szűrő megfelelő és kész.

Ha beír egy protokollt, például tcp, ip, udp vagy shh, majd egy pontot (.) követ, megjelenik egy menü. Felsorolja azokat a legutóbbi szűrőket, amelyek ezt a protokollt tartalmazták, és minden olyan mezőt, amely az adott protokollnév szűrőiben használható.

Például az ip esetén használhatja az ip.addr, ip.checksum, ip.src, ip.dst, ip.id, ip.host és több tucat másikat.

Használja a következő szűrősablonokat a szűrők alapjául:

Csak a HTTP protokoll csomagok megjelenítéséhez: http
Csak a DNS protokoll csomagok megjelenítéséhez: dns
Csak a 4000-es TCP-csomagok megjelenítéséhez forrás- vagy célportként: tcp.port==4000
Az összes TCP visszaállítási csomag megjelenítéséhez: http.request
Az ARP, ICMP és DNS csomagok kiszűrése: !(arp vagy icmp vagy dns)
Az összes újraküldés megjelenítése egy nyomkövetésben: tcp.analysis.retransmission
Jelzők (például SYN vagy FIN) szűréséhez: Be kell állítania egy összehasonlítási értéket ezekhez: 1 azt jelenti, hogy a jelző be van állítva, a 0 pedig azt, hogy nem. Tehát egy példa a következő lenne: tcp.flags.syn == 1.

A kijelzőszűrők néhány vezérelvével és alapvető felhasználási módjaival foglalkoztunk itt, de természetesen van még sok más is.

Ha szeretné értékelni a Wireshark szűrők teljes hatókörét és teljesítményét, feltétlenül nézze meg online hivatkozása.