Munkaszakasz 2.3: 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:

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:

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:

A NetFlow v9 alapvető jellemzői:

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 konfiguráció Cisco eszközökön

Jelen dokumentáció rövid bevezetést kíván nyújtani Cisco eszközök IPv6 NetFlow konfigurációjához. Teljes értékű konfigurációs parancs referencia és leírás megtalálható a 12.4T IOS honlapján:

http://www.cisco.com/en/US/products/ps6441/prod_command_reference_list.html

Megjegyzés: Az újabb IOS kiadásokban az egyes NetFlow parancsok megváltoztak, hogy logikus és egységes struktúrát mutassanak. Ezen parancsok továbbra is élnek, de a dokumentumok nem részletezik őket, csupán az új megfeleltetésüket. Ilyen parancsok - pl. a ip route cache flow és a ip flow-export ip-address udp-port - főként az IPv4-es konfigurációra érvényesek, az IPv6-os parancs szintaxis már kezdettől fogva az új szintaxist használja.

Mivel az IPv6 a NetFlow v9-ben jelent meg, az IPv6 flow export beállításánál nem kell foglalkoznunk külön a megfelelő verzió beállításával, hiszen ez alapértelmezett. Az alábbi konfigurációs példák - hagyományos módon - az UDP protokoll használatát mutatják, az SCTP specifikus parancsokat ld. az SCTP konfigurációs résznél.

A flow collector engine IP címének és UDP portjának konfigurálása következő módon zajlik:

ipv6 flow-export destination 195.111.98.214 30000 udp

Ezt követően a megfelelő fizikai vagy logikai (pl. VLAN subinterfész) interfészeken állítsuk be, hogy az interfész kimenő, bemenő vagy mindkét irányú forgalmát szeretnénk exportálni:

interface GigabitEthernet0/0
 description hufu.ki.iif.hu
 no ip address
 duplex full
 speed 1000
 media-type gbic
 negotiation auto
 ipv6 address 2001:738:0:413::1/64
 ipv6 enable
 ipv6 nd ra interval 15
 ipv6 nd ra lifetime 30
 '''ipv6 flow egress'''
 no cdp enable

Bejövő forgalom esetén az ipv6 flow ingress parancsot kell alkalmaznunk.

Megjegyzés: Amennyiben mindkét parancs be van állítva egy forgalom szempontjából a bejövő és kimenő intefészeken is, akkor a flow export-ban a forgalom adatai kétszer fognak megjelenni.

show ip flow interface

ip flow-cache entries

show ip cache flow

show ip cache verbose flow


clear ipv6 flow stats

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]

NetFlow v9 és SCTP konfiguráció Cisco eszközökön

A Cisco első NetFlow v9 SCTP képes implementációja a 12.2(4)6T verziószámú IOS-ben jelent meg. A projekt keretében a teszteléshez felhasznált konfiguráció a következő volt:

Megjegyzés: a tesztek alatt a fentemlített IOS verzió instabilitást mutatott SCTP NetFlow exportálás alkalmazásakor, ezért produkciós hálózati eszközön egyenlőre ne alkalmazzuk.

Az alábbi konfigurációs példa az SCTP alapú exportálás beállítását mutatja (ld. még előző szakasz a NetFlow konfigurációhoz):

     ipv6 flow-export destination 195.111.98.214 50000 sctp

A fenti parancs a 195.111.98.214 IP címre, az 50000-es SCTP port-ra próbálja meg küldeni a NetFlow rekordokat. A parancs kiadását követően SCTP konfigurációs módba kerülünk, ahol további lehetőségeink vannak az SCTP kapcsolat előnyeinek kihasználására:

sctp_test.vh.hbone.h(config-flow-export-sctp)#?
SCTP export configuration commands:
  backup       Specify the SCTP backup parameters
  default      Set a command to its defaults
  exit         Exit from SCTP configuration mode
  no           Negate a command or set its defaults
  reliability  Specify the SCTP reliability

backup: a backup destination parancs segítségével megadhatunk egy másodlagos export célt is, amennyiben az elsődleges céllal megszakad a kapcsolat (ld. fent), akkor a hálózati eszköz erre fog átállni. A backup fail-over paranccsal beállíthatjuk, hogy mennyi ideig (msec) várjon a hálózati eszköz az elsődleges céllal való kapcsolat megszakadása után, mielőtt a másodlagos célra váltana át. A backup mode redundant parancs szabályozza, hogy a backup SCTP kapcsolatban a másodlagos céllal folyamatos társítás (association) álljon fenn, amellyel ellentétben a backup mode fail-over módban a másodlagos SCTP kapcsolat kizárólag az első hibája után épül fel.

sctp_test.vh.hbone.h(config-flow-export-sctp)#backup destination 10.1.1.1 49999
sctp_test.vh.hbone.h(config-flow-export-sctp)#backup fail-over 3000
sctp_test.vh.hbone.h(config-flow-export-sctp)#backup mode redundant
sctp_test.vh.hbone.h(config-flow-export-sctp)#backup restore-time 1000

A backup restore-time segítségével specifikálhatjuk, hogy egy esetleges kiesés után az elsődleges export célnak mennyi ideig (msec) kell folyamatos kapcsolatban lennie a hálózati eszközzel, mielőtt visszaállna erre a célra az exportálás.

A reliability parancs az SCTP kapcsolat megbízhatósági szintjét hivatott szabályozni.

sctp_test.vh.hbone.h(config-flow-export-sctp)#reliability ?
  full     Export data with full reliability
  none     Export data unreliably
  partial  Export data with partial reliability

A lehetőségek itt a következők lehetnek:

Látható, hogy az SCTP protokoll bevezetése számos extra funkciót add hozzá a NetFlow működéséhez és egyben növeli a megbízhatóságot is. A következőkben az SCTP protokollal kapcsolatos show parancsokat tárgyaljuk.

SCTP társítások (association) listája:

sctp_test.vh.hbone.hu#show ip sctp association list 

** SCTP Association List **

AssocID: 2712747875,  Instance ID: 0
Current state: ESTABLISHED 
Local port: 51453, Addrs: 195.111.96.110 
Remote port: 50000, Addrs: 195.111.98.214

A parancs segítségével kilistázhatóak a jelenleg érvényes SCTP társítások.

Egy SCTP társítás részletei/paraméterei:

sctp_test.vh.hbone.hu#show ip sctp association parameters 2712747875

** SCTP Association Parameters **

AssocID: 2712747875  Context: 1  InstanceID: 0
Assoc state: ESTABLISHED  Uptime: 1d01h
Local port: 51453
Peers Adaption layer indication is NOT set
Local addresses: 195.111.96.110 

Remote port: 50000
Primary dest addr: 195.111.98.214
Effective primary dest addr: 195.111.98.214
Destination addresses: 

195.111.98.214:   State:  ACTIVE(CONFIRMED)
  Heartbeats:  Enabled   Timeout: 500 ms
  RTO/RTT/SRTT: 5000/0/0 ms   TOS: 0  MTU: 1500
  cwnd: 3000  ssthresh: 52736  outstand: 0
  Num retrans: 0  Max retrans: 2  Num times failed: 0

Local vertag: A1B13F63  Remote vertag: 90266373
Num inbound streams: 10  outbound streams: 20
Max assoc retrans: 2  Max init retrans: 2  
CumSack timeout: 200 ms  Bundle timeout: 100 ms
Min RTO: 5000 ms  Max RTO: 5000 ms
Max Init RTO (T1): 1000 ms
LocalRwnd: 9000  Low: 9000   RemoteRwnd: 52628  Low: 52628
Congest levels: 0  current level: 0  high mark: 1

Itt szükséges megadnunk azon társítás számát, amelyről az információt le szeretnénk kérni.

SCTP társítás statisztikák:

sctp_test.vh.hbone.hu#show ip sctp association statistics 2712747875

** SCTP Association Statistics **

AssocID/InstanceID: A1B13F63/0
Current State: ESTABLISHED 
Control Chunks
  Sent: 17062  Rcvd: 19413
Data Chunks Sent
  Total: 2352  Retransmitted: 0
  Ordered: 2352  Unordered: 0
  Avg bundled: 1  Total Bytes: 319124
Data Chunks Rcvd
  Total: 0  Discarded: 0
  Ordered: 0  Unordered: 0
  Avg bundled: 0  Total Bytes: 0
  Out of Seq TSN: 0
ULP Dgrams
  Sent: 2352  Ready: 0  Rcvd: 0

SCTP-vel kapcsolatos hibák lekérdezése:

sctp_test.vh.hbone.hu#show ip sctp errors 

** SCTP Error Statistics **

No SCTP errors logged.

A routeren aktív SCTP protokoll instanciák lekérdezése:

sctp_test.vh.hbone.hu#show ip sctp instances 

** SCTP Instances **

Instance ID: 0  Local port: 51453  State: available
Local addrs: 195.111.96.110 
Default streams inbound: 20  outbound: 20
Adaption layer indication is not set
  Current associations:  (max allowed: 6)
  AssocID: 2712747875  State: ESTABLISHED  Remote port: 50000
    Dest addrs: 195.111.98.214

SCTP összegzett statisztikák:

sctp_test.vh.hbone.hu#show ip sctp statistics 

** SCTP Overall Statistics **

Control Chunks
  Sent: 98491  Rcvd: 110776
Data Chunks Sent
  Total: 12281  Retransmitted: 0
  Ordered: 12281  Unordered: 0
  Total Bytes: 1854500
Data Chunks Rcvd
  Total: 0  Discarded: 0
  Ordered: 0  Unordered: 0
  Total Bytes: 0
  Out of Seq TSN: 0
SCTP Dgrams
  Sent: 110587  Rcvd: 110776
ULP Dgrams
  Sent: 12281  Ready: 0  Rcvd: 0

Additional Stats
  Instances Currently In-use: 1
  Assocs Currently Estab: 1
  Active Estab: 185  Passive Estab: 0
  Aborts: 13580  Shutdowns: 184
  T1 Expired: 0  T2 Expired: 0

Az SCTP protokoll rendellenes viselkedésének vizsgálatát számos debug parancs segíti, ezek a következők:

sctp_test.vh.hbone.hu#debug ip sctp ?
  api          Enable API debugging
  congestion   Enable congestion debugging
  init         Enable association initialization debugging
  multihome    Enable multihoming debugging
  performance  Enable performance debugging
  rcvchunks    Enable receive chunk debugging
  rto          Enable retrans timer debugging
  segments     Enable simplified segment debugging
  segmentv     Enable verbose segment debugging
  signal       Enable signal debugging
  sndchunks    Enable send chunk debugging
  state        Enable state debugging
  timer        Enable timer debugging
  warnings     Enable warning debugging

A néhány debug opciót beállítva a következőhöz hasonló kimenetet kapjuk, ahol részletesen követhetőek az SCTP üzenetek, események, stb.

716316: Aug 23 17:25:27.647 MET-DST: SCTP: Sent:  Assoc 2712747875: s=195.111.96.110  51453, d=195.111.98.214  50000, len 60
716317: Aug 23 17:25:27.647 MET-DST: SCTP:        HEARTBEAT_CHUNK
716318: Aug 23 17:25:27.647 MET-DST: SCTP: Recv:  Assoc 2712747875: s=195.111.98.214  50000, d=195.111.96.110  51453, len 60
716319: Aug 23 17:25:27.647 MET-DST: SCTP:        HEARTBEAT_ACK_CHUNK
716320: Aug 23 17:25:27.647 MET-DST: SCTP:   Enter Process Next Segment instance:66A1EF80 assocP:66D40880
716321: Aug 23 17:25:27.647 MET-DST: SCTP: Assoc 2712747875: Heartbeat Ack Chunk from destaddr 195.111.98.214
716322: Aug 23 17:25:27.647 MET-DST: SCTP: Assoc 2712747875: destaddr 195.111.98.214, rto updated 5000 ms
716323: Aug 23 17:25:27.647 MET-DST: SCTP: Assoc 2712747875: rtt 0 ms, srtt 0 ms, rttvar 0 ms
716324: Aug 23 17:25:28.195 MET-DST: 
716325: Aug 23 17:25:28.195 MET-DST: SCTP Sent: SCTP Dgrams 0, Ctl Chunks 0, Data Chunks 1, ULP Dgrams 1
716326: Aug 23 17:25:28.195 MET-DST: SCTP Rcvd: SCTP Dgrams 0, Ctl Chunks 0, Data Chunks 0, ULP Dgrams 0
716327: Aug 23 17:25:28.195 MET-DST: Chunks Discarded: 0,  Retransmitted 0
716328: Aug 23 17:25:28.195 MET-DST: 
716329: Aug 23 17:25:33.347 MET-DST: SCTP: Sent:  Assoc 2712747875: s=195.111.96.110  51453, d=195.111.98.214  50000, len 60
716330: Aug 23 17:25:33.347 MET-DST: SCTP:        HEARTBEAT_CHUNK
716331: Aug 23 17:25:33.347 MET-DST: SCTP: Recv:  Assoc 2712747875: s=195.111.98.214  50000, d=195.111.96.110  51453, len 60
716332: Aug 23 17:25:33.347 MET-DST: SCTP:        HEARTBEAT_ACK_CHUNK
716333: Aug 23 17:25:33.347 MET-DST: SCTP:   Enter Process Next Segment instance:66A1EF80 assocP:66D40880
716334: Aug 23 17:25:33.347 MET-DST: SCTP: Assoc 2712747875: Heartbeat Ack Chunk from destaddr 195.111.98.214
716335: Aug 23 17:25:33.347 MET-DST: SCTP: Assoc 2712747875: destaddr 195.111.98.214, rto updated 5000 ms
716336: Aug 23 17:25:33.347 MET-DST: SCTP: Assoc 2712747875: rtt 0 ms, srtt 0 ms, rttvar 0 ms
716337: Aug 23 17:25:38.195 MET-DST: 
716338: Aug 23 17:25:38.195 MET-DST: SCTP Sent: SCTP Dgrams 0, Ctl Chunks 0, Data Chunks 1, ULP Dgrams 1
716339: Aug 23 17:25:38.195 MET-DST: SCTP Rcvd: SCTP Dgrams 0, Ctl Chunks 0, Data Chunks 0, ULP Dgrams 0
716340: Aug 23 17:25:38.195 MET-DST: Chunks Discarded: 0,  Retransmitted 0
716341: Aug 23 17:25:38.195 MET-DST: 
716342: Aug 23 17:25:39.055 MET-DST: SCTP: Sent:  Assoc 2712747875: s=195.111.96.110  51453, d=195.111.98.214  50000, len 60
716343: Aug 23 17:25:39.055 MET-DST: SCTP:        HEARTBEAT_CHUNK
716344: Aug 23 17:25:39.055 MET-DST: SCTP: Recv:  Assoc 2712747875: s=195.111.98.214  50000, d=195.111.96.110  51453, len 60
716345: Aug 23 17:25:39.055 MET-DST: SCTP:        HEARTBEAT_ACK_CHUNK
716346: Aug 23 17:25:39.055 MET-DST: SCTP:   Enter Process Next Segment instance:66A1EF80 assocP:66D40880
716347: Aug 23 17:25:39.055 MET-DST: SCTP: Assoc 2712747875: Heartbeat Ack Chunk from destaddr 195.111.98.214

Netflow v9 monitorozó eszközök