www.SAMURAJ-cz.com 

19.04.2024 Rostislav Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

Zařízení v síti pod kontrolou

Pondělí, 21.09.2009 17:08 | Samuraj - Petr Bouška |
Samostatnou kapitolou monitoringu je sledování a analýza datových toků v síti. K tomu nám slouží protokol NetFlow. Druhou oblastí je dohled a správa zařízení v síti. Pokud porozumíme nejrozšířenějšímu protokolu SNMP, můžeme sami nebo pomocí monitorovacích systémů, dosáhnout úžasných výsledků.

Tento článek jsem napsal pro časopis Connect a vyšel v čísle Connect 10/09, zde jej publikuji s laskavým svolením redakce.

Jak na monitoring sítě pomocí SNMP a NetFlow

V minulém čísle časopisu Connect! jsme rozebírali základní oblasti a principy monitoringu sítě. Dnes si podrobněji popíšeme další dva důležité protokoly NetFlow a SNMP.

NetFlow – datové toky v síti

NetFlow, sFlow, IPFIX (IP Flow Information Export) a další jsou protokoly a mechanismy určené pro sbírání datových toků a jejich odeslání na jiné zařízení pro shromažďování a analýzu. Různé protokoly byly vytvořeny různými výrobci aktivních síťových prvků a jsou většinou proprietární. NetFlow,v současnosti asi nejpoužívanější, byl vytvořen firmou Cisco, později na něm byl založen IETF standardem IPFIX.

Princip funkce je takový, že v síti máme jeden nebo několik Observation Point, tedy míst, kde se sleduje provoz (většinou jeden nebo více interfaců nějakého zařízení). Na tomto místě sledujeme provoz, provádíme filtrování a agregaci a vytváříme záznamy o tocích Flow Record. Tyto záznamy obsahují informace o jednotlivých tocích IP Flow (včetně času začátku a konce, vstupní a výstupní interface, počet bytů a paketů v toku, údaje z hlavičky paketu).

Síťový tok je jednosměrná sekvence paketů, které projdou skrze Observation Point v určitém časovém intervalu, a které mají shodné základní vlastnosti paketu (jako IP adresa, port, protokol).

Zařízení, kde běží NetFlow služba se označuje jako Exporter(může se jednat o router, switch nebo samostatnou sondu). Ten monitoruje pakety, vytváří toky těchto paketů a tato data odesílá ve formě Flow Records v pravidelném intervalu na NetFlow Collector. Zde se zpracovávají a ukládají (do textových souborů nebo databáze). Collector může přijímat data z více Exporterů. Nad databází záznamů nám pak může běžet nějaká aplikace, která provádí analýzu a vizualizaci NetFlow dat.

Schéma jednotlivých prvků NetFlow

Podpora NetFlow je primárně u zařízení firmy Cisco a to u routerů, již od nízkých modelů, jako je řada 800. Kdežto u switchů až vyšších řad Catalyst 4500 a výše.

Standardně se ukládají údaje o routovaném provozu, jaké přesně údaje shromáždíme, záleží na verzi NetFlow. První verze měla číslo 1. Dnes je stále rozšířena starší verze 5 a 7 (obdoba verze 5, ale speciálně pro Catalyst 6500 a 7600). Verze 8 přidala různá agregační schémata a snížila využití zdrojů. Zatím poslední verze 9 se označuje jako Flexible NetFlow. Má rozšiřitelný exportní formát, takže můžeme doplňovat další sledovaná pole (používá se třeba pro MPLS, Multicast, BGP).

Používání NetFlow je vhodné z řady důvodů. Můžeme sledovat zatěžování sítě v čase a plánovat rozšiřování kapacity nebo lepší využití stávajících prostředků. Zároveň můžeme údaje z NetFlow použít pro analýzu bezpečnostních hrozeb, například detekovat Denial of Service (DoS) útoky.

Z volně dostupných nástrojů pro NetFlow je nejrozšířenější collector Nfdump, který sbírá a zpracovává data z příkazové řádky. Nad těmito daty můžeme postavit vlastní skripty, které reagují na určité situace. Nebo můžeme použít grafickou webovou nadstavbu NfSen, která dokáže zobrazovat grafy se základními údaji.

Abychom z NetFlow dostali maximum, tak potřebujeme chytrý analyzátor, protože jinak se jedná pouze o velké množství dat. Jako příklad specializovaného komerčního řešení je Cisco MARS či NetFlow Tracker od FLUKE networks.

SNMP – protokol pro správu

Určitě můžeme říci, že základem pro správu (monitoring i konfiguraci) síťových zařízení, je protokol SNMP (Simple Network Management Protocol). Jedná se o sérii standardů (popsaných v RFC od IETF), která se poprvé objevila již v roce 1988 a v dnešní době je masově rozšířena. Podpora SNMP je nejen u serverů a aktivních síťových prvků (jako jsou switche a routery), ale téměř u každého zařízení, které komunikuje po síti (tiskárny, UPS, WiFi AP, FW, různá síťová čidla, jako třeba teploměr).

Pomocí SNMP můžeme číst nebo nastavovat hodnoty na zařízení, anebo obdržet upozornění na nějakou definovanou událost. Hodnoty můžeme načítat jednorázově v případě potřeby nebo v pravidelném intervalu. Další zpracování již záleží na nás (potažmo na použité aplikaci), zda pouze zobrazíme danou hodnotu nebo budeme vykreslovat graf (třeba průběh teploty či vytížení procesoru v čase) či provedeme definovanou reakci.

Protokol SNMP vyžaduje pro komunikaci dvě strany. Jednou entitou je správce (manager) a druhou agent. SNMP pracuje ve dvou režimech činnosti:

  • Správce posílá dotazy agentovi a přijímá odpovědi - hodnoty tedy může získávat i více správců a mohou se ptát kdykoliv
  • Agent zasílá oznámení (trapy) na adresu správce - v nějakých definovaných situacích (překročení nějaké hodnoty nebo i v pravidelném intervalu) odesílá agent jednomu správci hodnoty

Různé verze SNMP

V současnosti existuje protokol SNMP ve třech verzích. Prvotní verze SNMPv1, která má řadu nedostatků, takže je dobré se jí pokud možno vyhnout. Potom přišla SNMPv2, tato verze existovala v několika variantách, ale dnes se používá pouze verze SNMPv2c (a jedná se asi o nejrozšířenější verzi). Poslední je SNMPv3, která je doporučována z bezpečnostního hlediska, ale její použití je o něco obtížnější.

Informace odesílané v SNMP paketech jsou standardně uloženy v čistém textu. Aby data ze zařízení mohl číst nebo nastavovat pouze oprávněný uživatel, tak se používá určitá forma autentizace. Pro SNMPv1 a SNMPv2c se používá community string, tedy textový řetězec, a ten se přenáší v každém paketu jako čistý text. Přesněji se používají dvě tato hesla read community string, který povoluje přístup pouze pro čtení a write community string, který povoluje i zápis. SNMPv3 přináší několik vylepšení v oblasti bezpečnosti a to je autentizace pomocí jména a hesla (User-based Security Model), ochranu proti změně či odhalení (kontrolní součty MD5 a SHA a šifrování komunikace pomocí DES) a řízení přístupu k jednotlivým objektům (View Access Control Model).

Protokol SNMP může běžet nejen nad IP, ale také dalšími protokoly, jako OSI CLNS, AppleTalk DDP či Novel IPX. V praxi se ale sekáme téměř výlučně s IP sítěmi, takže pro zjednodušení budeme uvažovat pouze TCP/IP verzi SNMP.

Princip komunikace v SNMP

SNMP využívá pro komunikaci protokol UDP, který je rychlý, ale neobsahuje mechanismus pro ověření doručení (který je třeba v TCP). SNMP od verze 2 obsahuje vlastní mechanismus pro kontrolu doručení. Každá SNMP zpráva se zapouzdří do jednoho UDP paketu. Když správce posílá dotaz klientovi, tak zdrojový port je dynamicky volený a cílový je defaultně port 161 (na něm poslouchá SNMP agent). Agent odpovídá z portu 161 na dynamický port správce. Trapy odesílá agent z dynamického portu na adresu správce port 162.

Do hlubin komunikace

Když se podíváme více do hloubky, jak funguje SNMP komunikace, tak je to velmi jednoduché. SNMP má přesně daný formát paketu, jehož aplikační část (4. vrstva dle TCP/IP modelu) je schematicky zobrazena na obrázku. Je zde vidět rozdělení na hlavičku, která obsahuje určení použité verze SNMP a community string, a uživatelská data, která se označují jako SNMP PDU (Protocol Data Unit). Datová část je složena z určení SNMP operace, čísla dotazu pro svázání mezi dotazem a odpovědí, případného chybového kódu a ukazatele na objekt, kde k chybě došlo, a variable bindings, což je svázání OID a odpovídající hodnoty. Protože se můžeme najednou ptát na více hodnot, tak variable bindings se může vyskytovat vícekrát za sebou pro různé OID.

Uvnitř SNMP paketu se data ukládají pomocí Basic Encoding Rules (BER), což zjednodušeně znamená, že každé pole je uloženo jako určení datového typu, délka a vlastní data. Typů je definováno několik, příkladem je sekvence (kód 0x30), Integer (2), OctetString (4), Null (5).

Struktura paketu pro SNMP včetně příkladu hodnot

Příklad komunikace si popíšeme na operaci SNMP GET. Standardní komunikace probíhá tak, že se do SNMP paketu nastaví typ na get-request, ID dotazu, hodnota OID, které chceme přečíst a vlastní hodnota se nastaví na NULL. Takto vytvořený UDP paket se odešle na agenta.

Ten provede zpracování a odešle odpověď, kde nastaví typ na get-response, zachová ID dotazu, a pro OID nastaví načtenou hodnotu.

SNMP má definováno několik operací:

  • Get – pro získání jedné nebo více instancí objektu (v SNMPv1 pokud dojde k chybě u jedné hodnoty, nevrátí nic, u SNMPv2 již vrací to, co je načteno bez chyby)
  • GetNext – vrátí instanci dalšího objektu v seznamu nebo tabulce
  • Set – nastaví hodnotu instanci objektu
  • Trap – asynchronně informuje o události
  • GetBulk – nově od SNMPv2, vrací větší blok dat (jako několik řádků z tabulky)
  • Inform – nově od SNMPv2, slouží pro komunikaci mezi dvěma správci

V SNMPv1 je jiný formát paketu pro Trap než pro ostatní operace. Ve verzi SNMPv2 došlo ke zjednodušení a formát byl sjednocen na stejný.

Spravované objekty, tedy hodnoty či vlastnosti, které můžeme pomocí SNMP číst či nastavovat, jsou uloženy ve virtuálním informačním úložišti, které se nazývá Management Information Base - MIB. Struktura MIB je hierarchická a reprezentuje strom. Začíná nepojmenovaným kořenem a pod ním jsou uzly, každý uzel může být kořenem podstromu. Uzly mají návěští, které se skládá ze stručného textového popisu a čísla.

Pro jednoznačnou identifikaci objektu se používá Object Identifier – OID, což je sekvence celých čísel oddělených tečkou. OID odráží hierarchickou strukturu MIB, kdy bere OID nadřazeného uzlu a doplní za tečku své číslo. Příkladem OID pro podstrom MGMT je .1.3.6.1.2. OID můžeme zapisovat i pomocí popisků z návěští, takže MGMT můžeme zapsat jako .iso.org.dod.internet.mgmt.

Související údaje se ukládají do MIB modulů, které dohromady tvoří MIB databázi. MIB moduly se ukládají jako textové soubory. Správce nepotřebuje mít k dispozici MIB DB, ta mu ale může pomoci třeba pro reprezentaci hodnot. Agent MIB databázi obsahuje, v ní jsou definovány objekty, které zpracovává.

MIB používá pro zápis notaci dle SMI (Structure of Management Information) což je podmnožina standardu ASN.1 (Abstract Syntax Notation One). Se SNMPv2 přišlo rozšířené SMI, které přidává několik hodnot. Pomocí SMI jsou definovány jednotlivé typy objektů, které můžeme v SNMP použít.

MIB se dělí na dvě hlavní části. Standard MIB, která je definována organizací IETF a popisuje univerzální vlastnosti, které většina výrobců implementuje. A Enterprise MIB, kde organizace IANA přiděluje unikátní podstromy (OID) jednotlivým společnostem, které si následně sami spravují.

Ukázka části MIB databáze - OID stromu

SNMP je jednoduché a z toho pramení i jeho síla, i když se dnes často probírá otázka bezpečnosti. Pro SNMP existuje velké množství aplikací a můžeme jej použít na mnoha místech řadou různých způsobů. Společné je to, že základní použití je velmi jednoduché.

Hodnoty můžeme načítat či nastavovat pomocí skriptů v prostředí Windows, Linux i dalších. Asi nejrozšířenější pro tento účel je skupina open source aplikací pro příkazovou řádku po názvem Net-SNMP. Ta se skládá z řady malých aplikací, které v základu reprezentují jednotlivé operace SNMP. Příklad, kdy ze síťového zařízení načítáme jeho UpTime, je uveden níže. Návratová hodnota je formátu Timeticks, takže ji Net-SNMP převádí i do čitelnějšího formátu.

c:\NetSNMP\bin>snmpget -v 2c -c public 192.168.100.21 .1.3.6.1.2.1.1.3.0

DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1500335577) 173 days, 15:35:55.77

Další možností je vytvoření jednoduchého i složitějšího programu. Vystačíme i se základními znalostmi programování a můžeme vytvořit vlastní aplikaci například v jazyce PHP či Java. Jednoduchý příklad v jazyce PHP a jeho výstup.

<?php echo snmpget("192.168.100.21", "okro", ".1.3.6.1.2.1.1.3.0"); ?>

Po spuštění dá výstup:

Timeticks: (1500372420) 173 days, 15:42:04.20

Většina monitorovacích řešení využívá jako jednu z možností monitoringu SNMP. Také existují jednoúčelové aplikace, které načítají údaje ze zadaného OID a zobrazují je do grafu či tabulky. Pro testování SNMP existuje řada jednoduchých nástrojů, jako je KS-Soft MIB Browser či Paessler SNMP Tester.

zobrazeno: 26919krát | Komentáře [4]

Autor:

Související články:

Monitoring sítě

Úvod do monitoringu počítačových sítí a popis základních protokolů.

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře

  1. [1] Coudu

    Čáu

    Máme ve firmě Catalysty 3560G a 3750G který,jak píšeš, nepodporují NetFlow...myslíš že by k jejich zprovoznění pomohl novější firmware ?

    Středa, 18.11.2009 11:52 | odpovědět
  2. [2] Samuraj

    odpověď na [1]Coudu: Před časem jsem to hledal pro 3750ku. Prostě to u nich Cisco nepodporuje (nezáleží na verzi IOSu) a asi ani v budoucnu nebude. Je to skoro na všech routerech, ale u switchů až u velkých :-(.

    Středa, 18.11.2009 11:59 | odpovědět
  3. [3] Coudu

    odpověď na [2]Samuraj: Tak to je naprd teda :-( ..dík za info.

    Úterý, 24.11.2009 16:55 | odpovědět
  4. [4] Blowmire

    Svita se na lepsi casy. Ja to ted resim v siti a podporuji to uz 2960X, pravdepodobne cela rada X. Podle me mozna i rada S, ale pravdepodobne s IOS 15 :-)

    Úterý, 19.07.2016 08:42 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách