SNMP (Simple network management protocol) je protokol běžící na aplikační vrstvě, který slouží pro správu zařízení připojených k síti. SNMP nezahrnuje pouze samotný protokol, ale ke správné funkčnosti je třeba také podpora na koncovém zařízení a příslušný software. Pomocí SNMP mohou být sledována rozličná zařízení, od routerů, switchů, IP kamer a IP telefonů až po pracovní stanice a velké servery.
Zařízení používající SNMP se dělí na zařízení monitorovaná a monitorující. Na monitorovaném zařízení běží software nazývaný agent, na monitorujícím zařízení běží manager. Agent a manager mohou běžet i na stejném fyzickém zařízení.
Agent zpřístupňuje informace o konfiguraci, stavu služeb, účtování statistikách atd. skrze proměnné. Struktura dat je definována skrze Management information base (MIB). Jedná se o hierarchický jmenný prostor, kde má každá proměnná své OID. Proměnné mohou managerem být buď čteny nebo modifikovány.
V SNMP mohou probíhat následující typy komunikace:
Následující části zběžně popisují verze SNMP. Nejčastější verze SNMP, se kterými se dnes můžeme setkat jsou v1, v2c a v3, při čemž doporučuji používat v3 kvůli bezpečnosti.
První RFC týkající se protokolu SNMPv1 se objevily v roce 1988. časem došlo k přepsání původních RFC. Aktuální jsou RFC1155, RFC1213 a RFC1157.
SNMPv1 specifikuje následující PDU, které zasílá manager agentovi:
Agent odpovídá pomocí PDU Response, obsahující požadované hodnoty či chybovou zprávu. Může také zaslat PDU Trap, což je nevyžádaná zpráva informující managera o nějakém problému, viz výše.
SNMPv1 se moc neujalo, především kvůli svému špatnému zabezpečení. Community string, vlastně heslo, se zasílalo v nešifrované podobě.
SNMPv2 je definováno v RFC1441 a RFC1452, nicméně RFC je poněkud více, doporučuji se podívat na Wikipedii, viz zdroje. SNMPv2 se snaží zlepšit stabilitu, výkon a bezpečnost. Byl přidán nový GetBulkRequest, který dovoluje managerovi získat od agenta větší množství dat a mít větší kontrolu nad tím, co mu bude agent posílat. Byl také přidán InformResponse, což je vlastně Trap s potvrzením. Hodí se podotknout, že SNMPv2 byl časem nahrazen SNMPv3.
Komunitě se však zdál přístup k řešení bezpečnosti v SNMPv2 příliš komplexní a protokol se příliš neujal. Vzniklo však několik odvozenin:
SNMPv3 je ve výsledku definován v RFC3411 a RFC3418. Staví na SNMPv2 a v podstatě nemění protokol, ale přidává mnoho bezpečnostních prvků včetně zajištění autentizace (MD5, SHA) a šifrování (CBC_DES, CFB_AES_128) či možnosti využívat přenosu skrze SSH nebo TLS/DTLS. Byl přidán také nový Report PDU. IETF jej považuje za internetový standard. Přidává následující bezpečnostní modely:
MIB (Management information base) reprezentuje strukturu dat, ke kterým můžeme přistupovat pomocí SNMP. Data jsou uložena ve stromu. Strom můžeme "adresovat" buď skrze čísla nebo jména. Hlubší zanoření do stromu znamená konkrétnější informace. Např. .1.3.6.1.2.1.1 je číslo identifikující podstrom System, který poskytuje obecné informace o systému jako uptime, jméno atd. Jak je vidět, zanoření je dosti hluboké.
Každý výrobce má přidělenu určitou část podstromu pro poskytování informací o svém hardwaru.
Nejpoužívanější balík programů pro práci s SNMP je balík net-snmp. Obsahuje jednak SNMP démona, dále pak utility, které se chovají tak, jak by název napovídal (viz PDU výše):
Konfigurace démona se provádí skrze konfigurační soubory ve složce /etc/snmp/* nebo /etc/snmpd/* v závislosti na distribuci.
Další nástroj využívající SNMP je MRTG (Multi router traffic grapher), který vykresluje grafy síťového provozu na základě SNMP informací od klientů. Zmiňme také Torrus.
Dalšími monitorovacími nástroji je např. RRDtool (Round robin database tool), který ukládá různé informace o systému do tzv. round robin databáze, která má konstantní velikost (circular buffer). Tento nástroj umožňuje taktéž generování grafů a je více škálovatelný než třeba MRTG. nevyužívá SNMP. Cacti je jeho grafická nadstavba.
Dalším nástrojem je Smokeping, který je taktéž frontend k RRDtool a zaměřuje se na monitorování odezvy sítě. Zmiňme ještě Arpwatch, což je nástroj na monitorování ARP provozu, zaznamenává párování IP adres s MAC adresami a může upozornit na podezřelou aktivitu (nejčastěji MITM).
Kapitolou samou pro sebe jsou pak nástroje pro monitorování síťových služeb jako Nagios či Zabbix. Tyto nástroje většinou nevyužívají SNMP jako primární zdroj informací, ale komunikují přímo s operačním systémem. Oba nástroje nemusí být nainstalovány na stanici, kterou monitorují, používají takové své agenty, kteří provádějí sběr dat a odesílají je na centrální server.
Nagios je nástroj pro komplexní monitorování systémů a sítí. Umožňuje monitorovat síťové služby jako SSH, ping, HTTP, FTP, dále pak různé systémové informace jako zaplnění disků, zatížení procesoru atd. Vše je plně modularizované, takže lze psát vlastní pluginy pro specifická řešení. Nagios umí vykreslovat grafy, či zasílat upozornění na překročení limitů skrze mail, pager, SMS či jinou metodou, která se dá také napsat jako plugin. Informace ukládá v textových souborech a nikoli v databázi, jako třeba Zabbix. Obsahuje webové rozhraní pro správu a procházení statistik.
Zabbix v podstatě umí podobné věci jako Nagios. Podle toho, co jsem četl je komplexnější na konfiguraci. Jako datové úložiště používá databázový backend. Není tolik modulární, pochopil jsem ale, že má více možností, jak udělat monitoring nezávislý na centrálním serveru - data jsou sbírána a ukládány i když centrální server neběží.