3. Adatkapcsolati Réteg¶
Az előző fejezetben tárgyalt fizikai réteg kábelekről, csatlakozókról, jelszintekről, duplexitásról, kódolási eljárásokról és más, leginkább elektronikai és mérnöki ismeretek birtokában értelmezhető további részletekről szól. Az egyes hálózati eszközök bitszintű kommunikációja azonban túl „nyers” lenne, mellyel sem a programozók, sem a rendszergazdák sem tudnának mit kezdeni. Ezen az alacsony szinten nem esik szó arról, hogy hogyan lehet meghatározni, hogy melyik adatot melyik számítógépnek küldjük, hogy egy bejövő adat honnan érkezett, vagy éppen hogyan lehet az átviteli közeg hozzáférését szabályozni úgy, hogy az egyidőben küldött adatbitek ne tegyék tönkre egymást. Ezért a fizikai réteg felett, de azzal szoros együttműködésben egy második is működik, melyet adatkapcsolati rétegnek nevezünk.
Az adatkapcsolati rétegnek a TCP/IP modell esetében számos közös pontja van a fizikai réteggel, ezért attól esetenként nehezen választható szét. A már említett Ethernet szabvány nem csak a kábelezést, az azon futó elektromos jelszinteket, csatlakozókat határozza meg, hanem az adatkapcsolati rétegben működő adatcsomagok címzésének és sértetlenségének módszerét is. Tulajdonképpen ez utóbbi az, ami az adatkapcsolati réteg lényege: itt definiálták azt, hogy több számítógép hogyan osztozzon az átviteli közegen, és hogyan címezhetik egymást.
Az adatkapcsolati réteg fejlődése során több kommunikációs mód is napvilágot látott, melyek az egyes fizikai átviteli közegek esetében rendszerint eltértek. Az egyik fő különbséget az eltérő kommunikációs módszerek jelentették. A régi, koaxiális kábelen alapuló hálózat neve Arcnet volt, ami nem csak a kábelezést, hanem a kommunikáció módját is meghatározta. A gyűrű topológia egyik variánsa, az ún. token ring kommunikációja – már csak a gyűrű természete miatt is – ettől nagyban különbözik. Meglehetősen sok további adatátviteli mód létezik, melyek a rájuk jellemző adatátviteli kommunikációs szabályok mentén cserélnek adatokat, a PPP (point to point protocol) pl. két önálló végpont közvetlen összekötésekor használatos. A számtalan megoldás közül mára a helyi hálózatokban az ethernet szabvány terjedt el.
3.1. Kapcsolt hálózatok¶
Az adatkapcsolati rétegben alkalmazott kommunikációs mód egyik meghatározó eleme, hogy annak csak két berendezés közti adatcserét kell megvalósítania, vagy egy nagyobb hálózatban működő számítógépek egyidejűleg is küldenek vagy fogadnak adatokat. Két berendezés esetén nem kell foglalkoznunk a címzés problémájával, ha csak egy adó és egy vevő van jelen, nem kérdéses, hogy melyik gép a küldött adatok címzettje. Ha csak két berendezés közötti kommunikációt kell biztosítani, akkor pont-pont kapcsolatról beszélhetünk, melynek tipikus példái az egyes telephelyek összekötésére szolgáló vezeték nélküli kapcsolatok.

Pont-pont kapcsolat¶
Egy pont-pont kapcsolat esetén tehát nincs szükség speciális címzési módszer használatára ezért az sokkal egyszerűbb lehet. Az átviteli közeget is csak ez a két fél használja, így azon aránylag könnyen meg tudnak osztozni. Ugyanez már nem mondható el akkor, ha a hálózatban további számítógépek is működnek. Ekkor a pont-pont kapcsolat már nem alkalmas módszer a kommunikációra. Egyrészt azért, mert nagyobb mennyiségű adat továbbítása hosszabb időt vehet igénybe, amely egy pont-pont kapcsolat esetén teljesen lefoglalná az átviteli vonalat, ezért annak befejeződéséig más eszközök nem tudnák használni azt. De a pont-pont kapcsolatok nem ismerik a címzést, azaz velük nem tudnánk meghatározni, hogy a hálózat számítógépei közül pontosan kinek küldünk adatokat. Annak érdekében, hogy egy forrás folyamatos adásával ne sajátíthassa ki a teljes csatornát, a gépek ezt az adatfolyamot kisebb részekre tördelve, ún. csomagokban küldik át a célszámítógépnek. Azokat a hálózatokat, amelyek ezt a fajta kisebb részekre tördelést és darabonkénti továbbítást alkalmazzák, csomagkapcsolt hálózatoknak nevezzük.
A csomagkapcsolt hálózatok esetében tehát a továbbítandó adatokat kisebb darabokra, ún. csomagokra vágják, majd ezeket egyesével továbbítják a fizikai rétegen keresztül. Mivel a hálózatban több számítógép is működhet, ezért az egyes csomagokat meg kell címezni. A feladó és a címzett adatai mellett a csomagok rendszerint tartalmaznak valamilyen, a sértetlenség ellenőrzésére szolgáló részt is: a vevő ezzel képes ellenőrizni a beérkező adatcsomag sértetlenségét.

Csomagkapcsolt hálózat. (Video megtekintése)¶
Az ellenőrzést lehetővé tevő adat meghatározására több módszer is ismert, az egyik legismertebb az ún. CRC (Cyclic Redundancy Check). Ez aránylag bonyolult eljárás, melynek értékét az adatcsomag tartalmából számítják ki. A művelet során a feladó sorra veszi az adatcsomag byte-jait, és azokból kiszámítja a CRC értékét, amit a csomag végéhez fűz. A vevő a csomag beérkezésekor szintén elvégzi ezt a számítást, és a kapott eredményt összehasonlítja a csomagban szereplő, a feladó által kiszámított értékkel. Ha ez megegyezik a saját számításának eredményével, a csomag tartalmát sértetlennek tekinti, ellenkező esetben az a kommunikáció szabályainak megfelelően jár el, pl. eldobja azt.
3.2. A protokoll¶
Az eddigiekben már többször esett szó a kommunikáció módjáról, illetve annak szabályairól. A számítógépes hálózatok területén gyakori feladat olyan általános szabályok létrehozása, mellyel két számítógép közötti adatcsere pontosan és hiba nélkül lebonyolítható. Ha az egyes berendezések követik ezeket a szabályokat, azok képesek lesznek kommunikálni egymással akkor is, ha azok más-más gyártó termékei. Egy adott típusú kommunikációra vonatkozó szabályok összességét protokollnak nevezzük. A protokollok egyes fajtáit azok tervezése során az Internet és a vezető informatikai vállalatok közössége véleményezi, és a végleges, elfogadott változatot egy ún. RFC (Request for Comment) dokumentumban rögzítik. Ezek a dokumentumok az Interneten elérhetők, így a szoftverek fejlesztésekor felhasználhatók.
Tegyük fel, hogy egy fejlesztőnek olyan alkalmazást kell készítenie, amelynek elektronikus leveleket kell letöltenie egy postafiókból. Az alkalmazásnak ugyanazt az eljárást kell követnie, mint bármelyik valódi levelező szoftvernek (pl. az Outlooknak vagy a Thunderbirdnek). A szoftver megtervezésekor a fejlesztőnek ismernie kell azt a levelek letöltésére használt protokollt, amelyet a levelező szerverek általánosan ismernek. Több ilyen van, a POP3 (Post Office Protocol) egy egyszerűbb változat. A fejlesztőnek ezért először az IETF weboldalán meg kell keresnie a POP3 leírását tartalmazó dokumentumot, amely minden lehetséges részletre kiterjedően tartalmazza, hogy hogyan lehet megvalósítani az elektronikus levelek letöltését egy ilyen postafiókból. Az alkalmazást ennek ismeretében tudja elkészíteni, s ha pontosan követi az RFC-ben megfogalmazott előírásokat, az bármely szolgáltató levelező szerverével működni fog.
Tennivaló
Az SMTP protokoll bemutatása a gyakorlatban
A protokollok a számítógépes hálózatok rendkívül fontos elemei, a különböző rétegekben számos ilyennel találkozunk majd.
3.3. Az Ethernet¶
A helyi hálózatok kommunikációjára számos megoldást terveztek. A már említett Arcnet és Token ring mellett az 1970-es években megjelenő Ethernet ma már az egyik legelterjedtebb szabvány, amely magában foglalja a fizikai réteg paramétereit és a kommunikáció módját is. Az Ethernet fejlesztésében számos gyártó vett részt, így annak újabb és újabb verziói jelentek meg. Az 1980-as években az amerikai IEEE (Institute of Electrical and Electronics Engineers) szabványosította, ezzel létrehozva az IEEE 802.3-as szabványt. Ennek ismeretében az egyes gyártók eszközei könnyen és biztosan tudtak kommunikálni egymással, így mára az Ethernet a helyi hálózatok terén szinte egyeduralkodóvá vált, kiszorítva a réteg más protokolljait. Az IEEE 802.3-nak számos továbbfejlesztése létezik, melyeket más-más szabványok definiálnak. Az IEEE 802.3u a 100 MBit/sec sebességű, a IEEE 802.3z pedig a Gigabit Ethernet működését definiálja. Az IEEE 802.1Q a virtuális LAN-ok megvalósításának szabályait rögzíti, a különféle vezetéknélküli hálózatokat pedig a IEEE 802.11a 802.11b, 802.11g, 802.11n, 802.11ac és 802.11ax írják le.
Megjegyzés
Az „Ethernet” elnevezés valójában az éter (ether) szóból ered, amelyen a régebbi tudományos elméletek a térnek azt az akkor számukra még ismeretlen részét értették, melyen keresztül a fény és az elektromágneses hullámok terjedni képesek, melyről azt gondolták, hogy az a világűrt kitöltő anyag.
Amikor a gyakorlatban ethernetről beszélünk, abba beleértjük a kábelezést, a csatlakozókat, a hálózati eszközöket és az azon folyó kommunikációs módot is, amely meghatározza a számítógépek közti adatcsere módját és körülményeit is. Tesszük ezt annak ellenére, hogy az OSI modell számára ez két réteget jelent.
Egy Ethernet csomag számos, technikai szempontból fontos részből épül fel. Mivel jelen jegyzetünk nem tér ki a működés megértése szempontjából nem feltétlenül lényeges részletekre, ezért az alábbi ábra szerinti, nem teljes felépítéssel fogunk dolgozni.

Egy Ethernet csomag általános felépítése¶
Az egyes mezők jelentése a következő:
- Preamble:
ennek a mezőnek szigorúan technikai szerepe van, számunkra nincs jelentősége, így a továbbiakban nem is jelöljük.
- Címzett:
a célszámítógép Ethernet címe.
- Feladó:
a küldő számítógép Ethernet címe.
- VLAN ID:
az ún. virtuális helyi hálózat azonosító száma, erről csak később lesz szó.
- Típus/Hossz:
alapvetően ez a mező a csomag tartalmának típusát írja le, adott szám adott típusnak felel meg. Adott esetben ugyanez a mező az adatok hosszát is leírhatja, de ezt csak abban az esetben, ha az meghaladja az alapértelmezett 1500 byte-ot.
- Adat:
ebben a mezőben szerepel az az adat, amelyet a feladó el kíván juttatni a címzett számára. Ez gyakran egy, az előző fejezetben megismert IP csomag.
- CRC:
a már említett Cyclic Redundancy Check. A címzésből, a típusból és adatból egy összetett eljárással képzett szám, melynek célja az átvitt adatok sértetlenségének ellenőrzése. A CRC értékét a feladó számítja ki és írja hozzá a csomaghoz. Ezt a címzett is kiszámítja, és ellenőrzi, hogy az egyezik-e feladó által küldöttel. Eltérés esetén a csomag sérült, így azt nem használják fel.
Egy ethernet hálózatban a számítógépek a továbbítandó adataikat kisebb részekre tördelik, azokat egyesével megcímzik, és ezekben a kisebb csomagokban továbbítják. A folyamat hasonlít ahhoz, mint ha több különböző feladó könyveket úgy továbbítana, hogy azokat lapjaikra szednék szét, majd azokat egyesével, külön-külön megcímzett borítékokba téve továbbítanák. A borítékokat pedig egyetlen postás venné fel és vinné el a megfelelő címre.
3.4. Az ethernet címzési rendszere¶
Az Ethernet hálózat tehát csomagkapcsolt módban működik, így alapkövetelmény, hogy minden egyes csomag meg legyen címezve: tartalmazza a címzettet és a feladót is. De hogyan lehet ezt megvalósítani? Hogyan épüljön fel egy ilyen technikai cím? Milyen címeket használnak ez egyes számítógépek és hálózati berendezések? Ki határozza meg, hogy kinek mi a címe? Az alábbiakban ezt ismerjük meg.
Minden számítógépnek és más, a vezetékes hálózathoz kapcsolódó berendezésnek van egy Ethernet csatlakozója (más néven interfésze vagy portja), és minden ilyenhez tartozik egy cím, amelyet az a hálózati kommunikáció során feladóként vagy címzettként használ. Az ethernet hálózatokban egy ilyen cím 6 byte-ból áll, és a rövidség kedvéért ezeket 16-os számrendszerben szokás leírni. Ebben egy byte két 16-os számrendszer beli számból áll, az egyes byte-okat kettősponttal vagy kötőjellel szokás elválasztani (a Cisco gyártmányú eszközök kétbyte-onként pontokkal teszik olvashatóbbá a címet). Így tehát találkozhatunk a cc:08:fa:87:c3:9a
, a cc-08-fa-87-c3-9a
vagy a cc08.fa87.c39a
formákkal is.
Megjegyzés
A 10-es számrendszerben (amit a mindennapokban használunk) a számokat a 0-9 számjegyekkel írjuk le. Nincs 10-es „számjegy”, a 10-es értéket már „egy tízes” plusz 0 formában írjuk le. Más számrendszerekben ez a határ nem 10-nél, hanem a számrendszer alapjánál van, a kettesben pl. nincs 2-es számjegy, csak 0 és 1. 16-os számrendszerben a 9-et az „A” követi (aminek az értéke 10), azt a „B” (értéke 11) és így tovább. A legnagyobb számjegy ebben a számrendszerben az „F”.
Az Ethernet címeket szokás MAC address-nek (Media Access Control Address), magyarul MAC címnek, vagy hardver címnek is nevezni. Ezeket a címeket a gyártó az ethernet porthoz rendeli, és bár elterjedt nézet, hogy ezek megváltoztathatatlanok, azaz „a hardverbe égetettek”, a legtöbb esetben a gyakorlatban szoftveres úton megváltoztathatók vagy lecserélhetők. Az egyértelműség kedvéért a hardver címtől megkülönböztetik az ún. BIA (Burned in Address) címet, ez valóban a hálózati interfészbe égetett, megváltoztathatatlan cím, amit az egyes rendszerek saját, szoftveres címükként is használnak. Az alábbi ábra erre mutat egy példát egy Cisco gyártmányú berendezésben:
FastEthernet0/1 is down, line protocol is down (disabled)
Hardware is Lance, address is 0060.3e45.5701 (bia 0060.3e45.5701)
Az Ethernet cím módosíthatósága azért is fontos, mert a különféle tűzfalak beállítása során (melyek a hálózati forgalom korlátozására szolgálnak) a rendszermérnökök annak használhatják azt a munkaállomások korlátozására. Mivel ezek megváltoztathatók, valójában nem jelentenek valódi védelmet. Az alábbi példában egy Mikrotik router beállítási felületén, az egyik Ethernet interfész hardver címének beállítása látható.

MAC cseréje egy Mikrotik router webes felületén¶
Egy számítógép Ethernet címét Windows alatt az ipconfig /all paranccsal lehet lekérdezni. Ez alapjában véve számos egyéb paramétert is megjelenít, a hardver cím Physical address sorban olvasható le. (A parancsot a cmd program indításával megjelenő parancssorba kell beírni.)
1C:\>ipconfig /all
2FastEthernet0 Connection:(default port)
3Connection-specific DNS Suffix..:
4Physical Address................: 00-14-22-11-0A-F2
5IPv4 Address....................: 192.168.1.11
6Subnet Mask.....................: 255.255.255.0
7Default Gateway.................: 192.168.1.1
8DHCP Servers....................: 0.0.0.0
9DNS Servers.....................: 1.1.1.1
Annak elkerülésére, hogy egy számítógépes hálózatban azonos Ethernet című gépek működjenek, az Ethernet címek nem véletlenszerűek, hanem egyfajta szabály alapján képzik őket. Az ismétlődések elkerülése érdekében az egyes gyártóknak együtt kell működniük, hogy elkerüljék, hogy az egyikük által kiadott MAC címet más is felhasználja. Mivel egy ilyen nyilvántartás felépítése és karbantartása bonyolult lenne, ezért másik megoldást választottak: a címek első három byte-ját különböző gyártók közt osztották szét, így az a gyártóra jellemző egyedi azonosítóként működik. Az adott gyártó ezért csak a cím második felét határozza meg, és csak ennek egyediségét kell biztosítania.

Az Ethernet cím felépítése¶
A gyártók lekérdezésére számos webhely áll rendelkezésre, ilyen pl. a macvendors.com. Gyakorlásképp kérdezzük le a 00:00:0c:12:3a:cc vagy a 00-14-22-11:0A-F2 Ethernet című berendezések gyártóit!
A MAC címek egyediségének előnye mellett sajnos árnyoldala is van: nagyszerű lehetőséget biztosít az egyes eszközök azonosítására és nyomon követésére. Mivel a legtöbb okostelefon rendelkezik vezeték nélküli Ethernet interfésszel, a tulajdonos személyét könnyű összekapcsolni a telefonnal. Ennek elkerülésére több berendezés véletlenszerű Ethernet címeket használ, így az Ethernet címre alapozott védelmi eljárások szerepe a jövőben tovább csökkenhet. (Tipikus, könnyen ellenőrizhető példát az ún. mobil stickek jelentenek.)
Bizonyos esetekben nagyon hasznos lehet egy olyan speciális cím, amelyet mindenki sajátjának tekint. Ezzel nagyban leegyszerűsíthető olyan csomagok küldése, amely minden számítógépnek szóló üzenetet tartalmaz. Az Ethernet címzési rendszerében erre az ún. broadcast cím használatos. Az ethernet esetén a broadcast cím az ff:ff:ff:ff:ff:ff. A broadcastnak összességében nélkülözhetetlen szerepe van a hálózatok működésében, egyes funkciók ilyen csomagokra alapozva működnek.
3.5. A közeghozzáférés¶
Látjuk tehát, hogy az egyes hálózati elemek csomagokat küldenek és fogadnak, de még nem esett szó arról, hogy mi történjen abban az esetben, ha két berendezés ugyanabban az időpillanatban szeretné használni a hálózatot adatok küldésére. Amennyiben erre nem lenne szabály, az adatvesztés elkerülhetetlen lenne, mert két állomás által átfedésben levő adatküldése mindkét csomagot olvashatatlanná tenné. (Gondoljunk vissza a fizikai réteg jelszintjeire: ha ketten adnának egyszerre, az elektromos jelek „összeadódnának”, ami mindkét csomag sérülésével járna.) Ezért minden hálózat esetén alapvető kérdés a közeghozzáférés szabályozása, melyre különböző megoldásokat terveztek. Bár ennek az üzemeltetés szempontjából csak kevés gyakorlati vonatkozása van, mégis érdemes két elterjedt közeghozzáférési módszert áttekinteni.
A CSMA/CD (Carrier Sense Multiple Access with Collision Detection) megoldást használó megoldások esetén a hálózati interfész érzékelni tudja, hogy a csatorna éppen foglalt-e, emellett és képes észlelni azt is, ha azon ütközés történt (tulajdonképpen ez adja az eljárás nevét). Egy csomag küldésének lépései egy ilyen rendszerben az alábbiak:
A hálózati interfész az adás megkezdése előtt ellenőrzi, hogy a kábelen van-e folyamatban levő forgalom. Ha igen, az foglalt, ezért vár annak befejezésére.
Amikor az átviteli közeg felszabadul, az interfész megkezdi a csomag küldését.
Amennyiben egy másik eszköz is a közeg felszabadulására vár, az is megkezdi az adást, melynek eredményeként ütközés jön létre. Ekkor tehát mindkét csomag megsérül, így az azokban levő adatok nem kerülnek továbbításra (a CRC ellenőrzésen a sérült csomagok egyébként is elbuknának).
Az ütközés tényét mindkét adó érzékeli (ez a Collision Detection), így az adást abbahagyják, és véletlenszerű idő eltelte után újra megkísérlik a csomag küldését. A véletlenszerű várakozásra azért van szükség, mert azonos hosszúságú szünet esetén mindkét interfész újra egyszerre kezdené meg az adást, ami újabb ütközéshez vezetne – és ez a folyamat újra és újra ismétlődne anélkül, hogy bármelyikük is képes lenne az adásra.
A CSMA/CD a mai eszközök esetében már nem játszik igazán fontos szerepet azért, mert a leginkább elterjedt csillag topológiába szervezett számítógépek csak a központi kapcsoló berendezéssel, a switchcsel kommunikálnak. Tekintettel arra, hogy a kapcsolat kétirányú, azaz az adás és a vétel egyidőben is lehetséges, egy ilyen típusú hálózat normál állapotában nem történnek ütközések.
A CSMA/CD nem használható olyan esetekben, amikor az ütközés ténye nem érzékelhető; ennek tipikus példái a vezetéknélküli hálózatok. Esetükben egy másik módszert, a CSMA/CA-t (Carrier Sense Multiple Access with Collision Avoidance) használják. Ezek a hálózatok nem teszik lehetővé, hogy a küldést bármelyik pillanatban el lehessen indítani, erre ún. időablakok állnak rendelkezésre. Egy küldés csak az időablak elején kezdhető meg, és csak annak hosszáig tarthat. A vevő minden csomag célba érkezését követően egy visszajelzést (nyugtát) küld a feladónak. Amennyiben ez nem érkezik meg, az az elküldött csomagot elveszettnek tekinti, és újból megkísérli elküldését.
3.6. Az adatkapcsolati réteg hálózati eszközei¶
Egy hálózat nem csak az összekötni kívánt munkaállomásokból, szerverekből és nyomtatókból áll, hanem az kapcsolatot biztosító hálózati eszközökből is. Az OSI modell második rétegében négy eszköztípust szokás alkalmazni, a repeatereket (jelismétlőket), hubokat, switcheket és a bridge-eket. Ezek mindegyike a második rétegben működik, ezért ezeket gyakran Layer 2-es eszközöknek is nevezik. Lássuk, mik ezek, és hogyan működnek!
3.6.1. A jelismétlő¶
A jelismétlőket, más néven repeatereket inkább csak a teljesség kedvéért említjük meg. Ezek a legegyszerűbb (értsd: legprimitívebb) eszközök, amelyekkel a hálózat adatainak továbbítása elvégezhető. A jelismétlők a többi, fejlettebb eszközzel ellentétben nem digitális, hanem analóg eszközök, a továbbítandó csomagokat nem építik újra, csupán az elektromos jelek analóg erősítését végzik. Ezért a berendezés nem csak az eredeti jeleket, hanem az elektromos zavarokat is felerősíti, így a továbbítandó elektromos jel jelentős torzulást szenvedhet. A jelerősítőket ezért egymást követően csak korlátozott számban szokás alkalmazni, mert az eredeti elektromos jel többszörös analóg erősítése után már valószínűleg annyira torz lesz, hogy azt a célállomás nem tudja értelmezni. A repeatereket a legtöbbször abban az esetben alkalmazzák, ha az adatkábeleket nagyobb távolságra kell kiépíteni, és a túl hosszú kábelszakaszokon az elektromos jelek erősítés nélkül nem juthatnának el a célhoz. A nagy távolságokat áthidalni képes optikai kábelek alkalmazásával a repeaterek jelentősége erősen visszaesett.

A repeater feladata a beérkező analóg jelek erősítése¶
3.6.2. Az ethernet hub¶
Az Ethernet hálózatokat jellemzően csillag topológiában építik ki, melynek központi eleme egy hub vagy switch. Ezek a berendezések bonyolítják le a hálózat egyes gépei közti adatforgalmat úgy, hogy azokat egyesével a megfelelő irányba továbbítják. Mivel ezek a berendezések az OSI modell második rétegében működnek, ezek is layer 2-es eszközök.

Egy Ethernet hub¶
A család legegyszerűbb digitális berendezése a hub, mely képes a csomagok továbbítására, de nem képes megállapítani, hogy annak címzettjét melyik portjához kapcsolták. Ezért a hub a csomagot a bejövő irány kivételével az összes portra továbbítja. Ez a sajnos felesleges adatforgalmat generál, hiszen a hub megsokszorozza a csomagokat azért, hogy azt minden számítógép is megkapja. A gépek, mint lehetséges címzettek érzékelik a csomag érkezését, ezért annak fejlécéből kiolvassák a címzett MAC address-ét, és összehasonlítják a saját címükkel. A csomagot csak az a gép dolgozza fel, amelynek azt küldték, a többi gép az összehasonlítást követően a nem folytatja annak feldolgozását.
Ez a működési mód infobiztonsági szempontból sem előnyös: egy tetszőleges portra kapcsolt számítógép, melynek ethernet interfészét ún. promiscuous módba kapcsolják, képes lehet a teljes hálózati forgalom lehallgatására (nem csak a kéréseket hanem a rájuk küldött válaszokat is). Annak ellenére, hogy a hubok kifejezetten olcsó eszközök, alkalmazásuk a magas hálózati forgalom és a szórt csomagok miatt nem jellemző, helyüket mára a switchek vették át.
Megjegyzés
A promiscuous mód teszi lehetővé az Ethernet interfész számára, hogy a hálózati interfészen megjelenő összes csomagot sajátjának tekintse akkor is, ha azt nem neki küldték. Ez az alapja a hálózati elemző szoftverek működésének, ezek segítik üzemeltetők számára a hálózati forgalom analizálását, esetleg a támadások észlelését és elemzését. Az összes átfolyó csomag begyűjtésének és elemzésének lehetősége azonban egy támadó számára igazi csemege: információforrásként szolgál a hálózati forgalom elemzésében és felderítésében, támadható pontjainak feltárásában.
3.6.3. Az ethernet switch¶
Mivel a hubok alkalmazásának számos hátránya van, azokat már nem igazán alkalmazzák, helyüket egy másik, „okos” eszközcsalád, a switchek vették át. Ezek szintén csillag topológiába szervezett hálózat számítógépeinek összekötésére szolgálnak, és valójában olyan célszámítógépek, melyeknek operációs rendszerük van – ennek feladata a hálózati forgalom lebonyolítása. Egy switch sok számítógép összekapcsolását is lehetővé teszi, vállalati környezetben nem ritkák a 24 vagy 48 portos berendezések sem.

Egy vállalati környezetbe tervezett Cisco Catalyst 2960 switch (Forrás: https://cisco.com)¶
Ez a legnagyobb különbség egy hub és egy switch között az, hogy míg az előbbi egy analóg eszköz, a switch valójában egy számítógép. Egy switch szoftverének témánk szempontjából egyik legfontosabb eleme, hogy képes nyilvántartani, hogy melyik MAC című számítógépet melyik portjához kapcsolták. Ezt a nyilvántartást a switch egy ún. CAM táblázatban (Content Addressable Memory table) tárolja, és minden csomag továbbításakor felhasználja a cél port kiválasztásához.

A switch nyilvántartja a hozzá kapcsolt számítógépek MAC címét.¶
Amennyiben egy adatcsomagot a switchnek továbbítania kell, ellenőrzi, hogy annak címzettje szerepel-e a CAM táblázatában. Ha igen, akkor a csomagot csak felé, a táblázatban szereplő portra küldi tovább. Ez a működés a hubhoz képest mód sokkal alacsonyabb hálózati forgalmat eredményez (hiszen az minden csomagot minden lehetséges irányba továbbít). A switch használata a emellett a már látott lehallgatást is lehetetlenné teszi: egy támadó hiába indítja el a hálózatot monitorozó szoftverét, a nem neki szóló csomagok nem jelennek meg a hálózati interfészén.
A switch CAM táblájának tartalma időről időre változhat. A munkaállomásokat áthelyezhetik, szükség esetén a rendszergazdák is megcserélhetnek kábeleket, a mobileszközök vezeték nélküli kapcsolatai pedig eleve nem állandók. A változások követése érdekében a switchnek folyamatosan karban kell tartania a CAM tábláját. Ennek során egy adott időn belül (pl. az elmúlt 5 percben) nem kommunikáló gépek bejegyzéseit törli, valamint minden egyes továbbítandó csomag esetén ellenőrzi, hogy az a nyilvántartásának megfelelő porton érkezett-e be. Amennyiben eltérést tapasztal, úgy a CAM tábla tartalmát az új helyzetnek megfelelően frissíti.
Ki és hogyan adja meg a CAM táblában szereplő MAC címeket? Vajon a hálózat adminisztrátoroknak kell azt minden egyes számítógép telepítése után begépelni? Ez felettébb kellemetlen feladat lenne, és a gyakorlatban, ha elő is fordul ilyen típusú beállítás, az nem általános. A CAM tábla kitöltését a legtöbb esetben a switch „tanulási mechanizmusa” végzi úgy, hogy minden egyes bejövő csomag esetén ellenőrzi, hogy a feladó címe a táblázat megfelelő portjához van-e már rendelve. Ha a táblázat adott sora üres volt, tehát a feladót korábban még „nem látta”, akkor a táblázat megfelelő sorába bejegyzi a csomag feladójának címét, így a jövőben már tudni fogja, hogy az melyik portjához csatlakozik. A switch CAM táblájának aktualizálásához tehát a kapcsolódó számítógépnek elég egyszer „megszólalnia”, azaz egyetlen ethernet csomagot küldenie.
A CAM táblával kapcsolatban felmerül még egy kérdés: minden porthoz csak egy MAC címet rendelünk hozzá, vagy akár többet is? Egy olyan hálózatban, amely csak egyetlen switchet tartalmaz, egy porthoz egy számítógép tartozik majd, De nagyobb hálózatok esetén az egyes portokhoz nem csak számítógépek, hanem további switchek is kapcsolódhatnak (ahogyan azt a fa topológiánál már láttuk). Egy ilyen struktúrában egy porton keresztül már több számítógép kommunikál, így a táblázatban több MAC címet kell hozzárendelni. Egy ilyen hálózatra mutat példát a következő ábra.

A CAM tábla portonként több bejegyzést is tartalmazhat¶
Mivel itt az alsó switch 6-os portjához egy másik switchet kapcsoltunk, mely további két számítógépet szolgál ki, ezért az alsó switch minkét gép forgalmát ezen a porton keresztül kell, hogy lebonyolítsa. Ez csak úgy működhet, ha mindkét gép MAC címe a táblázat 6-os sorszámú portjához tartozik, hiszen mindkét gépet ezen keresztül lehet elérni. Ezért a CAM táblájában a 6-os porthoz két bejegyzés, a másik két gép ethernet címe tartozik.
Nagy számítógéphálózatok esetében a switchek CAM táblái óriási méretűek lehetnek, a Cisco eszközeiben pl. százezres nagyságrendű táblák is felépülhetnek. Egy ilyen switchnek gyors hardverrel kell rendelkeznie, hogy a szükséges címeket ilyen nagyméretű táblázatból is a lehető legrövidebb idő alatt ki tudja keresni. Emiatt a SOHO eszközök olcsók, de azok kisteljesítményű hardverei nem alkalmasak nagyobb hálózatok kiszolgálására.
Mi történjen egy olyan csomaggal, amelynek a címzettje ismeretlen, azaz nem szerepel a switch CAM táblájában? Ekkor, egyéb információ híján a switch nem tehet mást, mint hubként működik, azaz a bejövő csomagot minden irányba továbbítani fogja, feltételezve, hogy a címzett valamelyik portján már elérhető, és a címe azért nem szerepel a CAM táblában, mert még egyetlen csomagot sem küldött. De minden irányba?! Azokra a portokra is, amelyek már tartalmazzák valamelyik gép ethernet címét? Igen, a fenti példa alapján ez szükségszerű, hiszen bármelyik porthoz további switchek tartozhatnak, és lehetséges, hogy a csomagot valamelyik másik switch juttatja célba.
Egy vállalati switch esetében meghatározhatjuk, hogy egy adott portján mely MAC című számítógép(ek) forgalmát engedélyezzük. Ebben az esetben a switch ellenőrzi a bejövő csomagok feladóját, és csak abban az esetben továbbítja azt, ha annak forrás címe megegyezik az elvárt címekkel, ellenkező esetben eldobja azt (és esetleg még riasztást is küld.) Ez a fajta korlátozás különösen hasznos, ha nyilvánosan elérhető csatlakozók forgalmát szeretnénk korlátozni, úgy, ahogyan az az NKE számítógép laborjaiban is működik. Ez azonban nem jelent komoly védelmet, mert aránylag könnyen átjátszható.
Megjegyzés
A hálózati berendezések különböző teljesítményű hardveren eltérő szolgáltatási kört nyújtanak, és az áruk is ennek megfelelő. Már láttuk, hogy nagyméretű CAM táblákat egy olcsó, SOHO eszköz nem képes kezelni. Ezek az olcsó eszközök azonban azért sem alkalmasak üzleti felhasználásra, mert nem menedzselhetők – azaz egy alapbeállítás szerint végzik a feladatukat, nem lehet azt testre szabni, módosítani vagy az állapotukat lekérdezni. Nagyobb méretű számítógépes hálózatok kiszolgálására a sokszoros árkülönbség ellenére is menedzselhető, nagyobb teljesítményű eszközöket kell beszerezni.
Tennivaló
MAC szűrés kijátszása
PT CAM tábla feltöltésének és működésének bemutatása
szimuláció PT demo a csomagok küldéséről.
Szimuláció a többszörös mac tárolásról egy porthoz
szimuláció az IPTRAF-ra, Wiresharkra pop3 levél letöltésén keresztül.
3.6.4. A híd¶
A bridge (híd) egy aránylag ritkán alkalmazott hálózati eszköz, amely szintén az OSI modell második rétegében működik. Bridge-re akkor van szükség, ha két, egymástól eltérő protokollt használó hálózatot kell összekapcsolni, pl. egy ethernet és egy token ringet alkalmazó szegmenst. Az ilyen esetekben a kommunikáció biztosítása számos problémát vet fel. A bridge-nek minden bejövő adatcsomagot át kell alakítania a másik hálózat által használt típusúra úgy, hogy az esetleg eltérő csomag méretek miatt még az sem garantált, hogy egy csomagból egyetlen másikat kell készítenie. Az eltérő címzési módok mellett kihívást jelenthet az összekapcsolni kívánt hálózatok eltérő sebessége is, így a bridge-ek a switchekhez hasonlóan operációs rendszerrel rendelkező nagy sebességű célszámítógépek.
A bridge egy speciális formája a vezeték nélküli hálózatokban használt access point (röviden AP), ami lehetővé teszi a vezeték nélküli kliensek számára, hogy egy vezetékes hálózathoz csatlakozzanak. A két hálózat eltérő közegen és eltérő közeghozzáféréssel működik, ezért egy AP-nak egyfajta hídként kell működnie a két hálózat közt: mindkét irányba továbbítania kell a hozzá érkező csomagokat. (Egy AP ugyanakkor több, mint egy egyszerű híd: valójában nem két hálózati szegmenst kapcsol össze, és számos egyéb funkciót, pl. azonosítási funkciót is ellát.) Az alábbi ábrán egy Unifi gyártmányú AP látható (Forrás: https://ui.com).

Egy UniFi AP¶
A vezetéknélküli hálózatok esetében nagy eltérés van a SOHO és a vállalati eszközök között. A legtöbb internet szolgáltató biztosít egy hálózati végberendezést az otthoni felhasználók számára, amelyet routernek neveznek, de ezek valójában összetett, többfunkciós eszközök, amelyek három összetevőt is magukban foglalnak.

Egy SOHO router több funkciót is ellát (Forrás: https://tp-link.com)¶
Az ábrán látható home berendezés kék színű portján az internethez kapcsolódik. Ez a port a router funkcióhoz kapcsolódik, melyről majd a Hálózati réteg c. fejezetben tárgyalunk.
A sárga portok egy beépített switchhez tartoznak, ezekhez értelemszerűen otthoni vezetékes eszközöket, pl. okostévét, számítógépet kapcsolhatunk.
Az antennával rendelkező változatok (mint ez is), egy AP-t is tartalmaznak, mely a WiFi-képes eszközök (notebookok, tabletek, mobiltelefonok stb.) kapcsolódását teszik lehetővé.
A vállalati hálózatok kialakításakor nem szokás ilyen típusú, kombinált berendezéseket használni, az egyes funkciókat önálló berendezések látják el. A switch szerepe az eddigiek alapján már minden bizonnyal érthető az olvasó számára, kérdés lehet azonban, hogy miért kell önálló AP-t használni. A válasz a lefedettségben van: míg egy SOHO eszköz jó eséllyel képes egy lakás vagy kis iroda minden pontján elfogadható sebességű kapcsolatot biztosítani, nagyobb alapterületű hálózatok esetében egyetlen berendezéssel ez már nem oldható meg. Nagyobb hálózatok esetében több vezetéknélküli végpontot kell telepíteni (hasonlóan a mobiltelefon hálózat adótornyaihoz) és biztosítani kell a roamingot is, azaz a mozgó végberendezéseknek anélkül kell átkapcsolódni egy másik állomásra, hogy az a kommunikáció során problémát okozna. Az egymással összekapcsolt AP-k tehát egy nagyterületű hálózatot alkotnak, és a működésükhöz szükséges paramétereket, pl. a felhasználók listáját egy központi berendezéstől (az ún. kontrollertől) kapják. A kontrolleren keresztül a teljes vezetéknélküli hálózat működése szabályozható, és változás esetén nem szükséges minden egyes berendezésben külön-külön módosításokat végezni. (A rendszergazdák biztosan nem lennének boldogok, ha egy dolgozó távozásakor minden egyes AP-t végig kellene járniuk, és egyesével törölni belőlük a felhasználókat.)

Vállalati WiFi hálózat kialakítása¶
Tennivaló
Ethernet forgalom monitorozása: WireShark, tcpdump
3.7. A VLAN-ok¶
Egy intézményi számítógépes hálózat működése során nem lenne szerencsés, ha a hálózat összes számítógépe képes lenne kommunikálni egymással. Jó lenne, ha egy vendéglátóipari helyen a vendégek számára elérhető WiFi hálózatról nem lehetne elérni az ott levő, a dolgozók számítógépeit, nyomtatókat, esetleg szervereket. Egy könyvtár nyilvános, olvasótermi gépeinek nem kellene elérni a gazdasági osztály számítógépeit. Egy egyetem esetén a tantermeket, nyilvános hálózati végpontokat és a tanszékeket is el kellene szeparálni a gazdasági egységek és a vezetők számítógépeitől. Ezt az elválasztást legegyszerűbben úgy lehet megoldani, hogy az egyes szervezeti egységek számára önálló switcheket állítunk be, és az azok közötti adatforgalmat lehetetlenné tesszük.
A megoldás egyszerű módszere lehet, ha az egyes részterületek számítógépeit önálló, a másokkal össze nem kötött switchhez kapcsoljuk, de ez hosszabb távon gazdaságtalan és nem is célravezető módszer lenne. Az alábbi ábrán két hálózat, az office
és a students
forgalmát két különálló switch beállításával oldották meg:

Az office (bal oldalon) és a students (jobb oldalon) hálózatok szétválasztása¶
Az ábrán szereplő struktúra a gyakorlatban nehezen lenne alkalmazható, mivel az egyes egységek számítógépei általában egymástól távol helyezkednek el, és nem reális elvárás, hogy egy-egy új számítógép beállításakor a megfelelő switchhez esetleg újabb kábelszakaszt kelljen kiépíteni. A vállalati eszközök esetén nincs is szükség erre, mert a forgalom már az OSI második rétegében is szétválasztható – ennek elterjedt módja az ún. VLAN-ok (Virtual Local Area Network, azaz virtuális helyi hálózatok) beállítása. A modern, menedzselhető hálózati eszközök esetében az egyes gépek szeparációja így távoli hozzáféréssel, szoftveres úton is beállítható, így azok forgalma teljes egészében elválasztható egymástól.
Milyen VLAN-okat érdemes létrehozni pl. egy egyetemi környezetben? Első megfontolás után elkülöníthetjük egymástól a nyilvános, a hallgatók által használt tantermi, valamint publikus Wifi hálózatok gépeit a hivatali gépektől (tanulmányi osztály, gazdasági hivatalok, rektor) azért, hogy köztük hálózati adatok forgalmazását lehetetlenné tegyük. Példánk hálózatát az egyszerűség kedvéért két VLAN-ra osztjuk, melyeknek pl. a students
és az office
nevet adjuk. (A teljességhez hozzátartozik, hogy a VLAN-okat az eszközök valójában egy belső azonosító számmal írják le, a nevet csak a könnyebb olvashatóság kedvéért alkalmazzák.) A students
VLAN azonosítója példánkban 10
, az office
-é pedig 20
lesz.
Azt, hogy melyik gép melyik VLAN-ba tartozik, nem annak operációs rendszere fogja eldönteni, több kliens operációs rendszerben ez nem is állítható be. A VLAN-ok hozzárendelését a switch portjainak beállításával lehet elvégezni, így azt, hogy egy gép melyik VLAN-ba kerül, pusztán az dönti el, hogy a switch melyik portjához kapcsolták. Ezen a ponton érdemes kiemelni a fizikai biztonság fontosságát: amennyiben a switchhez egy támadó képes hozzáférni, a saját számítógépét egyszerűen csatlakoztathatja tetszőleges, a megtámadni kívánt VLAN-hoz rendelt porthoz. Ezért a hálózati eszközöket mindig zárható szekrényben vagy helyiségben kell elhelyezni.

Példa egy VLAN kialakítására¶
A fenti példában a switch 2-es, 3-as és 14-es, piros színnel jelölt portjai az office
VLAN-ban vannak. Az ezekhez kapcsolt gépek és egyéb hálózati eszközök képesek kommunikálni egymással, de a switch semmilyen forgalmat nem továbbít a másik, office
nevű, szürke színnel ábrázolt VLAN portokba. Ennek eredményeként a piros, 20-as VLANban levő hivatali gépeket a switch elzárja a tantermi gépektől. Mivel a hálózat nyomtatója az office
VLAN-hoz kapcsolódik, ezért azt csak az irodai gépek érik el, a tantermiek számára az láthatatlan.
Az ábra fehér, jelenleg nem használt portjai az 1-es, ún. alapértelmezett VLAN-ba tartoznak. Egy VLAN-képes switch esetében minden portnak valamelyik VLAN-ba kell tartoznia, ezért alapértelmezésben ez mindegyikük esetén az 1-es. Alapbeállításban így minden, a switchhez kapcsolt eszköz korlátozás nélkül elérheti a többit, viszont az ábrán szereplő helyzetben az fehér, 1-es VLAN-ba tartozó portok önálló, a többektől elválasztott portként működnek.
A VLAN információkat a switch egy táblázatban tárolja az alábbiak szerint:
Port |
VLAN ID |
VLAN |
Gép |
---|---|---|---|
Port 1 |
VLAN 1 |
Default |
- |
Port 2 |
VLAN 20 |
Office |
Office-1 |
Port 3 |
VLAN 20 |
Office |
Office printer |
Port 4 |
VLAN 1 |
Default |
- |
Port 5 |
VLAN 1 |
Default |
- |
Port 6 |
VLAN 10 |
Students |
Student-1 |
Port 7 |
VLAN 1 |
Default |
- |
Port 8 |
VLAN 1 |
Default |
- |
Port 9 |
VLAN 10 |
Students |
Student-2 |
Port 10 |
VLAN 10 |
Students |
Student-3 |
Port 11 |
VLAN 10 |
Students |
Student-4 |
Port 12 |
VLAN 10 |
Students |
Student-5 |
Port 13 |
VLAN 10 |
Students |
Student-6 |
Port 14 |
VLAN 20 |
Office |
Office-2 |
Port 15 |
VLAN 10 |
Students |
Student-7 |
Port 16 |
VLAN 10 |
Students |
Student-8 |
Első pillantásra a fenti táblázat elegendő lehetne ahhoz, hogy a VLAN szeparációt a switch elvégezhesse – úgy tűnhet, elég csupán ellenőrizni a beérkező csomag portjának VLAN ID-jét, és a továbbítást csak olyan azonos VLAN ID-vel jelölt portok esetében elvégezni. A csomagot a switch nem fogja továbbítani eltérő VLAN-ba akkor sem, ha a CAM tábla alapján ismeri annak helyét.
Ez a módszer azonban csak akkor működőképes, ha csupán egyetlen switchünk van. Nagyobb hálózatok esetén viszont, amikor egy ethernet csomagnak további switcheken keresztülhaladva éri el a célját, a forrás port VLAN ID-jét a csomagnak tartalkmaznia kell – enélkül a célhoz vezető további switchek már nem tudnák ellenőrizni, hogy az adott csomag melyik VLAN-hoz tartozik. Ezért a VLAN-ok esetén az ethernet csomag egy újabb mezővel, a VLAN ID-vel bővül ki:

VLAN alkalmazásakor az Ethernet csomag kiegészül a VLAN azonosítójával¶
A csomagok így switchről switchre haladva folyamatosan ellenőrizhetők, és a VLAN információk alapján egymástól elválaszthatók. Amennyiben egy ethernet csomag nem tartalmaz VLAN ID-t, úgy a switch azt automatikusan az alapértelmezett, 1-es VLAN-ba tartozónak tekinti.
Az eddigiek alapján tehát VLAN-képes switcheket alkalmazva az egyes hálózatok forgalma szétválasztható, ami nagyban növeli a hálózatunk biztonságát. Ugyanakkor vannak helyzetek, melyek megoldása problémás lehet, ilyen pl. a közös nyomtatók használata. Mi történjen abban az esetben, ha az office
és a student
VLAN-ok gépei számára egyaránt engedélyezni szeretnénk a nyomtatást? Hogyan kössünk össze két switchet ethernet portokon keresztül úgy, hogy azokon bármelyik VLAN forgalma továbbítható legyen? Az ilyen, és ezekhez hasonló feladatok megoldásához lehetővé kell tennünk, hogy egyes portok bármelyik VLAN forgalmát továbbítsák – ezeket Trunk portnak (ejtsd: trönk port) nevezzük.
A fenti példában, amennyiben a switch 3-as portját bármelyik VLAN-ba tartozó számítógépnek el kell érnie, azt trunk portként kell beállítani. Az ide irányuló forgalmat a switch nem korlátozza akkor sem, ha egy adott csomag valamelyik VLAN-hoz van rendelve. Példánkban ezért a VLAN táblázat az alábbiak szerint kell módosítani:
Port |
VLAN |
Gép |
---|---|---|
Port 3 |
Trunk |
Office |
3.8. Gyakorlatok¶
Az alábbi kis hálózat két számítógépből és egy switchből áll. Az egyes számítógépek MAC címei: 00:01:96:ae:92:89
(PC0) és 00:01:c9:c4:20:53
(PC1). Amikor PC0 a hálózaton keresztül kommunikál PC1-gyel, a kéréseket és válaszokat a switch továbbítja a megfelelő irányba.

A switch a forgalom elindulása után kitölti a MAC address táblázatát, amelyet a (Cisco gyártmányú) switch adminisztrációs felületén a show mac-address-table paranccsal lehet megjeleníteni. Ez tartalmazza a megtanult ethernet címeket és azokat a portokat, amelyhez a gépek csatlakoztatva vannak. Egy ilyen parancs eredménye látható az alábbi ábrán.
Switch>show mac-address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
1 0001.96ae.9289 DYNAMIC Fa0/1
1 0001.c9c4.2053 DYNAMIC Fa0/2
Feladatok:
Mi az géped ethernet címe/címei? Kik gyártották ezeket az interfészeket?
Írd fel a fejezet két switchet tartalmazó ábráján szereplő felső switch CAM tábláját!
3.9. Kibervédelmi szempontok¶
Az adatkapcsolati réteg kommunikációja legkönnyebben a kábel megszakításával és a megfelelő eszköz közbeiktatásával hallgathatók le. Ilyen célú eszközök a már említett www.hak5.org oldalon legálisan szerezhetők be.
A vezetéknélküli kapcsolatok támadása az alkalmazandó hardver szempontjából még egyszerűbbek. Egyes WiFi illesztők magasabb funkcionalitással rendelkeznek, ezért kifejezetten kedveltek a támadók körében. Mivel ezek rendszerint antennával rendelkező külső eszközök, alkalmazásuk feltűnhet, ilyenkor érdemes lehet mérlegelni annak ellenőrzését.
Tennivaló
WiFi támadás demonstrálása
Az Ethernet hálózat csomagszintű monitorozására számos szoftver áll rendelkezésre. A Unixok parancssori alkalmazásai közt a tcpdump és a iptraf a legnépszerűbbek, a több operációs rendszer grafikus környezetében is elérhető Wireshark szintén ezt a célt szolgálja. Ezek a szoftverek hasznos eszközként szolgálnak a rendszer üzemeltetői számára, értelemszerűen rossz célokra is felhasználhatók.
Tennivaló
Wireshark és tcpdump demo, jelszó lehallgatása.
Általános szakmai vélemény, hogy a hálózatok elleni támadások közül az adatkapcsolati rétegre irányulók védhetők ki a legnehezebben. Több olyan kész szoftver érhető el szabadon, amely ezt a réteget képes támadni.
3.10. A CAM támadás¶
Ebben a fejezetben láttuk, hogy a switchek memóriájában levő CAM tábla az egyes portokhoz kapcsolt eszközök hardver címeit tárolja. A CAM tábla túlterhelés (CAM table overflow) egy olyan második rétegbeli támadási technika, amely során a switch CAM tábláját olyan sok hamis MAC-címmel próbálják feltölteni, hogy az megteljen. Ezt úgy érik el, hogy a switchnek különböző, hamis ethernet című csomagok ezreit küldik, amit az a CAM táblában rögzíteni fog. A tábla betelését követően a switch átvált egy ún. fail-open módba, így működése a hub-hoz lesz hasonló: mivel nem képes meghatározni, hogy a címzett MAC address melyik portján helyezkedik el, minden bejövő adatcsomagot minden portjára továbbít. Ebben az állapotában egy támadó (pl. a Wireshark használatával) képes lehallgatni minden olyan adatcsomagot, amely normál működés közben el sem jutott volna el hozzá. A CAM tábla túlterheléses támadás mellett számos hasonló funkciót kínál szabadon letölthető hyenae vagy a macof. Utóbbi demonstrálása valamivel egyszerűbb, mivel a támadó programok gyűjteményével felvértezett Linux variánsok többsége (Kali Linux, vagy Backbox Linux) azt eleve tartalmazza.

A CAM támadás környezete¶
A CAM támads demonstrácóját egy Mikrotik routerrel és egy macof-ot futtató támadó számítógéppel végezzük. A router parancssorában a /interface bridge host print paranccsal lekérdezzük a switch CAM tábláját, majd a Backbox Linuxon elindítjuk a macof programot. (Megfelelő paraméterekkel finomíthatjuk a működését, de a demonstrációban enélkül is a kívánt hatást érjük el.)
A router CAM táblája a támadás előtt csak valós ethernet címeket tartalmaz:
[admin@MikroTik] > /interface bridge host print
Flags: X - disabled, I - invalid, D - dynamic, L - local, E - external
# MAC-ADDRESS VID ON-INTERFACE BRIDGE AGE
0 DL 08:00:27:D7:8A:3A ether2 bridge1
A támadás végrehajtása tehát a Backbox Linuxba már telepített macof paranccsal történik, ebből néhányat kiadva a switch CAM táblájába hamis bejegyzések kerülnek:
root@backbox:/home/backbox# macof -n 5
root@backbox:/home/backbox# macof -n 5
root@backbox:/home/backbox# macof -n 5
root@backbox:/home/backbox# macof -n 5
root@backbox:/home/backbox# macof -n 5
[admin@MikroTik] > /interface bridge host print
Flags: X - disabled, I - invalid, D - dynamic, L - local, E - external
# MAC-ADDRESS VID ON-INTERFACE BRIDGE AGE
0 DL 08:00:27:D7:8A:3A ether2 bridge1
1 D 3E:E6:FE:7D:51:46 ether2 bridge1 3s
2 D 6A:E2:7F:2E:24:33 ether2 bridge1 1s
3 D 6A:FC:82:4A:C1:4B ether2 bridge1 19s
4 D C4:EF:D1:11:81:CD ether2 bridge1 17s
5 D E4:8D:09:76:A6:94 ether2 bridge1 2s
Ha a macof parancsot paraméter nélkül adjuk ki, az a hamis ethernet csomagokat teljes sebességgel generálva pillanatok alatt megtelíti a switch CAM tábláját, ami ezt követően failover módba lép.
A CAM tábla elleni támadást csak nagyobb tudású, menedzselhető switchekkel lehet kivédeni. Ennek módja viszonylag egyszerű: a megfelelő beállítással korlátozzuk az egy porton rögzíthető MAC címek számát. (Ez egy Cisco switch esetében rutinszerűen csak később tudjuk alkalmazni, most csak a megértés és a demonstráció a célunk.) Az alábbi ábrán látható hálózatban az fa0/1
interfészhez rögzíthető MAC címek száma csak 1 lehet, megadjuk, hogy ez csakis a 000A.4128.5543
lehet, és a portot lekapcsoljuk, ha azon ettől eltérő című gép akar csatlakozni. A demonstráció során látjuk, hogy csak a bal oldali PC képes pingelni a switch 192.168.1.2
-es IP címét. Amennyiben a switch fa0/1
portjához a jobboldali gépet kapcsoljuk, annak eltérő ethernet címe miatt a port azonnal lekapcsol.

Port korlátozása egy Cisco switchben¶
A switch konfigurációja:
ena
conf term
hostname S1
int vlan 1
ip address 192.168.1.2 255.255.255.0
no shutdown
int fa0/1
switchport mode access
switchport port-security
switchport port-security maximum 1
switchport port-security mac-address 000A.4128.5543
switchport port-security violation shutdown
end
Megjegyzés
A Hyenae egy Windows-on futó többcélú program, mellyel szintén demonstrálható a CAM tábla túlterhelése, azonban a telepítése és beállítása némi szakértelmet igényel. Használatával a CAM tábla túlterhelése hasonlóan történik, de a paraméterezés valamennyivel bonyolultabb: hyenae -I eth0 -l ether.src.mac=random -p 0x0800 -a 1000 Ebben a -l ether.src.mac=random miatt a hyenae minden egyes küldött csomaghoz véletlenszerű forrás MAC-címet generál, a -p 0x0800-zal a EtherType-ot állítja be, a -a 1000 pedig a csomagok küldési sebességét állítja be 1000 csomag per másodpercre.