Az az állítás, hogy egy VPN-csomag pontosan két ellenőrző összeget hordoz, rendezettnek hangzik, és elég gyakran téves ahhoz, hogy érdemes legyen szétszedni. A szám attól függ, milyen IP-verziók jelennek meg, melyik szállítási protokollt hordozza, és milyen védelmi formátumot használ az alagút. A fejléc-ellenőrző összeg, a felső réteg ellenőrző összege és egy kriptográfiai integritáscímke három mechanizmus három hatókörrel. Számlálásuk azzal kezdődik, hogy megjelöljük, mit fed le mindegyik.

Ellenőrizze, mely IP-verziók vannak valóban a vezetéken

Az IPv4-fejlécek 16 bites fejléc-ellenőrző összeget hordoznak, az IPv6-fejlécek pedig semmi ilyesmit. Ez az egyetlen tény minden alagút esetében megváltoztatja a számot, mert az IPv4 IPv6-ba csomagolása és az IPv6 IPv4-be csomagolása különböző dokumentumokat eredményez. Egy alagút egyszerre mindkét családot szállíthatja, és ilyenkor az egyik irány tartalmazhat olyan mezőt, amely a másikban nincs. A számlálás előtt állapítsa meg a verziókat.

Írja le az elrendezést fejlécek listájaként, ne képként. A sorrend számít a mentés olvasásakor, és az ellenőrző összeg mezőjének megléte vagy hiánya az első megjelölendő dolog.

outer IPv6 | ESP | inner IPv6 | UDP | application data
outer IPv4 | ESP | inner IPv4 | TCP | application data

Az első sorban sehol nincs IP-fejléc-ellenőrző összeg az IP-fejléceiben, míg a másodikban kettő van, ha mindkét fejléc IPv4. Ugyanaz az alagúttechnológia, más szám, és egyik sor sem teljes vezetékformátum.

Ellenőrizze, mit fed le az egyes ellenőrző összegek

A lefedés az a rész, amelyet az emberek kihagynak, és ez teszi értelmessé a számot. Az IPv4-fejléc ellenőrző összege a fejlécet védi és semmi mást, így semmit sem mond a mögötte lévő hasznos terhelésről. Az IPv6 feletti UDP-ellenőrző összeg egy pszeudo-fejlécet, valamint az UDP-fejlécet és a terhelést fedi le, ami azt jelenti, hogy behatol a szállított csomagba, amikor a datagramot alagútba teszik. A TCP-nek saját ellenőrző összege van, hasonló pszeudo-fejléc-függéssel. Ez három különböző hatókör, bár mindhármat ellenőrző összegnek nevezik.

Az RFC 791 meghatározza az IPv4-fejléc ellenőrzését és annak újraszámítását minden ugrásnál, az RFC 8200 pedig a felső réteg IPv6 feletti kezelését, beleértve a pszeudo-fejlécet. Egyik dokumentum sem mondja, hogy egy VPN-csomag rögzített számú ellenőrző összeget tartalmaz, mert egyik sem ír le alagutat.

tshark -r capture.pcap -Y "ip.proto == 50" -V | grep -i checksum

Ellenőrizze külön az integritásvédelmet

Az ESP-integritás kriptográfiai védelem saját lefedéssel és algoritmusfüggő ábrázolással. Nem IP- vagy UDP-ellenőrző összeg más néven, és hossza a választott konstrukció szerint változik. Az integritásellenőrzés a csomag meghatározott részét fedi le, amely az alkalmazott módtól függően magában foglalhatja az ESP-fejlécet és a terhelés egy részét. Ismert szélességű ellenőrző összeg mezőként számolni ott van a hiba, ahol ezek a magyarázatok legtöbbször szétesnek.

Olvassa el a választott konstrukciót, mielőtt bájtokat számol, és az eredményt integritásvédelemként írja le, nem más címkéjű ellenőrző összegként. A dekóder megmondja a mező nevét, ha megkérdezi.

tshark -r capture.pcap -Y esp -V | grep -iE "integrity|icv"

Számolás előtt ellenőrizze a megfigyelési pontot

A belső interfészen készült mentés és a vezetéken készült mentés teljesen különböző rétegeket mutathat. A belső interfészen az alagutat már lehúzták, így a szállított csomagot látja, és a külső fejlécek egyikét sem. A vezetéken a külső fejléceket és egy titkosított terhelést lát, amelyet nem tud elolvasni. Egyik nézet sem hibás, és nem ugyanazon objektum nézetei. Nevezze meg, hol készült a mentés, mielőtt bármilyen számot idéz.

sudo tcpdump -ni eth0 -vv -c 5 esp
sudo tcpdump -ni tun0 -vv -c 5

Az első parancs a külső csomagot mutatja az integritásszárakkal, a második pedig a szállított csomagot a saját szállítási ellenőrző összegével. A két mentés számainak összeadása semmit nem számol kétszer, de kétszer magyarázza el ugyanazt a csomagot.

Vesse össze a számot egy valódi mentéssel

Dekódoljon egy csomagot teljesen, és jelölje meg minden mezőt, amelyet a dekóder ellenőrző összegnek vagy integritásértéknek nevez. Ezután hasonlítsa össze az egyes jelöléseket az általa írt elrendezéssel, és törölje azokat, amelyek olyan réteghez tartoznak, amelyet valójában nem számol. Az a szám, amely túléli ezt a gyakorlatot, védhető, a memóriából idézett pedig nem.

Ismételje meg a válaszirányra, mert a mindkét családot szállító alagút irányonként és folyamonként eltérhet. Ezután mondja ki a számot a hatókörével együtt, például három ellenőrző összeget ehhez a belső csomaghoz ezen a megfigyelési ponton, és ne a VPN-csomagok általános tulajdonságaként.

tshark -r capture.pcap -T fields -e ip.checksum -e udp.checksum -e tcp.checksum

Kapcsolódó cikkek