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.

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.

Matej Šipkovský

Matej Šipkovský

Spoločnosť NETVEL s.r.o. založil Matej Šipkovský, ktorý sa venuje najmä implementácii sieťových riešení a sieťovej bezpečnosti pre firemných klientov. Študoval na Slovenskej Technickej Univerzite v Bratislave na Fakulte Elektrotechniky a Informatiky odbor Telekomunikácie, kde dokončil inžinierske štúdium. Počas školy získal certifikát Cisco CCNP Routing & Switching a neskôr pribudli certifikácie Cisco Certified Design Professional (CCDP), CCNA Security, AWS Certified Cloud Practitioner, ITILv4 Foundation a Fortinet Network Security Architect NSE7.
Matej Šipkovský

Matej Šipkovský

Spoločnosť NETVEL s.r.o. založil Matej Šipkovský, ktorý sa venuje najmä implementácii sieťových riešení a sieťovej bezpečnosti pre firemných klientov. Študoval na Slovenskej Technickej Univerzite v Bratislave na Fakulte Elektrotechniky a Informatiky odbor Telekomunikácie, kde dokončil inžinierske štúdium. Počas školy získal certifikát Cisco CCNP Routing & Switching a neskôr pribudli certifikácie Cisco Certified Design Professional (CCDP), CCNA Security, AWS Certified Cloud Practitioner, ITILv4 Foundation a Fortinet Network Security Architect NSE7.
Zdieľať príspevok:

Súvisiace príspevky