Sledování sítě

Bukal Tomáš, xbukal@fi.muni.cz


Obsah


Úvod

Protokol SNMP (Simple Network Management Protocol) byl vyvinut v roce 1988, stal se standardem pro správu sítě. SNMP je rozšiřitelný dovolující přidávat nové funkce managementu do existujících produktů. Protokol je postaven na protokolu UDP a komunikuje přes port 161.

Síťové managementovací architektury

Systém obsahuje 2 primární elementy: manager a agents. Manager je konzole, přes kterou administrátor vykonává management sítě. Agents jsou entity zařízení, které jsou spravovány. Například routery, huby, síťové servery jsou zažízení, které obsahují spravované objekty. Např. hardware, parametry konfigurace, statistiky a další objekty, které se týkají aktuální operace. Tyto objekty jsou uspořádány do něčeho, co je známo pod pojmem virtual information database, nazývaná také management information base. SNMP dovoluje managers a agents komunikovat za učelem zpřístupnění těchto objektů.

Struktura informací

SMI organizuje, pojmenovává a popisuje informace. Stavy SMI (Structure of Management Information), jenž každý spravuje objekt, musí obsahovat jméno, syntax a kódování. Jméno, indentifikace objektu (object identifier - OID), jednoznačně identifikuje objekt. Syntax definuje typ dat (např. číslo, řetězec). Kódování popisuje způsob, jak jsou informace přiřazeny spravovaným objektům řazeny pro poslání bezi stanicemi. Syntax použitý v SNMP je Abstract Syntax Notation One (ASN 1), kódování je Basic Encoding Rules (BER) a jména jsou object identifiers.
OID je zapisován jako pořadí čísel oddělená tečkami. Např. 1.3.6.1.2.1.1.1.0
Blíže popsáno v RFC 1155.

MIB

Management Information Base je sbírka definicí definující vlastnosti spravovaných objektů. Každé zařízení obsahuje databázi hodnot pro všechny definice zapsánu v MIB. Definice MIB se řídí podle SMI. Poslední MIB je definována v RFC 1213 někdy nazývána taktéž jako MIB-II.
Příklad stromu:

MIB-II
Je současný standard pro SNMP správu objektů. Má 10 základních skupin: system, interfaces, at, ip, icmp, tcp, udp, egp, transmission, snmp.


Autentizace

Autentizace je prováděna na základě názvu community, který je přenášen protokolem SNMP v nezašifrované podobě. Předpokládá se, že zprávy nebudou čteny a ani pozměňovány. Poté, co je ověřen název community, proběhne kontrola, zda zdrojová je adresa povolena pro komunikaci a zda jsou práva pro tuto operaci.
SNMP Community je jako ID uživatele nebo heslo, které povolí přístup ke statistikám routeru popřípadě jiných zařízení. Pokud řetězec community je správný, zařízení odpoví zasláním požadovaná informace. Pokud správný není, zařízení neodpoví. Existují 3 community: read-only (povoleno pouze čtení), read-write (povolena i modifikace) a trap (zasílání událostí jiným zařízením).
Autentizace probíhala u verze 1 pouze zasláním community, u verze 3 už se používá šifrování pomocí soukromých a veřejných klíčů.

SNMP trap

SNMP také umožňuje zasílat informace o událostech, mezi které patří např. zjištění nové síťové karty, zahlcení trasy, zjištění aktivity na portu, chybnou autentizaci a jiné. Daemon k tomuto účelu určený je snmptrapd, ke konfiguraci mu slouží soubor /etc/snmp/snmptrapd.conf. V souboru jsou traphandlery, které reagují na události spuštěním externího programu pro příslušný OID:
traphandle OID|PROGRAM [PARAMETRY]
Pokud OID je nastaveno na default, pak se provede tento handler, pokud OIDy ostatních nejsou shodné. Program pak dostane na standardní vstup informace o události, každou na zvláštní řádek:
HOSTNAME: host, který poslal trap
IPADDRESS: IP adresa, která zaslala trap
VARBINDS: seznam proměnných, které popisují trap

Konfigurace SNMP

Konfigurační soubor je uložen v /etc/snmp/snmpd.conf. Soubor nastavuje řízení přístupu:
1. Tabulkou přiřadíme security name community a tak definujeme, odkud se lze přihlášení provést:
com2sec local localhost public
com2sec mynetwork NETWORK/24 public

2. Přiřadíme security names do group names. Model může být v1, v2c nebo usm:
group MyRWGroup v1 local
group MuROGroup v2c mynetwork

3. Definujeme view, nastavíme práva skupinám:
#--incl/exclsubtreemask
viewallincluded.180
4. A nakonec definujeme přístup skupinám:
#--contextsec.modelsec.levelmatchreadwritenotif
accessMyRWGroup""anynoauthexactallallnone
accessMyROGroup""anynoauthexactallnonenone

Je také dobré vyplnit si kontaktní e-mail syscontact Me <me@somewhere.org>. Lze také monitorovat, zda je nějaký proces spuštěn proc named, není spuštěno více instancí než zadaný počet proc ntalkd 4, je spuštěno minimálně a maximálně zadaný počet instancí proc sendmail 10 1.
snmpwalk pak může vypadat následovně (vybráno jen pár řádků):
% snmpwalk -v 1 localhost public .1.3.6.1.4.1.2021.2
enterprises.ucdavis.procTable.prEntry.prIndex.1 = 1
enterprises.ucdavis.procTable.prEntry.prIndex.2 = 2
enterprises.ucdavis.procTable.prEntry.prNames.1 = "named"
enterprises.ucdavis.procTable.prEntry.prNames.2 = "ntalkd"
enterprises.ucdavis.procTable.prEntry.prMin.2 = 0
enterprises.ucdavis.procTable.prEntry.prMax.2 = 4
enterprises.ucdavis.procTable.prEntry.prCount.1 = 0
enterprises.ucdavis.procTable.prEntry.prErrMessage.1 = "No DNS is running"

Podobným způsobem lze také spuštět skripty, kontrolovat jednotlivé disky, load a jiné.


MRTG

Multi Router Traffic Grapher je nástroj pro generování grafů. MRTG uchovává v databázi čísla, která jsou použita pro vytvoření grafu. MRTG vytváří grafy denní, týdenní, měsíční a roční. Databázi lze plnit jakýmikoliv daty např. vytížeností jednotlivých síťových adaptérů, vytížeností procesoru, velikostí dat na jednotlivých discích, atd. Pro pravidelné naplňování databází lze použít např. cron, který bude za určitý interval spuštět program mrtg (jehož parametr je konfigurační soubor), který převezme data ze standardního vstupu, uloží do databáze a vytvoří příslušné grafy.
Pro zadávání dat do MRTG lze použít příkazy komunikující se SNMP. Mezi tyto příkazy patří snmpget, snmpgetnext a snmpwalk. Tyto příkazy čtou informace ze SNMP, pro nastavení hodnot se používá snmpset. Jako parametry se použijí indentifikátory objektů. Příkaz snmpwalk používá SNMP GET NEXT dotazy. Jelikož příkaz mrtg čte data oddělená mezerou či novým řádkem ze standardního vstupu, lze databázi naplnit i jinými programy.

Konfigurace MRTG

Při spuštění mrtg se jako parametr vkládá konfigurační soubor, který se má použít. Po přečtení nastavení se začnou generovat potřebné soubory. Důležité je nastavit WorkDir, což znamená adresář pro ukládání grafů. Každý řádek obsahuje klíčové slovo a za ním v hranatých závorkách název grafu, popřípadě podtržítko, jako implicitní hodnota. Následuje dvojtečka a dále hodnota. Důležité klíčové slovo je Target a jako parametr lze zadat třeba eth0 a hodnota bude standardní výstup spustitelného souboru. Hodnota se uloží do databáze pod eth0. Options nastavuje různé booleovské přepínače. Např. growright znamená, že graf roste směrem doleva, bits - hodnoty jsou násobeny osmi, lze zadat pomocí přepínačů avgpeak, gauge a absolute, zda data čtená ze standardního vstupu spuštěného programu jsou průměr (rozdíl mezi aktuální hodnotou a předchozí), aktuální stav a nový stav (po přečtení se nuluje). Options poskytuje možnosti, jak graficky stvárnit graf. Lze obrázek udělat s průhledným pozadím (transparent), bez okraje (noborder), bez popisků v HTML kódu (nolegend), a jiné. Další klíčové slovo může být MaxBytes, jehož hodnota je záleží na procentuálním vytížení. Pokud sledujete vytíženost procesoru, hodnota by měla být 100, pokud monitorujete přenos po síti, tak záleží na typu sítě. Pro ethernet je hodnota rovna 1250000. U grafu lze také nastavit nadpis klíčovým slovem Title. Při generování grafu, se generují obrázky, ale také HTML kód, do kterého lze přidávat další kód, který se zobrazí nad grafem pomocí PageTop a pod grafem pomocí PageFoot. Použitím Refresh lze nastavit interval obnovy stránek. Nastavení je velmi obsáhlé, bude tedy lepší si jej prostudovat zvlášť na stránkách MRTG hlavně o konfiguraci.
Příklad konfigurace:
WorkDir: /var/www/html/mrtg
Options[_]: growright
Weekformat[_]: V
WithPeak[_]: ymw
Target[localhost_eth0]: `/usr/local/bin/mrtg_proc_dev.sh "eth0"`
MaxBytes[localhost_eth0]: 12500000
Title[localhost_eth0]: eth0
PageTop[localhost_eth0]: <H1>Ethernet</H1>

Ostatní software

Pro monitorování a zobrazení sítě slouží programy jako TKinetd a Scotty. V těchto software si lze graficky zobrazit síť se všemi prvky. Pomocí programu TKinetd lze také zasílat různé události o stavu sítě.
Program Nagios je podobný jako předcházející programy, neznázorňuje ale graficky síť, ale spíše hlídá síťové služby. Oznamuje události, jako zhoršení či zlepšení situace. Umožňuje např. při zahlcení jedné linky poslat zprávu administrátorovi a spustit linku druhou, při poklesu vytíženosti opět informovat adinistrátora a používat linku jednu.
Screenshoty programu Nagios jsou zde
Ukázka programu Scotty:

Download

Jednotlivé programy naleznete na adresách:
SNMP:http://sourceforge.net/projects/net-snmp/
MRTG:http://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/
SCOTTY:ftp://ftp.ibr.cs.tu-bs.de/pub/local/tkined/
NAGIOS:http://www.nagios.org/download/