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
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.