Kategória: Linux a sieť

Zmenené: 25. november 2010

Sieť po sieti – začíname

Po naozaj veľmi krátkom a zjednodušenom úvode do problematiky SNMP sa možno pustiť do inštalácie a prvotného nastavenia. Popíšem čo všetko nainštalovať a nastaviť tak, aby bolo možné používať protokol SNMP na zber dát po sieti.

Inštalácia

Bez dlhých úvodov rovno k veci. Základná inštalácia pozostáva z nainštalovania dvoch balíkov, balík snmp obsahuje nástroje (klientov) príkazového na prácu s protokolom SNMP a balík snmpd, ktorý obsahuje sieťového démona:

aptitude install snmpd snmp

Vhodné, nie však potrebné, je nainštalovať aj databázy MIB, avšak Debian neobsahuje samotné databázy, ale poskytuje ich inštalátor, ktorý ich stiahne a nainštaluje:

aptitude installsnmp-mibs-downloader

Varovanie

Balík snmp-mibs-downloader je v sekcii non-free, preto si ju nezabudnite pridať do /etc/apt/sources.list. Súbory MIB boli z balíka odstránené od verzie 5.4.2.1 a od 5.4.2.1~dfsg-4 aj ich sťahovanie.

Inštalátor súbory stiahne, spracuje a nainštaluje na správne miesto, predvolene je však ich použitie v nastavení vypnuté. Zapnúť ich treba na dvoch miestach. Jedno miesto je pre klientov, a to v súbore /etc/snmp/snmp.conf, kde treba zakomentovať (pridať na začiatok riadku znak #) riadok:

#mibs :

Druhé je pre agenta v súbore /etc/default/snmpd, kde treba tiež zakomentovať jeden riadok:

#export MIBS=

Ak bude niekedy v budúcnosti potrebné súbory MIB obnoviť, možno do zaistiť spustením príkazu download-mib:

download-mibs
download-mibs iana

Overenie funkčnosti nainštalovaného démona a databáz MIB po inštalácii (s východzím nastavením) možno pomocou príkazu:

snmpwalk -Os -cpublic -v1 localhost

Autentifikácia

Po nainštalovaní je síce démon pripravený pracovať, ale načúva iba na lokálnom rozhraní (loopback) a nemá vytvorených používateľov SNMP verzie 3. Vrelo odporúčam najprv nastaviť autentifikáciu a až potom zmeniť nastavenie démona tak, aby bol prístupný zo siete.

Nastavenie práv

Práva možno nastaviť v podstate dvomi spôsobmi. Prvý je jednoduchý, druhý komplexný. Jednoduchý spôsob postačuje na vzdialené monitorovanie a zachováva rozumný pomer medzi bezpečnosťou a zložitosťou. Komplexné nastavenie poskytuje detailné nastavenie práv a je vhodné najmä v prípade rozsiahlych sietí, ktoré spravuje viac operátorov, ktorým treba prideľovať rôzne úrovne prístupu.

Podľa tohoto návodu si nastavíte práva na prístup všetkými tromi verziami protokolu a všetky len na čítanie, pričom pomocou verrzií 1 a 2 bude poskytovaná obmedzená množina informácií a pomocou šifrovaného spojenia vo verzii 3 bude k dispozícii úplná množina, ale samozrejme chránená menom používateľa a heslom.

SNMP v1/v2

Nastavenie prístupu vo verzii 1 a 2 sa robí pomocou tzv. komunitného (community) reťazca. Keďže prenos v týchto verziách nie je šifrovaný, je zmena predvolených reťazcov (public a private) síce správnou, ale málo účinnou voľbou. Aj z tohoto dôvodu bude používateľom prostredníctvom týchto dvoch verzií poskytnutá len obmedzená časť stromu a aj táto len na čítanie.

Začnem definíciou pohľadu, teda rozsahu, ktorý bude prístupný:

view    systemonly    included    .1.3.6.1.2.1.1
view    systemonly    included    .1.3.6.1.2.1.25.1

Pohľad je nazvaný systemonly a poskytuje len vetvy 1.3.6.1.2.1.1 a 1.3.6.1.2.1.25.1 . Po definícii pohľadu možno použiť meno pohľadu v definícii reťazca community :

rocommunity    public    default    -V systemonly

Direktíva rocomunity udáva, že komunitný reťazce public povoľuje prístup len na čítanie. Slovo default možno nahradiť konkrétnou IP adresou (stroja alebo siete), z ktorých bude povolená komunikácia, no a na konci je odkaz na predtým vytvorený pohľad. Ak nechcete obmedzovať poskytovaný rozsah informácií, pokojne vynechajte časť za default. Nebojte sa tiež zameniť reťazec public za niečo celkom iné, prípadne si vytvorte takýchto reťazcov viac…

Prípadne si môžete vytvoriť aj komunitný reťazec s právom zápisu, a to pomocou direktívy rwcommunity, ktorej zápis je inak celkom rovnaký, ako pre reťazec len na čítanie.

Pohľadov si môžete vytvoriť podľa ľúbosti, prípadne môžete ich nastavenie (-V meno_pohľadu) v definícii komunitného reťazca nahradiť konkrétnym OID.

Overenie funkčnosti

Po nastavení komunitných reťazcov možno vyskúšať prístup (zatiaľ len z localhost) napr. pomocou:

snmpwalk -v2c -cpublic localhost

Ak všetko funguje ako má, tento príkaz musí mať za následok výpis jednotlivých OID.

SNMP v3

Nastavenie prístupových práv v tejto verzie je trochu prácnejšie, pretože treba vykonať dva kroky, nastaviť práva a vytvoriť používateľov.

Nastavenie práv je veľmi podobné postupu vo verzii 1/2, len namiesto direktív rocommunity/rwcommunity treba použiť direktívy rouser/rwuser. Pribudol však jeden voliteľný parameter, a to nastavenie úrovne autentifikácie. Ak túto úroveň vynecháte, predvolene je použitá autentifikácia (auth), ďalšími možnosťami sú bez autentifikácie (noauth) a šifrované prihlásenie (priv), aby ste na tento parameter nezabudli, použite ho radšej vždy.

Takže nasatvenie troch používateľov, jedného bez prihlasovania, s rovnakým obmedzením prístupu ako s verziou protokolu 1/2, nazvaného userNoAuth, druhého so zapnutou autorizáciou, nazvaného userAuth a posledného s šifrovaným prihlásením, nazvaného userPriv, zaistia tieto direktívy:

rouser  userNoAth    noauth    -V systemonly
rouser  userAuth     auth
rouser  userPriv     priv
Vytvorenie používateľov

Na rozdiel od verzie 1 a 2, takéto nastavenie používateľov nestačí, ale určuje len ich oprávnenia. Aby ste sa však mohli ako taký používateľ prihlásiť, treba ich v SNMPd vytvoriť. V podstate existujú tri možnosti vytvorenia používateľa:

  • direktívou createUser;
  • nástrojom net-snmp-config –create-snmpv3-user alebo
  • nástrojom snmpusm create.

Jedine posledný menovaný možno použiť pri spustenom serveri snmpd, ostatné dva pri vypnutom. Keďže ukážkový konfiguračný súbor /etc/snmp/snmpd.conf spomína práve direktívu createUser, vysvetlím postup pomocou nej. Začnite tým, že zastavíte server:

invoke-rc.d snmpd stop

Po zastavení servera nasleduje pridanie direktívy do konfigurácie, ale na rozdiel od ostatných konfiguračných direktív, táto nepatrí do štandardného konfiguračného súboru, ale do súboru /var/lib/snmp/snmpd.conf. Otvorte si teda tento súbor (na jeho začiatku sa dočítate, že je automaticky generovaný) a pridajte do neho riadky, ktoré vytvárajú našich troch používateľov:

createUser userNoAuth    MD5 "heslo1"
createUser userAuth      MD5 "heslo2"
createUser userPriv      MD5 "heslo3" DES "heslo4"

Tip

Pozor, aj používateľovi bez autentifikácie je potrebné zadať heslo, inak nebude vytvorený!!!

Rada

Bezpečnostnú frázu za DES u šifrovaného prihlásenia možno vynechať, potom bude použité rovnaké heslo pre obe overenia.

Po pridaní týchto direktív možno server znova spustiť:

invoke-rc.d snmpd start

Každé heslo musí byť aspoň osem znakov dlhé, inak server odmietne používateľa vytvoriť, čo môžete zistiť zo systémového záznamu (/var/log/syslog), napr:

Nov 19 11:30:27 debserver snmpd[2796]: /var/lib/snmp/snmpd.conf: line 19: Error: could not generate the authentication key from the supplied pass phrase.

Ak všetko dobre dopadlo, tak po spustení servera sú pridané direktívy createUser odstránené a nahradené riadkami začínajúcimi na usmUser. Ak je niekde chyba, tak sú riadky createUser odstránené i tak, ale nie sú vytvorené príslušné položky usmUser.

Tip

Ak budete robiť viaceré pokusy a budete sa pokúšať pridať používateľa opakovane, ale napr. s iným heslom, nebude to fungovať, pomôže však zmazať spomínané riadky usmUser samozrejme pri zastavenom serveri.

Overenie funkčnosti

Na rozdiel od verzie 1/2, je príkaz trochu zložitejší, pretože je potrebné zadať meno používateľa a typ autentifikácie. V závislosti od typu autentifikácie je potom potrebné zadať ešte ďalšie prípadné parametre. Príklady pre všetkých troch používateľov potom môžu vyzerať takto:

snmpwalk -v3 -u userNoAuth -l noAuthNoPriv localhost
snmpwalk -v3 -u userAuth -a MD5 -A heslo2 -l authNoPriv localhost
snmpwalk -v3 -u userAuth -a MD5 -A heslo3 -x DES -X heslo4 -l authPriv localhost

Systémové informácie

Po nastavení práv používateľov a ich príapdnom vytvorení je ešte dobré nastaviť základné systémové informácie, a to direktívy sysLocation a sysContact, teda kde sa systém nachádza a koho kontaktovať v prípade problémov:

sysLocation Chodba, prvé poschodie
sysContact Slavko <emailová_adresa>

Tieto dve direktívy sú len informačné a sú nastaviteľné aj vzdialene cez SNMP, avšak len do chvíle kým si ich nenastavíte v konfigurácii.

Sprístupnenie v sieti

Ako som spomínal, predvolene je démon snmpd nastavený tak, že prijíma iba lokálne požiadavky. Po nastavení používateľov ho však možno pokojne nastaviť tak, aby slúžil svojmu účelu, a teda bol prístupný zo siete. K tomuto je určená direktíva agentAddress. Hodnotu tejto direktívy možno nastaviť tak, že bude prijímať požiadavky iba na konkrétnej IP adrese, alebo na všetkých IP adresách. Môžete mu nastaviť číslo portu (predvolene 161) a dokonca aj transportný protokol (predvolene UDP). Aby teda agent prijímal požiadavky na všetkých adresách a na UDP porte 161 stačí agentAddress nastaviť takto:

agentAddress udp:161,udp6:[::1]:161

Ak chcete aby komunikoval prostredníctvom TCP, použite takéto nastavenie:

agentAddress tcp:161,tcp6:[::1]:161

Ak nechcete alebo nepotrebujete aby používal protokol IPv6, nepridávajte voľbu udp6, resp. tcp6. Teraz môžete démona reštartovať, prípadne otvoriť príslušný port vo firewalle a vzdialene monitorovať svoj systém po sieti.

Záver

Na záver len spomeniem, že napriek tomu, že vzorový konfiguračný súbor, ktorý je nainštalovaný spolu so serverom obsahuje ešte kopu ďalších konfiguračných volieb, na základné fungovanie vzdialeného monitorovania plne stačia tie, ktoré som spomenul v tomto článku a ostatné môžete s pokojným srdcom vymazať. Odporúčam však zachovať si kópiu, pre prípad, že niekedy v budúcnosti budete chcieť z protokolu SNMP a jeho agenta snmpd dostať viac…

Rada

A celkom na záver malá rada ohľadom snmpwalk jeho manuálová stránka je pomerne skromná, ak potrebujete čítať viac, spusťte ho s parametrom –help