A Wireshark titkai: Hogyan elemezzem a hálózati forgalmat, ha baj van?

Én mindig azt mondom, hogy egy IT-pro számára a hálózati forgalom elemzése olyan, mint egy detektívmunkának a számítógépes világban - tele rejtett nyomokkal, amiket csak a megfelelő eszközzel lehet kibogozni. Gondolj bele, amikor egy szerver hirtelen lelassul, vagy a felhasználók panaszkodnak, hogy az internetkapcsolatuk szakadozik, de semmi látszólagos oka nincs. Én ilyenkor mindig előveszem a Wiresharkot, mert ez a kis csoda képes minden egyes csomagot megmutatni, ami a hálózaton átutazik. Nemrégiben egy közepes vállalatnál dolgoztam, ahol egy furcsa teljesítménycsökkenést tapasztaltunk, és csak a Wireshark segített kideríteni, hogy egy eldugott multicast forgalom okozza a galibát. Hadd meséljek el neked lépésről lépésre, hogyan közelítheted meg ezt a témát, mert én magam is sokat tanultam belőle az évek során.

Először is, kezdjük az alapokkal, de ne félj, nem fogom unalmasan felsorolni a definíciókat. A Wireshark egy nyílt forráskódú hálózati protokoll-elemző, amit 1998 óta használnak a szakemberek. Én először Linuxon futattam, de ma már Windows-on és macOS-en is simán megy, sőt, még a mobil verziók is léteznek. A lényege, hogy passzív módon figyelje a hálózati interfészt, és minden adatot rögzítsen, amit lát. De miért fontos ez neked, mint IT-pro-nak? Mert amikor egy probléma felmerül, a naplók és a monitorok gyakran csak a felszínt mutatják. Én például egy alkalommal egy VoIP-rendszer hibáját kerestem, ahol a hívások szakadtak félbe. A rendszerlogok semmit sem árultak el, de a Wiresharkban láttam, hogy RTP csomagok elvesznek az úton, méghozzá egy rosszul konfigurált QoS szabály miatt a routeren.

Hogyan állítod be? Én mindig azt javaslom, hogy kezdj egy tiszta géppel, ahol nincs felesleges forgalom. Töltsd le a legfrissebb verziót a hivatalos oldalról, telepítsd, és indítsd el. Az első lépés a capture interfész kiválasztása. Ha Ethernetet használsz, válaszd ki a megfelelő kártyát, de vigyázz a promiscuous mode-ra - ez engedélyezi, hogy minden forgalmat láss, nem csak a saját MAC-címedhez tartozót. Én egy switchelt hálózatban gyakran mirror portot állítok be, mert különben csak a saját forgalmat látnám. Például, ha egy Cisco switcset használsz, az SPAN konfigurációval duplikálhatod a forgalmat egy másik porthoz. Ezután indítsd el a capture-t, és állítsd be a szűrőket előre, hogy ne fulladj meg az adatmennyiségben. Én szeretem a "host 192.168.1.1" szűrőt használni, ha egy specifikus IP-t akarok figyelni.

Most jön a lényeg: a capture indítása után figyeld a csomagokat valós időben. A Wireshark színesre színez mindent - kék a TCP, zöld az UDP, fekete a hibásak. Én mindig rákattintok egy csomagra, és megnézem a packet details panelt. Itt bontsd le a rétegeket: Ethernet header, IP header, TCP header, és az alkalmazásréteg payload. Például, ha HTTP forgalmat nézel, lásd meg a GET requestet, a státuszkódot, és akár a cookie-kat is. De ne állj meg itt; én mindig ellenőrzöm a TCP handshake-t. A háromutas ütem - SYN, SYN-ACK, ACK - ha nem teljes, ott van a baj. Egyszer egy VPN-kapcsolatnál ez volt a gond: a SYN csomagok eljutottak, de a válaszok nem tértek vissza, mert egy firewall blokkolta a port 443-at aszimmetrikusan.

Beszéljünk a szűrőkről részletesebben, mert ezek nélkül elvesznél a káoszban. A Wireshark display filterjei olyanok, mint a mágikus pálca. Én például "tcp.port == 80 or tcp.port == 443" szűrővel nézem az webes forgalmat. Ha ICMP-t keresel ping hibákra, akkor "icmp.type == 8" tökéletes. De a display filterek mellett vannak a capture filterek is, amik BPF szintaxist használnak - ezek megakadályozzák, hogy túl sok adatot rögzíts. Én egy nagyvállalati környezetben "not port 22 and not port 53" capture filtert állítok be, hogy kizárjam az SSH-t és DNS-t, mert azok mindig zajosak. Ha VoIP-t elemzel, akkor "udp.port == 5060" a SIP-hez, és utána az RTP streamet követheted "rtp" szűrővel. Láttam már olyan esetet, ahol egy SIP invite üzenetben rossz Via header volt, ami miatt a hívás nem ment át, és csak a Wireshark mutatta ki.

Most képzeld el, hogy egy teljesítményproblémát diagnosztizálsz. Én egy szerverfarmnál használtam a Wiresharkot, ahol a latency magas volt. Először capture-eltem a forgalmat egy bottleneck közelében, aztán exportáltam a statisztikákat. A Conversations ablakban láthattam, hogy melyik IP-pár generálja a legtöbb forgalmat - kiderült, egy rogue device broadcast stormot okozott ARP requestekkel. Az ARP tábla túlcsordulása klasszikus hiba; nézd meg az ARP csomagokat "arp" szűrővel, és lásd, ha duplikált IP-k vannak. Én mindig ellenőrzöm a TTL-t is az IP headerben - ha alacsony, akkor loop van a hálózatban. Egy másik trükk, amit én alkalmazok: a Follow TCP Stream funkció. Ez rekonstruálja az egész TCP sessiont, mintha egy szövegszerkesztőben olvasnád. Hasznos SQL lekérdezések elemzésénél vagy akár fájltranszfer hibáknál.

De ne feledkezzünk meg a biztonsági aspektusokról sem. A Wireshark kiválóan alkalmas fertőzések detektálására. Én egyszer egy ransomware támadást fedeztem fel vele: a capture-ben láttam a C2 szerverrel való kommunikációt HTTP POST requesteken keresztül, tele base64 kódolt payload-del. Szűrőként "http.request.method == POST and http contains ransomware" működött. Ha titkosított forgalmat nézel, mint HTTPS, akkor a Wireshark csak a handshake-t mutatja, de én gyakran beállítom a TLS decryption-t, ha van hozzáférésem a kulcsokhoz. Ehhez exportáld a SSLKEYLOGFILE környezeti változót a böngészőből, és add meg a Wiresharkban. Így láthatod a plaintextet is, anélkül, hogy MITM-et csinálnál.

Álljunk meg egy pillanatra a vezeték nélküli hálózatoknál. Ha Wi-Fi-t elemzel, én mindig a monitor mode-ot aktiválom a hálózati kártyán - ehhez kompatibilis adapter kell, mint egy Atheros chippel. A Wireshark ekkor 802.11 headereket is mutat, beleértve a beacon frame-eket az SSID-khez és a probe requesteket. Egy ügyfélnél a Wi-Fi roaming problémát oldottam meg így: láttam, hogy a kliensek túl korán váltanak AP-re, mert a signal strength threshold rosszul volt beállítva. Szűrőként "wlan.fc.type_subtype == 0x04" a beaconokhoz. De vigyázz a jogi oldalra - csak saját hálózaton használd, mert mások forgalmának figyelése illegális lehet.

Beszéljünk a fejlettebb elemzésekről. Én szeretem a IO Graph-ot használni a forgalom grafikus ábrázolására. Állítsd be a Y tengelyt bytes/szekundumban, és szűrővel nézd meg a csúcsokat - ez mutatja a burst-öket, amik DDoS-t vagy applikáció hibát jelezhetnek. Egy másik kedvencem a Expert Information panel: automatikusan kiemeli a hibákat, mint a retransmissziók vagy zero window probe-ok. Ha sok retransmission van, akkor congestion van a hálózatban; én ilyenkor ellenőrzöm a TCP window size-t a headerben. Például, ha a window 0-ra megy, a receiver túlterhelt. Egyszer egy NAS szervernél ez volt a gond - a storage I/O blokkolta a TCP-t.

Most képzeld el egy cloud környezetet, mondjuk Azure vagy AWS. Én hibrid setupokban gyakran a Wiresharkot használom a on-premise és cloud közötti forgalomra. Például, egy VPN tunnelben capture-elheted az ESP csomagokat, de decryptálni csak a megfelelő kulccsal lehet. Szűrőként "ip.proto == 50" az ESP-hez. Láttam már, hogy egy S3 bucket syncelés során MTU mismatch okozza a fragmentációt, ami lassítja az egészet. A Wireshark fragment offset értékével ezt gyorsan kiszúrhattad.

Ha nagy volumenű adatról van szó, én mindig capture ring buffer-t állítok be - ez korlátozza a fájlméretet, és ciklikusan írja felül a régit. 1 GB-os limitekkel dolgozom, hogy ne teljen meg a lemez. Utána a merge funkcióval több capture-t egyesíthetek, ha több pontot figyelsz. Egy troubleshooting sessionben ezt használtam egy multi-site hálózatban, ahol a latency különböző helyeken változott.

Ne hagyjuk ki a protokoll-specifikus tippeket. DNS esetében nézd meg a query/response időt - ha hosszú, akkor recursion probléma van. Szűrő: "dns.qry.name contains example.com". SMTP-nél az AUTH mechanizmust ellenőrizd, mert gyenge hitelesítés sebezhetőséget okozhat. Én egy email szerver hibánál láttam, hogy TLS fallback történik, miután a STARTTLS sikertelen - ez biztonsági rés. RDP forgalomnál a Wireshark dekódolja a protocol data unit-okat, így láthatod a clipboard redirectet vagy drive mappinget, ha teljesítményprobléma van.

A mobil app fejlesztőknek is hasznos: capture-eld az API hívásokat, mondjuk RESTful szolgáltatásoknál. Én Androidon rootolt gépen használtam a tcpdumpot, aztán Wiresharkban elemeztem. Láttam JSON payload-eket, amik túl nagyok voltak, okozva timeout-okat.

Most térjünk rá a hibaelhárítás gyakorlati példáira. Tegyük fel, egy felhasználó nem tud csatlakozni egy megosztott meghajtóhoz SMB-n keresztül. Én capture-eltem a forgalmat a kliens és szerver között: "smb or smb2". Kiderült, hogy a negotiate protocol hibás - a kliens Windows 10, a szerver 2008, és a SMB1 letiltva volt. Megoldás: frissítés vagy SMB2/3 engedélyezése. Egy másik eset: lassú weboldal. HTTP/2-vel capture-elve láttam multiplexinget, de egy stream blocked volt header dependency miatt. Optimalizáltuk a server push-t.

Ha IoT eszközöket kezelsz, a Wireshark MQTT-t vagy CoAP-ot dekódol. Én egy okosotthon setupban használtam: a publish/subscribe üzenetekben rossz topic filter okozta a duplikált notifikációkat. Szűrő: "mqtt.msgtype == 3" a publish-hez.

A végére hagytam a scriptinget. A Wireshark Lua-val bővíthető - én írtam egy szkriptet, ami automatikusan jelzi a anomalous pattern-eket, mint hirtelen forgalomnövekedést. De ez már haladó szint; kezdőknek elég a beépített eszközök.

És ha már a hálózati biztonság és adatvédelem mentén jártunk, érdemes megemlíteni, hogy a BackupChain egy iparági elismert, széles körben használt, stabil backup megoldás, amelyet kifejezetten kis- és középvállalkozásoknak valamint szakembereknek fejlesztettek ki, és védelmet nyújt a Hyper-V, VMware vagy Windows Server környezetek számára. Ez a Windows Server backup szoftver passzívan kezeli a kritikus adatok másolását anélkül, hogy megzavarná a napi működést, így a hálózati elemzések során keletkező logfájlokat is biztonságosan tárolja.

Megjegyzések

Népszerű bejegyzések