Raalprojekteerimine
Euroopa struktuurfondide logo
Automatiseerimise viide Mehhatroonikaseadmete viide Pneumoautomaatika viide Siemens LOGO! viide Siemens S7-1200 viide

VÕRGUD

Lihtne võrguhaldusprotokoll SNMP

SNMP olemus

Vajadus jälgida võrgukoormust ja seadmete konfiguratsiooniandmeid tõstatab vajaduse andmekogumise tarbeks vajalike protokollide defineerimiseks.

SNMP (Simple Network Management Protocol) on võrguhaldusprotokoll, mis koosneb komplektist operatsioonidest, mis võimaldavad administraatoritel muuta või kontrollida võrguseadmete parameetreid. Näiteks võib administrator kasutada SNMP'd et lülitada välja marsruuteri võrguliides või tuvastada selle töökiirust. SNMP eelkäijaks oli SGMP (Simple Gateway Monitoring Protocol). Viimase puhul oli tegemist protokolliga marsruuterite haldamiseks. Põhjused, miks just SGMP aluseks valiti olid:

  • Vähendada agentide fuktsioonide keerukust, mis omakorda vähendab tarkvaraarenduskulu, teeb võimalikuks sama tehnoloogiat rakendada eri seadmetel ja tagab lihtsa funktsioonide laiendatavuse ilma vajaduseta agente otseselt muuta.
  • Infomõõdikute lihtne lisamise võimalus
  • Sõltumatus spetsiifilisest võrguarhitektuurist
  • Ühenduseta võrguprotokolli toetus kiireks infovahetuseks
  • Sõltumatus teistest võrguteenustest

IETF (Internet Engineering Task Force) on vastutav organisatsioon, kes defineerib võrgustandardeid ja sealhulgas SNMP. See organisatsioon publitseerib RFC (Request for Comments) dokumendid, mis on spetsifikatsiooniks paljudele protokollidele, mis eksisteerivad IP sfääris: http://www.ietf.org/rfc.html

Dokumendid liiguvad kavandi staatusest kuni kinnitatud staatusesse, saades nii standardi staatuse.
SNMP erinevad versioonid on:

  • SNMP Versioon 1 (SNMPv1) on esialgne versioon SNMP protokollist. Seda defineerib RFC 1157. SNMPv1 turvalisus baseerub kogukondadel. Kogukondi on kolm: jälgimine (lubatud ainult lugemisoperatsioon), juhtimine (lubatud lugemis- ja kirjutamisoperatisoon) ja Trap (ainult katkestuste edastamise õigus). Parool edastatakse krüpteerimata kujul. Tegemist on standardiga, mida paljud seadmetootjad rakendavad.
  • SNMP Versioon 2 (SNMPv2) on viidatud kui kogukonna-stringi-baasil SNMPv2. Tehniliselt on selle versioon SNMPv2c. Seda defineerib RFC 3416, RFC 3417 ja RFC 3418.
  • SNMP Versioon 3 (SNMPv3) on kõige viimasem SNMP versioon. Selle peamine erinevus eelmistega on võrguhalduse turvalisus.Ta lisab tugeva autentimise võimaluse ja krüpteeritud ühenduse haldusüksuste vahel. Selle standardi defineerivad järgmised dokumendid: RFC 3410 kuni RFC 3418 ja RFC 2576.

SNMP põhiüksused on haldurid ja agendid.

Haldur on server, millel töötab teatud liiki tarkvarasüsteem, mis suudab läbi viia võrguhaldusülesandeid. Halduritele viidatakse sageli kui võrguhalduskeskustele (NMS - Network Management Station). NMS võtab vahetab infot (Poll) ja võtab vastu katkestusi (Trap) agentidelt. Poll on võrguterminoloogias agendile infopäringu saatmine. Kogutud infot saab kasutada võrguprobleemide lahendamisel.

Trap on meetod kuidas agent saab teatada NMS'ile häireolukorrast. Trap'e saadetakse asünkroonselt, mitte vastuseks halduri päringule. Haldur otsustab, mis saadetud info peale edasi teha. Näiteks kui internetiühendus katkeb võib marsruuter saata selle kohta Trap teate haldurile ja haldur saadab selle peale sõnumi (SMS, e-post, jne.) administraatorile.
Agent on tarkvaraprogramm, mis töötab hallataval võrguseadmel. See võib olla eraldi rakendus või võib see olla integreeritud operatsioonisüsteemi (näiteks marsruuteri või UPS'i püsivarasse).
Poll ja Trap võivad toimuda samaaegselt

Haldusinfostruktuur (SMI - Structure of Management Information) võimaldab defineerida hallatavad objektid ja nende käitumise.Agendil on tema valduses objektide kogum, mida ta jälgib. Üks selline objekt on marsruuteri tööseisund. Objektide nimekiri defineerib selle info, mida NMS saab kasutada, et tuvastada seadme tervislik seisund, millel agent töötab.

Haldusinfo andmebaas (MIB -Management Information Base) on hallatavate objektide andmebaas, mida agent jälgib. Erinevat liiki staatuse ja statistikainfo, mida NMS saab kasutada, on defineeritud MIB'is. Kui SMI võimaldab defineerida hallatavad objektid siis MIB on konkreetse objekti defineering kasutades SMI süntaksit. Igal võrguseadmel on oma lokaalne MIB, kus salvestuvad seadmega seotud andmed.

Agent võib kasutusele võtta mitu MIB'i aga kõik agendid kasutavad üht spetsiifilist MIB'i, mida nimetatakse MIB-II (RFC 1213). See standard defineerib muutujad sellistele mõõdikutele nagu võrguliidese statistika ja muudele süsteemiga seotud parameetritele. Peamine eesmärk MIB-II'l on varustada võrguhaldust seadmete infoga ja see ei kata kõiki seadme spetsiifilisi haldusvõimalusi.

Eraldi spetsiifiliste seadmete (ATM, FDDI, jne) ja teenuste (e-post, DNS, jne) haldamiseks ja info kogumiseks on defineritud oma MIB'id ja vastavad RFC'd on näiteks:

  • ATM MIB - RFC 2515
  • Frame Relay DTE Interface Type MIB - RFC 2115
  • RADIUS Authentication Server MIB - RFC 2619
  • DNS server MIB - RFC 1611

Võrguseadmete tootjatel on õigus defineerida oma MIB'id oma kasutuseks. Näiteks uue marsruuteri agent võib kasutada MIB-II standardis defineeritud muutujaid ja tõenäoliselt kasutab ta MIB'e vastavalt kasutatavatele võrguliideste tüüpidele ning lisaks võib marsruuter sisaldada uusi omadusi, mida saab jälgida aga mis ei ole kaetud standardses MIB'is. Seega saab seadme tootja defineerida oma MIB'i, mis defineerib seadme spetsiifilised objektid.

MIB'i kasutamiseks koos võrguhaldussüsteemiga peab agent vastavat MIB'i toetama. Seega on mõtekas laadida haldurisse vaid need MIB'id, mis on agentide poolt toetatud.

Hallatavad objektid on organiseeritud puukujulisse hierarhiasse. Sellel struktuuril baseerub SNMP nimeskeem. Igal objektil oma OID identifikaator, mis unikaalselt defineerib hallatava objekti. Nimed on esitatud kahel kujul: numbriliselt ja inimese poolt loetavas formaadis. Mõlemal juhul on tegemist pikkade ja ebamugavate nimedega ning SNMP rakenduse arendusel on vaja arvestada kuidas esitada nimeruumis navigeerimine kasutajatele mugavalt.

Objekti ID koosneb täisarvude seeriatest, vastavalt puu hargnemisele ja on eraldatud punktidega. Inimese poolt loetav kuju on nimede seeriad, mis eraldatud punktidega.

SNMP teenused

SNMP teateid infokogumiseks vahendatakse andmeühikutega PDU (Protocol Data Unit) formaadis. Igal allpoolloetletud SNMP operatsioonil on standardne PDU formaat:

  • Get
  • GetNext
  • GetBulk (SNMPv2 ja SNMPv3)
  • Set
  • GetResponse
  • Trap
  • Notification (SNMPv2 ja SNMPv3)
  • Inform (SNMPv2 ja SNMPv3)
  • Report (SNMPv2 ja SNMPv3)

Joonis 5.34. SNMP operatsioonid [9]

Get päring on algatatud NMS'i poolt, mis saadab selle päringu agendile. Agent võtab päringu vastu ja töötleb seda.Agent saadab päringule vastuse kasutades Getresponse operatsiooni ja NMS töötleb saabunud andmed. Üks osa Get päringust on muutuja, millega defineeritakse MIB objekt, mida päringu saatja teada soovib. Muutuja on seotud OID nimega.
GetNext operatsioon võimaldab edastada käskude jada, et seadmeltkätte saada grupp erinevadi muutujaid. GetResponse vastab päringutele.
GetBulk võimaldab kohale tõmmata suuremaid tabelisektsioone korraga.
SetRequest teade saadetakse agentidele, et luua, salvestada või muuta mingit väärtust. Agent vastab Response teadetega.
Agentidele saadetud päringute protsessimise staatusest annavad tagasisidet veateated vastavate koodidega.
Trap abil saab agent teatada NMS'i häireolukorrast. Näiteks võivad Trap teated sisaldada eeldefineeritud infot:

  • Külm start (Cold Start) - hallatav seade taaskäivitus, mis võib kasa tuua seadme ümberkonfigurerimise
  • Kuum start (Warm Start) - hallatav seade tegi taaskäivituse ilma alglaadimiseta
  • Ühendus puudub (Link Down) - üks võrguliides ei tööta
  • Ühendus olemas (Link Up) - liides on veaolukorrast taastunud
  • Autentimisviga (AuthenticationFailure) - tööjaam üritab seadmega ühenduda aga ei suuda korrektselt autentida

SNMP Notification on standardiseeritud Trap tagasiside PDU vorming.
SNMP Inform on kinnitus Trap teate vastuvõtmisest.
SNMP Report on SNMP sõnumitöötluse häiretega seotud info vahetamiseks.

SNMP piirangud

SNMP algversiooni puudusteks võib loetleda:

  • Sõnumivahetuse tagasisidekinnituse probleemid Trap alarmide puhul kuna kasutab transpordiks UDP ühenduseta protokolli
  • Üleliigne võrgukoormus, mis tuleneb sõnumivahetusest agentide ja haldurite vahel
  • Puudulik turvalisus autentimisel ja krüpteerimisvõimaluste puudumine. Autentimine SNMPv1 ja SNMPv2 versioonides toimub krüpteerimata parooli abil, mis saadetakse agendi ja halduri vahel. Sel kujul võib pahatahtlik kasutaja parooli pealt kuulata ja hiljem kasutada seda seadme poole pöördumiseks ja selle info lugemiseks või seadme ümberkonfigureerimiseks.

Joonis 5.35. SNMP sõnumivahetuse teekond [9]

Probleemidele pakuvad lahendusi versiooniuuendused SNMPv2 ja SNMPv3.
SNMPv2 toob kasutusele haldusinfostruktuuri (SMI) mõiste, millest oli juttu eespool ja mis aitab paremini struktureerida SNMP objekte erinevate tootjate poolt.
SNMPv2 toob sisse ka jagatud arhitektuuriga võrguhalduse mõiste, mille puhul on võrguhalduses rohkem kui üks halduri funktsiooni täitev üksus ja see võimaldab laiendatud võrguhaldust, mis võimaldab omakorda halduse liiasust (redundancy) ja balansseeritud ülesannete jaotust. SNMPv2 puhul saab kasutada tsentraliseeritud võrguhaldust koos jagatud võrguhaldusega. Eksisteerivad süsteemid, mis võivad täita nii agendi kui ka halduri rolli. Praktikas tähendab see seda, et agent võib toimida nii NMS päringule vastamisega kui ka vahendada päringuid, mis edastatud teistele seadmetele.

Joonis 5.36. SNMPv2 arhitektuur [9]

NMS võib nõuda agendilt andmete pärimist teise süsteemi MIB'ist. Sellisel juhul vahendab agent teise süsteemi andmed, võttes endale ajutiselt halduri rolli.Sõnumivahetused on topelt küsimuse/vastuse vormis ja ei vaja ühendusega protokolli.
SNMPv2 defineerib ka uued sõnumivahetusoperatsioonid: GetBulk, Notification, Inform ja Report (vt. eespool sõnumite selgitust).

SNMPv2

Joonis 5.37. PDU formaat erinevatele päringutele [9]

Sõnumite vastustes on defineeritud veakoodid, mis annavad teada pärinu protsessimise staatusest. GetBulk lahendab probleemi suurte andmemassiivide edastamiseks.

SNMPv3 lahendab turvalisusega seotud probleeme, mis on SNMP protokolli suurim nõrkus alates protokolli loomisest, tuues juurde kolm võtmeteenust: autentimine, konfidentsiaalsus ja juurdepääsukontroll. Enne SNMPv3 kasutuselevõttu oli SNMP protokoll pigem seadmetelt info kogumiseks kui seadmete konfigureerimiseks, sest puudu jäi turvalisusest. SNMPv3 muudab ka defineeringut halduritele ja agentidele -mõlemad on nüüd defineeritud SNMP üksusteks (SNMP entities). Iga üksus sisaldab SNMP töötlusseadme ja ühe või rohkem rakendust. Sellega seoses on muutunud ka kogu arhitektuuri definitsioon. See definitsioon võimaldab eraldada erinevad SNMP süsteemi osad tehes nii turvalisuse rakendamise võimalikuks.

SNMPv3 töötlusplokk sisaldab järgmisi mooduleid:

  • Dispetšer (Dispatcher) , mille töö on saata ja vastuvõtta sõnumeid, tuvastada nende versioon ja edastada sõnumitöötlusmoodulile. Dispetšer saadab ka SNMP sõnumeid teistele üksustele.
  • Sõnumitöötlusmoodul (Message Processing Subsystem) valmistab sõnumid ette saatmiseks ja eraldab vastuvõetud sõnumist andmed. See moodul võib sisaldada eraldi töötlemismooduleid eri versioonide jaoks.
  • Turvamoodul (Security Subsystem) pakub autentimis ja privaatsusteenuseid. Autentimine kasutab kas kogukonna paroole (SNMPv1 ja SNMPv2) või SNMPv3 kasutajapõhist autentimist.Viimane kasutab MD5 ja SHA algoritme kasutajate autentimiseks. Privaatsusteenus kasutab DES algoritmi et krüpteerida ja dekrüpteerida SNMP sõnumid.
  • Juurdepääsukontrollimoodul (Access Control Subsystem) kontrollib juurdepääsu MIB objektidele. Võimalik on seadistada,mis kasutajad milliseid objekte näevad ja milliseid operatsioone nad saavad objektidega teha.

SNMP rakendused:

  • käsu generaator (Command generator) - genereerib get, getnext, getbulk ja set päringuid ja töötleb vastuseid. Seda rakendust kasutab NMS päringute saatmiseks seadmetele.
  • Käsule vastaja (Command responder) - vastab käsu generaatori päringutele. Seda rolli täidab SNMPv1 ja SNMPv2 puhul agent ja SNMPv3 puhul seadme vastav üksus.
  • Teate saatja (Notification originator) - genereerib SNMP trap'e ja teateid. Seda viib läbi seadmel rakendatud üksus
  • Teate vastuvõtja (Notification receiver) - Võtab vastu trap'e ja inform sõnumeid. Seda kasutab NMS.
  • Puhvri vahendaja (Proxy forwarder) - aitab edastada sõnumeid üksuste vahel.

Untitled-13 copy

Joonis 5.38. SNMPv3 arhitektuur [9]

PDU sõnum, mida genereerib SNMP rakendus läbib SNMPv3 töötlusmooduli, mis koosneb dispetšerist, sõnumitöötlusmoodulist, turvamoodulist ja juurdepääsumoodulist

SNMPv3 turvasüsteemi autentimismehhanism kontrollib vastuvõetud sõnumi saaja autentsust. Sellega tagatakse, et sõnumit ei ole muudetud, viivitatud või korratud ülekandel. Selle saavutamiseks kombineerib SNMP räsifunktsiooni salajase võtmega vastavalt HMAC (Hashed Message Authentication Code) lähenemisele. Autentimiseks luuakse räsi MD5 ja SHA1 algoritmidega ja kasutades HMAC algoritmi arvutatakse sõnumi räsi. Autentimise salasõna või salajane võti lisatakse andmetele enne räsi arvutamist. Salajane võti peab olema teada saatjale ja vastuvõtjale ja peab olema vähemalt 8 tähemärki pikk.
Andmete krüpteerimine tehakse CBS-DES algoritmiga ja krüpteerimise läbiviimiseks peavad saatja ja vastuvõtja teadme salajast võtit.Võti salvestatakse seadme tabelis, mida nimetatakse USM kasutaja tabel (USM User Table). Viimane salvestab kõik kasutajad, kellel on juurdepääs süsteemile SNMP kaudu. Seal sisalduvad järgmised elemendid: kasutaja nimi, autentimisprotokoll, autentimisvõti, privaatsusprotokoll, privaatsusvõti.

Creative Commons Licence
"Raalprojekteerimine" by Eduard Brindfeldt and Urmo Lepiksoo is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Estonia License .