Sledování sítě (SNMP, MRTG, Nagios)

Jan Pomikálek, xpomikal@fi.muni.cz


Obsah


Motivace: Proč je dobré sledovat provoz na síti?


Protokol SNMP

SNMP (Simple Network Management Protokol) byl navržen v 80. letech za účelem sjednocení správy různých typů sítí takovým způsobem, aby běžný provoz na síti nebyl narušen.

Protokol SNMP je založený na architektuře klient-server. Server bývá označován jako agent, klient jako manažer. Agent běží na každém monitorovaném uzlu v síti. Na základě instrukcí ukládá hodnoty definovaných parametrů do datové struktury zvané MIB. Klient (manažer) je proces, který je schopen s jednotlivými agenty komunikovat.

Komunikace mezi manažerem a agentem probíhá prostřednictvím protokolu SNMP, který běží na aplikační vrstvě a využívá služeb protokolu UDP. SNMP je jednoduchý protokol s velmi malou sadou příkazů. Manažer má k dispozici příkazy get-request a set-request, kterými může přečíst (resp. nastavit) hodnotu v MIB daného agenta. Na get-request agent odpovídá příkazem get-response. Dále existuje speciální příkaz trap, který agent manažerovi bez výzvy zasílá jako reakci na událost, kterou považuje za důležitou - např. různé druhy chyb. Pro komunikaci se typicky využívá port 161, jen trap se posílá na port 162.

SNMP a bezpečnost

Bezpečnost je prakticky největším nedostatkem protokolu SNMP. Verze 1 specifikovala pouze ochranu heslem v řetězci "community string". Ten je součástí každého paketu. Každý agent v síti má nastaveno heslo pro čtení a heslo pro zápis. Na základě "community string" se pak rozhodne, zda operaci povolí. Vzhledem k tomu, že "community string" se posílá v otevřené (nešifrované) formě, je možné heslo snadno zjistit analýzou paketů. Tato bezpečnostní slabina přetrvala i do verze 2. Teprve specifikace SNMP aktuální verze 3 umožňuje ochranu dat algoritmem DES.

MIB

Jak už bylo zmíněno výše, MIB (Management Information Base) je datová struktura využívaná angety. Jedná se o standard, který definuje, jaká data daný agent udržuje, a jaké operace jsou nad těmito daty povoleny. MIB má stromovou strukturu. Data jsou uložena v listech stromu. Všechny uzly ve stromu mají své označení, a to jak slovní tak číselné. Na každý uzel ve stromu je možné se odkázat pomocí cesty od kořenu, kterou je pozice uzlu ve stromu vždy jednoznačně určena, neboť označení (slovní i číselné) každého uzlu je v rámci jeho bratrů unikátní.

Následující obrázek ukazuje část MIB stromu:

                        .
                        |
          --------------------------------------------------
          |             |               |                  |
       ccitt(0)       iso(1)          itu(2) joint-iso-ccitt(3)
                        |
               ---------------------
               |     |      |      |
                                 org(3)
                                   |
                                 dod(6)
                                   |
                               internet(1)
                                   |
                                 mgmt(2)
                                   |
                                mib-2(1)
                                   |
   ----------------------------------------------------------------
   |         |               |           |     |      |     |     | 
system   interfaces   addr-translation   ip   icmp   tcp   udp   egp
  (1)       (2)             (3)         (4)   (5)    (6)   (7)   (8)

Podstrom MIB-2 (ve spodní části obrázku) je současným standardem pro TCP/IP. Rozděluje informace o TCP/IP zařízení do osmi kategorií. Následující tabulka tyto kategorie popisuje:

Název Popis
system Informace o operačním systému daného hostitele nebo routeru
interfaces Informace o síťových rozhraních
addr-translation Informace o překladu adres
ip Informace o protokolu IP
icmp Informace o protokolu ICMP
tcp Informace o protokolu TCP
udp Informace o protokolu UDP
egp Informace o protokolu Exterior Gateway

MIB definice jednotlivých položek (listů) rovněž specifikuje, jaký typ dat může položka obsahovat. Obvykle obsahují hodnoty typu integer nebo string, ale mohou obsahovat i složitější struktury, jako např. tabulky. Položky v MIB stromu se nazývají objekty. Objekty jsou sice listy MIB stromu, nicméně mohou mít více instancí, například objekt typu tabulka. Odkazujeme-li se na hodnotu objektu, musíme zadat číslo instance. Pokud existuje jen jedna instance, její číslo je 0.

Například objekt ifNumber z kategorie "interfaces" obsahuje číselnou hodnotu vyjadřující počet síťových rozhraní, které dané zařízení obsahuje, ale objekt ipRoutingTable z kategorie "ip" obsahuje směrovací tabulku.

Následující příklad ukazuje, jak se lze na uzly (potažmo listy) MIB stromu odkazovat. Jak už bylo řečeno, každý uzel ve stromu je jednoznačně určen cestou od kořene. Na objekt ifNumber z kategorie "interfaces" se lze odkázat řetězcem

.iso.org.dod.internet.mgmt.mib-2.interfaces.ifnumber
nebo číselným ekvivalentem (OID)
.1.3.6.1.2.1.2.1
Na instanci tohoto objektu se odkážeme řetězcem
.iso.org.dod.internet.mgmt.mib-2.interfaces.ifnumber.0
případně číselným ekvivalentem
.1.3.6.1.2.1.2.1.0

Software, instalace

SNMP protokol je pro Linux (a další OS) implementován v rámci projektu Net-SNMP, dříve známého jako ucd-snmp. Aktuální verze Net-SNMP je 5.1. Zdrojové kódy lze získat na adrese http://net-snmp.sourceforge.net/download/. K dispozici jsou i rpm balíčky pro RedHat. Instalace ze zdrojových kódů viz INSTALL.

Konfigurace SNMP démona

Démon snmpd je určen pro běh na monitorovaných zařízeních (agentech). Konfigurace se provádí pomocí souboru snmpd.conf. Detaily o konfiguraci se lze dočíst v manuálové stránce. Proto podrobněji pohovorím pouze o řízení přístupu. K tomu se využívá zejména direktiv com2sec, group, access, view.

com2sec
mapuje dvojici zdroj/komunita na tzv. "security name". Zdrojem může být hostitel nebo podsíť.
group
mapuje dvojici "security name"/mód na název skupiny. Mód specifikuje, jaká verze SNMP se má použít (v1, v2c, usm).
view
umožňuje pojmenovat určitou oblast dat uvnitř MIB stromu.

Všechny tři výše zmíněné direktivy pouze pojmenovávají určité skupiny entit. To usnadňuje definování přístupu pomocí direktivy access. Tou říkáme, které skupiny mají do jednotlivých oblastí v MIB stromu přístup pro čtení a zápis.

Příklady:

### view
#          incl/excl subtree                              mask
view cust1 included  interfaces.ifTable.ifEntry.ifIndex.1 ff.a0
view cust2 included  interfaces.ifTable.ifEntry.ifIndex.2 ff.a0
view all   included  .1                                   80
view mib2  included  .iso.org.dod.internet.mgmt.mib-2     fc

### group
#                  source          security name
group    public    usm             public

### access
#              context sec.model sec.level prefix read   write notify
access mygroup ""      any       noauth    exact  mib2   none  none
access local   ""      any       noauth    exact  all    all   all


MRTG

MRTG (Multi Router Traffic Grapher) je nástroj, který pomocí protokolu SNMP sleduje provoz na síti a výsledky generuje do podoby HTML stránek s obrázky ve formátu png (vyžívá knihovny GD). Lze jej rovněž využít ke grafickému znázornění jiných veličin, které nemají se sítěmi žádnou souvislost. Popis instalace je k dispozici na adrese http://www.mrtg.cz/unix-guide.html.

Konfigurace

K snadnému vytvoření konfiguračního souboru lze využít skript cfgmaker. Například takto:

cfgmaker komunita@server.nekde.cz > mrtg.cfg
indexmaker mrtg.cfg > /usr/local/httpd/html/mrtg

Pro generování HTML stránek je vhodné zvolit adresář, ke kterému má přístup web server, tedy např. /usr/local/httpd/html/mrtg jako v uvedeném příkladu. Dále stačí (například pomocí cronu) v pravidelných intervalech (například každých 5 minut) spouštět příkaz

mrtg mrtg.cfg

Nagios

Nagios je dalším nástrojem pro monitorování sítí. Je však určen zejména pro sledování síťových služeb (SMTP, POP3, HTTP, PING) a zdrojů (zatížení procesoru, využití prostoru na disku) jednotlivých hostitelů. Kromě toho má mnoho dalších funkcí. Například umožňuje definovat síťovou hierarchii, pomocí které je možné rozlišit mezi shozenými a nedostupnými hostiteli. Dokáže zasílat zprávy administrátorům (např. pomocí emailu nebo pageru) v případě výskytu problémů. Dále je možné definovat obslužné skripty, které budou reagovat na výskyt konkrétních událností (např. na chyby). Stejně jako MRTG poskytuje Nagios své výstupy ve formě přehledných HTML stránek s obrázky. Domovská stránka projektu je http://www.nagios.org.


Odkazy

SNMP
The NET-SNMP Project Home Page
Network Management & Monitoring with Linux
SNMP protokol a jeho využití
Články na Světě sítí
MRTG
MRTG Home Page
Kolik dat tudy teče?
MRTG - grafické prehľady
Nagios
Nagios Home Page