03. [15p] Configurare server SNMP pe echipamente CISCO

Folosind soluția de jurnalizare remote, în cazul în care dorim să monitorizăm lucruri diferite, trebuie sa realizăm configurații diferite pe fiecare stație monitorizata, fiind o soluție one-way (client către server).

O alternativa este activarea serviciului de SNMP (Simple Network Management Protocol) pe fiecare dispozitiv monitorizat. SNMP este implementat în majoritatea echipamentelor de rețea și expune informații despre toate subsistemele unui dispozitiv (utilizare procesor, memorie, număr de interfețe, număr de pachete pe fiecare interfață, etc.). Interogarea fiecarui dispozitiv se va face centralizat de către stația de management, în cazul nostru stația monitor.

Protocolul SNMP a evoluat trecând prin mai multe versiuni. Cele mai folosite în ziua de astăzi sunt versiunile 2c și 3.

Versiunea 2c nu dispune de criptarea datelor (trimite parola în clar) și este folosită în general în rețelele interne cu circuit închis. ce poartă adesea numele de rețea de management. Implementarea se realizeaza printr-un VLAN de management, unde numai echipamentele și stația de monitorizare au acces (nu există trafic de date public).

Versiunea 3 dispune de autentificare pe bază de utilizator și parolă și asigură criptarea datelor. Este folosită în general peste rețelele publice.

În continuare vom configura versiunea 2c a protocolului. Pentru a funcționa, versiunea 2c are nevoie de un community string - un șir de caractere ce este partajat între server și client (acea parolă care se trimite în clar).

Pe un router Cisco, community string-ul se definește din modul global de configurare (în cazul nostru, parola va fi public):

R1(config)#snmp-server community public ro

Cuvântul cheie ro ce apare după community-ul public specifică faptul că folosind acest community se pot realiza doar operații read-only. Pentru securitate crescută, în general vom păstra atributul ro dacă vom face doar monitorizare.

Pentru a testa funcționalitatea vom folosi utilitarul snmpwalk de pe stația monitor. Acesta întoarce toate proprietățile pe care protocolul SNMP le expune pe un echipament:

root@monitor:~# snmpwalk -v2c -c public 192.168.1.1
iso.3.6.1.2.1.1.1.0 = STRING: "Cisco IOS Software, 3600 Software (C3640-JS-M), Version 12.4(12), RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2006 by Cisco Systems, Inc.
Compiled Fri 17-Nov-06 13:59 by prod_rel_team"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.9.1.110
iso.3.6.1.2.1.1.3.0 = Timeticks: (1242819) 3:27:08.19
iso.3.6.1.2.1.1.4.0 = ""
iso.3.6.1.2.1.1.5.0 = STRING: "R1"
iso.3.6.1.2.1.2.2.1.1.1 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.1.3 = INTEGER: 3
iso.3.6.1.2.1.2.2.1.2.1 = STRING: "FastEthernet0/0"
iso.3.6.1.2.1.2.2.1.2.3 = STRING: "Null0"
iso.3.6.1.2.1.2.2.1.3.1 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.3.3 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.4.1 = INTEGER: 1500
iso.3.6.1.2.1.2.2.1.4.3 = INTEGER: 1500
iso.3.6.1.2.1.2.2.1.5.1 = Gauge32: 100000000
iso.3.6.1.2.1.2.2.1.5.3 = Gauge32: 4294967295
^Ctrl+C
 
root@monitor:~# snmpwalk -v2c -c public 192.168.1.1|wc -l
541

După cum se poate observa prin SNMP obținem toate informațiile necesare, de la tipul echipamentului (CISCO), versiunea sistemului de operare (12.4(12)) la numărul de pachete ce au trecut print-o interfață Ethernet. De asemenea se observă un număr relativ mare de proprietăți expuse de SNMP (~540).

Încercați folosirea versiunilor 1 și 3. Observați că folosirea versiunii 3 eșuează. În mod implicit, la configurarea unei comunități echipamentele CISCO vor folosi versiunea 1 sau 2c a protocolului SNMP.

Se observă că fiecare intrare are ca și cheie un șir de numere care poartă numele de OID (Object Identifier). În general este greu să lucrăm cu astfel de chei întrucât ele nu au nici o semnificație. Fiecare producător construiește baze de date ce poartă numele de MIB (Management Information Base) în care se asociază cuvinte cheie cu semnificație clară (sysUptime) cu câte o înșiruire de numere (OID-uri). Poate fi făcută o paralelă cu serviciul DNS care face legătura între nume de domenii și adrese IP.

MIB-urile sunt stocate în fișiere pe sistemul ce realizează interogarea SNMP (în cazul de față stația monitor). Pentru a descărca aceste MIB-uri există deverse tool-uri. Noi vom folosi snmp-mibs-downloader:

root@monitor:~# apt-get install snmp-mibs-downloader

O dată instalat, acest va descărca automat toate MIB-urile și le va plasa în /var/lib/mibs. Noi vom folosi MIB-ul cu numele IF-MIB (/var/lib/mibs/ietf/IF-MIB) pentru a realiza interogări legate de interfețe către ruterul R1. Vom lista toate numele interfețelor de pe R1:

root@monitor:~# snmpwalk -c public -v 2c 192.168.1.1 IF-MIB::ifName
IF-MIB::ifName.1 = STRING: Fa0/0
IF-MIB::ifName.3 = STRING: Nu0

Se observă că Fa0/0 are numărul instanței 1. Acest număr al instanței este cheia prin care putem afișa și alte caracteristici ale interfeței cum ar fi tipul interfeței:

root@monitor:~# snmpwalk -c public -v 2c 192.168.1.1 IF-MIB::ifType
IF-MIB::ifType.1 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.3 = INTEGER: other(1)

Se observă că instanța 1 e de tip ethernetCsmacd. Asocierea cu Fa0/0 se face prin numărul instanței.

Afișați viteza interfeței Fa0/0, șirul de caractere descriptiv, numărul de octeți trimiși și primiți și dacă au existat erori pe interfață (Hint: inspectați fișierul /var/lib/mibs/ietf/IF-MIB pentru a afla numele proprietăților de afișat).

Utilitarul snmpwalk întoarce toate înstanțele găsite pentru o anumită proprietate. Dacă se știe în mod particular numele proprietății și numărul unei instanțe se poate folosi snmpget pentru a găsi valoarea asociată (într-un script vom folosi snmpget în general):

root@monitor:~# snmpget -c public -v 2c 192.168.1.1 IF-MIB::ifName.1
IF-MIB::ifName.1 = STRING: Fa0/0

SNMPv3

Pentru ruterul R2 dorim configurarea SNMP versiunea 3. Pentru acest lucru vom crea un grup SAISP pe care să permitem doar interogările pentru versiunea 3:

R2(config)#snmp-server group SAISP v3 ?
  auth    group using the authNoPriv Security Level
  noauth  group using the noAuthNoPriv Security Level
R2(config)#snmp-server group SAISP v3 auth

Avem opțiunea auth care ne permite autentificarea. NoPriv se referă la faptul că datele efective nu vor fi criptate (această imagine de IOS nu suportă modul de criptare al datelor transmise de SNMP).

După acest pas trebuie să configurăm un utilizator și o parolă pentru accesul la informațiile SNMP:

R2(config)#snmp-server user student SAISP v3 auth md5 student1

student se referă la numele utilizatorului creat, SAISP este grupul configurat mai sus, iar student1 este parola pentru acest utilizator (trebuie să fie de minim 8 caractere).

De pe stația monitor vom realiza o interogarea folosind versiunea 3:

root@monitor:~# snmpget -v 3 -l AuthNoPriv -u student -a md5 -A student1 192.168.1.2 IF-MIB::ifName.1
IF-MIB::ifName.1 = STRING: Fa0/0

Se observă că am specificat versiunea 3 (-v 3), comunitatea public a dispărut întrucât autentificarea se face pe bază de utilizator (-u student) și parolă (-A student1). Observați că a trebuit să specificăm obligatoriu tipul de comunicație (-l AuthNoPriv - autentificare fără criptate) și modalitatea de criptare a parolei folosită (-a md5). Chiar dacă nu se criptează datele, credențialele NU sunt trimise în clar.

Dezactivați folosirea versiunii 1 și 2c a protocolului SNMP de pe ruterul R2.

saisp/labs/03/contents/03.txt · Last modified: 2016/03/14 20:40 by alexandru.carp
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0