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.
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.
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.ifnumbernebo číselným ekvivalentem (OID)
.1.3.6.1.2.1.2.1Na instanci tohoto objektu se odkážeme řetězcem
.iso.org.dod.internet.mgmt.mib-2.interfaces.ifnumber.0případně číselným ekvivalentem
.1.3.6.1.2.1.2.1.0
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.
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
group
view
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 (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.
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 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.