#acl All:read = Flow alapú hálózat monitoring rendszer tesztelése és vizsgálata = <> == Bevezető == === A flow alapú forgalom monitorozásról általában === A flow alapú hálózati forgalom monitorozás kiemelkedő fontossággal bír nagy kiterjedesű hálózatok üzemeltetésében, hiszen lehetővé teszi, hogy a hálózati forgalmat továbbító aktív eszközökből részletes információt nyerjünk az átmenő forgalmat alkotó folyamokról (flow). A flow alapú monitorozás általános felhasználási területei: * Nagy forgalmat bonyolító számítógépek megtalálása. Forgalom alapú számlázás. * Hálózati támadások felderítése, jellegük megfigyelése. * Hálózati forgalmat generáló vírussal, spyware-el fertőzött számítógépek lokalizálása. A nagy forgalmat bonyolító számítógépek megtalálása és kiszűrése/korlátozása nagyban csökkentheti intézményünk hálózati forgalmát, amely más, esetenként lényegesebb, szintén hálózaton kommunikáló alkalmazások gyorsulásához vezethet. A mai hálózati viszonyoknak megfelelően számítógépeink állandó támadásnak ill. vírus/spyware fertőzésnek vannak kitéve. A támadások azonosításában, lokalizálásában ill. a fertőzött számítógépek megtalálásában különösen fontos szerepet játszik a flow alapú hálózati forgalom monitorozás, amelyet ma már jónéhány felsőoktatási ill. akadémiai intézményben sikerrel alkalmaznak a fenti problémák kezelésében. A flow alapú monitorozással a következő gyanús, biztonsági kockázatot valószínűsítő hálózati forgalmak azonosíthatóak gyorsan és egyszerűen: * '''Szokatlan nagyságú ICMP forgalom:''' támadásra utal. * '''TCP SYN flood:''' Denial of Service (DoS) támadások a megtámadott számítógép/kiszolgáló erőforrásainak lekötéséhez. * '''Szokatlanul nagy mennyiségű TCP vagy UDP flow:''' az adott számítógép rendellenes viselkedésére utalhat. Pl. spyware fertőzött (más számítógépeket támad vagy kommunikál saját példányaival, nem kívánt tartalmat forgalmaz, stb.). * '''Egy specifikus TCP/UDP portra menő szokatlan nagyságú forgalom egyetlen számítógépről:''' általában ez szintén spyware vagy vírus jelenlétét valószínűsíti. Amikor egy-egy ilyen nem kívánt alkalmazást a megfelelő biztonsági csoport azonosít, megjelenik az adott spyware/vírus pontos leírása. Ezekből a leírásokból egyszerűen azonosíthatóak a megfelelő spyware-ek/vírusok ill. a fertőzött számítógép. A fentiek természetesen mind az IPv6, mind pedig az IPv4 protokollra egyformán érvényesek. === A NetFlow === A !NetFlow protokollt eredetileg a Cisco Systems dolgozta ki 1996-ban, hogy lehetővé tegye flow információk exportálását hálózati eszközeiből. A !NetFlow protokoll több verziót is megélt (1, 5, 7, 8 és 9). A legszélesebb körben az 5-ös verzió használt, de természetesen a preferált, IPv6 képes verzió a 9-es. A Cisco Systems által gyártott hálózati kapcsolók és router-ek jelentős része képés !NetFlow információk exportálására. A !NetFlow működési modelje az alábbi ábrán látható. A !NetFlow képes hálózati eszköz folyamatosan gyűjti a rajta átmenő IP flow-k információt egy ún. !NetFlow cache gyorsítótárba. Amikor ez a tár megtelik, sor került a megfelelő rekordok exportálására a !NetFlow Collector Engine felé, amely általában egy szokványos kiszolgáló, lehetőleg minél nagyobb tárhellyel, hiszen a visszamenőleg tárolt flow információk nagy forgalom mellett óriásira duzzadhatnak. {{attachment:netflow_model.jpg}} A !NetFlow az UDP protokollt használja, az exportálás jellege egyirányú, azaz kizárólag a hálózati eszköz felől érkeznek információk, a kollektor számítógép csak rögzíti és feldolgozza ezeket. A hálózati adminisztrátorok a kollektor által összegyűjtött információkat egy grafikus felületen tudják lekérdezni, ahol megfelelő feltételek megadásával képesek finomítani a lekérdezést. A lekérdezés a leggyakrabban a HTTP protokoll segítségével történik és megjelenítés értelemszerűen egy böngészővel. A megjelenítés általában grafikonos formában vagy nyers - pontosítás céljával - !NetFlow rekordként történik. A hálózati eszközök által export-ált rekordok több alapvető paramétert alkalmaznak az egyes flow-k leirásához: * Forrás IP cím * Cél IP cím * Forrás port * Cél port * Layer 3 protokoll típus * Type of Service mező (ToS v. DSCP érték) * Input és output interfész * Csomagméret * Flow kezdési és befejezési időbélyeg * TCP flag-ek, felsőbb szintű protokoll * Routing információ: next-hop cím, forrás AS (Autonomous System) azonosító, cél AS azonosító, forrás prefix maszk, cél prefix maszk A !NetFlow v9 alapvető jellemzői: * IPv4, IPv6, multicast és Multiprotocol Label Switching (MPLS) támogatás (többek között). * Template-ek: lehetőség van !NetFlow v9 template-ek definiálására a router oldalán. Ez annyit jelent, hogy összeállítható egy azonosítóval ellátott template a router konfigurációjában, amelynek segítségével meghatározható, hogy pontosan milyen paramétereket exportáljon a router a collector felé. Néhány megjegyzés: * A template-ek leírását (mezők és jelentésük) a router időnként propagálja a collector alkalmazás felé, hogy azok formátumát értelmezni tudja a feldolgozó szoftver. Ilymódon biztosítható, hogy a rekord-formátumot a feldolgozó alkalmazás általános szinten kezelje és a formátum változásakor (ld. korábbi !NetFlow verzióváltások) ne kelljen újraírni az alkalmazásokat. * A template-ek segítségével ezen túl a felhasználó által összeállított template-ekben kizárólag a felhasználó számára releváns információk kerülnek átvitelre. * A template-ek segítségével újabb protokollok és paramétereik egyszerűen, nagyobb változtatás nélkül exportálhatóak. * Jelenleg a Cisco IOS szoftverek nem támogatják a template-ek létrehozását, ezt későbbre ígérik. Így a template-ek tesztelésére nem kerülhetett sor. Az IETF (Internet Engineering Task Force) IP Information Export (IPFIX) és Pack Sampling (PSAMP) munkacsoportjai 2003-ban a Cisco IOS !NetFlow v9 protokollt választották IP flow-ok leírásához és exportálásához, eltekintve néhány apróbb változtatástól. Az IPFIX munkacsoport azért alakult, hogy egy adatmodellt illetve egy kapcsolódó protokollt definiáljon. A hamarosan megjelenő IPFIX szabvány egyébként kötelezőként írja elő az SCTP alapú adatszállítás megvalósítását az IPFIX protokoll alkalmazásakor. === NetFlow v9 IPv6 konfiguráció Cisco eszközökön === A dokumentáció [[netflow_cisco_config|ide]] kattintva érhető el. == Az SCTP szállítási szintű protokoll == A Stream Control Transmission Protocol (SCTP) egy szállítási szintű protokoll, amelyet 2000-ben definiált az IETF Signaling Transport (SIGTRAN) munkacsoportja. A protokoll leírása megtalálható az RFC 2960 ill. az RFC 3286 dokumentumokban. Mint szállítási protokoll az SCTP ekvivalens mind a TCP-vel, mind pedig az UDP-vel és mégis több annál. Az alábbi linkeken egy magyar nyelvű SCTP protokoll leírás ill. alapszintű SCTP socket programozási dokumentáció található: 1. [[SCTP_tutorial| Magyar nyelvű SCTP leírás]] 2. [[SCTP_socket| SCTP socket programozás]] 3. [[SCTP_cisco_config| NetFlow v9 és SCTP konfiguráció Cisco eszközökön]] == Netflow v9 monitorozó eszközök == A jelenleg rendelkezésre álló !NetFlow eszközök egy közel teljes gyűjteménye megtalálható a SWITCH (svájci kutatói hálózat) honlapján, az alább URL-en: http://www.switch.ch/tf-tant/floma/software.html A pályázat beadásának idején (2004 első fele) úgy látszott, hogy több SCTP képes router szoftver és collector fog a fejlesztők és tesztelők rendelkezésére állni, hiszen az IETF IPFIX munkacsoportja is az SCTP protokollt jelölte ki az IPFIX sztandard transzport protokolljaként. A SCTP protokoll tehát nem terjed olyan ütemben, amint arra számítani lehetett. Az első megfelelően stabil router implementációk most kezdenek csak megjelenni, szabadon hozzáférhető collector szoftver pedig egyenlőre nem is létezik. Ennek megfelelően választottuk ki a samplicator nevű alkalmazást, amelyet SCTP képessé tettünk (ld. lent). Az SCTP képes samplicator alkalmazásával lehetőségünk nyílik a közelmúltban megjelent hálózati oldali eszközök SCTP implementációjának kipróbálására és tesztelésére. === nfdump és nfsen (Netflow Sensor) === A nfdump és az nfsen szoftverek rövid, IPv6 specifikus leírása [[nfdump_nfsen|itt]] található. === Network Emergency Responder & Detector (NERD) === http://www.nerdd.org Network Emergency Responder & Detector (NERD) egy biztonsági monitoring eszköz, amely !NetFlow adatokat gyűjt és elemez. Képes DoS támadások felismerésére és megfelelő riasztások generálására. A NERD képes továbbá a meglévő !NetFlow adatok utólagos biztonsági és forgalmi elemzésére. A NERD eszközt a SURFnet B.V. és TNO Information and Communication Technology készíti. A NERD működése nagy vonalakban a következő: * A felhasználó szűrési feltételeket, kritériumokat definiálhat a forrás-, célcím és portok megadásával ill. egyéb forgalmi kritériumokkal. * A szűrési feltételek egy MySQL adatbázisban tárolódnak. * A bejövő flow információkat a NERD folyamatosan figyeli és összeveti az SQL adatbázisban tárolt kritériumokkal. Amennyiben az egyes kritériumokat a forgalom túllépi, akkor a NERD risztást generál. * Az egyes riasztások egy web-es felületen listázhatóak, a hozzájuk tartozó részletekkel együtt. Az ígéretes NERD eszköz fejlesztését a jelek szerint egy évvel ezelőtt befejezték, így félkész állapotban van. Használata nem ajánlott. A specifikálható szabályok túl merevek (pl. adott IP címek között, adott portok között menő UDP forgalom, ha túllép egy szintet, akkor riaszt) és alapszintűek (pl. port tartomány nem adható meg), stb. == Netflow v9 (IPFIX) exportot támogató eszközök == === samplicator === A projekt keretében a samplicator nevű !NetFlow folyamok duplikálására készített eszközt SCTP képessé alakítottuk. A szoftver felhasználói dokumentációja [[netflow_samplicator|itt]] olvasható el.