SNMP – základ monitoringu a návrh vlastného scriptu

SNMP (Simple Network Management Protocol) slúži na výmenu manažmentových informácií medzi sieťovými zariadeniami. Je základom mnohých monitorovacích systémov, alebo scriptov. Ukážeme si, ako napísať vlastný script na monitorovanie trafficu, CPU, rôznych errorov na portoch, alebo čohokoľvek iného.

SNMP

Architektúra

SNMP je extrémne široko využívaný protokol na monitoring a beží v každej profesionálnej sieti. Architektúra sa skladá zo zariadení, ktoré si pýtajú informácie (SNMP manager) a zo zariadení, ktorých sa dopytujeme (SNMP Agent).

Management Information Base (MIB)

MIB je hierarchická štruktúra objektových identifikátorov (OID). Tieto identifikátory označujú premenné, kde sa nachádzajú informácie, ktoré chceme zo zariadenia získať. Napríklad, existuje OID pre uptime zariadenia, OID pre verziu operačného systému, alebo OID pre počítadlo trafficu. Hodnoty OID nájdeme napríklad tu.

20 užitočných OID

ObjektOID
Sysname1.3.6.1.2.1.1.5
Uptime1.3.6.1.2.1.1.3
Cisco model1.3.6.1.2.1.47.1.1.1.1.13.1
IOS1.3.6.1.4.1.9.3.6.5
SN1.3.6.1.2.1.47.1.1.1.1.11.1
CPU 5sec1.3.6.1.4.1.9.9.109.1.1.1.1.3
CPU 1min1.3.6.1.4.1.9.9.109.1.1.1.1.4
CPU 5min1.3.6.1.4.1.9.9.109.1.1.1.1.5
Input Octets1.3.6.1.2.1.2.2.1.10
Output Octets1.3.6.1.2.1.2.2.1.16
Input Errors1.3.6.1.2.1.2.2.1.14
Output Errors1.3.6.1.2.1.2.2.1.20
PPS IN1.3.6.1.4.1.9.2.2.1.1.7
PPS OUT1.3.6.1.4.1.9.2.2.1.1.9
Collisions1.3.6.1.4.1.9.2.2.1.1.25
Output Drops1.3.6.1.4.1.9.2.2.1.1.27
Interface description1.3.6.1.2.1.2.2.1.2
Speed1.3.6.1.2.1.31.1.1.1.15
Duplex1.3.6.1.2.1.10.7.2.1.19
Interface Admin Status1.3.6.1.2.1.2.2.1.7

Konfigurácia SNMP agenta na Cisco zariadeniach

Základná konfigurácia Cisco zariadenia, aby nám odpovedalo na requesty, môžete vidieť nižšie. Vytvoríme ACL, kde filtrujeme IP adresy, ktorým chceme odpovedať. Následne definujeme komunitu (v tomto prípade má názov “netvel”) a režim, v akom má pracovať, v tomto prípade RO (Read Only).

R1-NETVEL(config)#access-list 10 remark SNMP
R1-NETVEL(config)#access-list 10 permit 172.16.0.0 0.0.255.255

R1-NETVEL(config)#snmp-server community netvel RO 10

Najbezpečnejšie by bolo použitie SNMPv3, čo je verzia, ktorá ponúka šifrovanie prenášaných údajov, ale pre jednoduchosť budeme používať verziu v2c. Ďalšie podrobnosti ohľadne konfigurácie Cisco zariadenia nájdete tu.

Inštalácia servera a príkazy

SNMP manager si rozbehneme na Linuxovej distribúcii Ubuntu 16.04, rovnako ako v predošlých návodoch.

root@netvel:/# apt-get install snmp

Existuje viacero zaujímavých príkazov, ale pre jednoduchosť si ukážeme, ako funguje najjednoduchší dopytovací príkaz SNMPGET. Má nasledovný formát:

#snmpget -v2c -c [komunita] [IP adresa] [OID]

V príklade vidíme prepínače -v2c, čo určuje verziu protokolu a -c, čo hovorí o tom, že nasleduje názov komunity, v tomto prípade “netvel”. Nasleduje IP adresa routra 172.16.80.1, ktorého sa dopytujeme  a OID, ktoré nás zaujíma. V tomto prípade sa pýtame na model routra (1.3.6.1.2.1.47.1.1.1.1.13.1).

Písanie vlastného scriptu

Ukážeme si jednoduchý script v jazyku Bash. Povedzme, že potrebujeme zistiť, aké modely routrov máme v sieti.

Postup

  1. Vytvoríme si textový súbor so zoznamom IP adries s názvom zoznamip.txt .
  2. Vytvoríme si textový súbor s názvom script.sh , kde skopírujeme kód uvedený nižšie a dáme mu práva na spúšťanie.
  3. Ak sa nachádzame v aktuálnom priečinku, script spustíme príkazom ./script.sh

SNMP script

Popis

Po spustení si script si do premennej “community” načíta názov komunity a spočíta položky v zozname IP adries. Nasleduje while cyklus, ktorý pomocou SNMPGET načítava a zároveň vypisuje požadované hodnoty v požadovanom tvare.


#!/bin/bash
 
i=1;
community=netvel;
pocetip=$(wc -l < zoznamip.txt);
 
while [ $i -le $pocetip ]
do
 IP=$(sed ''$i'q;d' zoznamip.txt);
 MODEL=$(snmpget -c $community -v2c $IP 1.3.6.1.2.1.47.1.1.1.1.13.1 | awk -F'STRING: ' '{print $2}' | cut -d'"' -f 2)
 echo "$IP $MODEL";
 
 i=$[ $i + 1 ];
done

Týmto spôsobom vieme naprogramovať ľubovoľne komplexný script. Ak by sme napríklad chceli vytvoriť script pre monitoring trafficu na rozhraniach routra, museli by sme robiť ešte dodatočné matematické operácie s načítanými hodnotami, ale princíp zostane zachovaný, ako pri tejto ukážke.

 

Ak vás tento článok zaujal a chcete dostávať mailovú notifikáciu, pri publikovaní podobných článkov o hackingu, sieťovej bezpečnosti, Linux serveroch, Cisco zariadeniach, či o programovaní, môžete sa prihlásiť na odber článkov.

 

CHCEM ODOBERAŤ ČLÁNKY

 

1 thought on “SNMP – základ monitoringu a návrh vlastného scriptu

  1. […] SNMP – Simple Network Management Protocol […]

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Táto webová stránka používa Akismet na redukciu spamu. Získajte viac informácií o tom, ako sú vaše údaje z komentárov spracovávané.