Differences

This shows you the differences between two versions of the page.

Link to this comparison view

saisp:labs:03:contents:04 [2014/03/09 14:13]
mihai.carabas [04. Autentificare avansată în cadrul unui server de SNMP]
saisp:labs:03:contents:04 [2014/03/10 17:46] (current)
alexandru.carp
Line 1: Line 1:
-==== 04. Autentificare avansată în cadrul unui server de SNMP ====+==== 04. [15p] SNMP server pe Linux ====
  
-   ​* ​SNMP - exercitiu +În exercițiul [[saisp:​labs:​03:​contents:​03|]] am configurat serverul de SNMP pe rutere CISCO. După cum am precizat anterior SNMP este implementat în general pe toate echipamentele,​ inclusiv pe sistemele Linux.  
-      * activare ​SNMP v3 pe switch + 
-      ​* ​snmpwalk de pe Linux+Pe statia ''​gateway'',​ vom instala pachetul ''​snmpd''​ care conține serverul de SNMP:<​code bash> 
 +root@gateway:​~#​ apt-get install snmpd 
 +</​code>​ 
 +În mod implicit acesta ascultă doar pe ''​localhost''​. Trebuie să modificăm linia ''​agentAddress ​ udp:​127.0.0.1:​161''​ în ''​agentAddress ​ udp:​161''​ (pe orice intefață) din fișierul de configurare al ''​snmpd''​ (''/​etc/​snmp/​snmpd.conf''​) și să resetăm daemonul (''/​etc/​init.d/​snmpd restart''​). 
 + 
 +Dorim să realizăm o interogare de pe stația ''​monitor''​ către stația ''​gateway''​ prin care să listăm toate interfețele:<​code>​ 
 +root@monitor:​~#​ snmpwalk -v2c -c public 192.168.1.3 IF-MIB::​ifName 
 +IF-MIB::​ifName = No more variables left in this MIB View (It is past the end of the MIB tree) 
 +</​code>​ 
 +Acest comportament e cauzat tot de o configurație a daemonului ''​snmpd''​. În fișierul de configurare pe linia în care se specifică comunitatea (parola) ''​rocommunity public ​ default ​   -V systemonly''​ se observă opțiunea ''​-V systemonly''​ care limitează proprietățile expuse doar la cele legate de starea sistemului (exemplu: uptime-ul), ''​systemonly''​ fiind un subset de OID-uri definit mai sus în fișier. 
 + 
 +Eliminăm acea opțiune, resetăm serviciul ''​snmpd''​ și refacem interogarea:<​code bash> 
 +root@gateway:​~#​ cat /​etc/​snmp/​snmpd.conf |grep rocomm 
 +# rocommunity public ​ default ​   -V systemonly 
 +rocommunity public ​ default 
 +root@gateway:​~#​ /​etc/​init.d/​snmpd restart 
 +[....] Restarting network management services:: ​ snmpd 
 + 
 +root@monitor:​~#​ snmpwalk -v2c -c public 192.168.1.3 IF-MIB::​ifName 
 +IF-MIB::​ifName.1 = STRING: lo 
 +IF-MIB::​ifName.2 = STRING: eth0 
 +IF-MIB::​ifName.3 = STRING: eth1 
 +</​code>​ 
 + 
 +Cuvântul cheie ''​default''​ din linia ce configurează comunitatea ''​public''​ permite oricărei adresă IP să facă interogarea. Dacă dorim securizarea interogării la o clasă de adrese IP (192.168.1.0/​24 în cazul nostru) putem înlocui ''​default''​ cu clasa respectivă (''​192.168.1.0/​24''​):<​code bash> 
 +root@gateway:​~#​ cat /​etc/​snmp/​snmpd.conf|grep 192. 
 + ​rocommunity public ​ 192.168.1.0/​24 
 +root@gateway:​~#​ /​etc/​init.d/​snmpd restart 
 +[....] Restarting network management services:: ​ snmpd 
 + 
 +root@monitor:​~#​ snmpwalk -v2c -c public 192.168.1.3 IF-MIB::​ifName 
 +IF-MIB::​ifName.1 = STRING: lo 
 +IF-MIB::​ifName.2 = STRING: eth0 
 +IF-MIB::​ifName.3 = STRING: eth1 
 + 
 +root@gateway:​~#​ snmpwalk -v2c -c public 192.168.0.3 
 +Timeout: No Response from 192.168.0.3 
 +root@gateway:​~#​ tail -1 /​var/​log/​syslog 
 +Mar  9 19:11:51 gateway snmpd[4984]:​ Connection from UDP: [192.168.0.3]:​55453->​[192.168.0.3]:​161 
 +</​code>​ 
 +Se observă că la interogarea folosind adresa IP sursă ''​192.168.0.3'',​ serverul nu mai răspunde (automat se folosește adresa IP sursă ''​192.168.0.3''​ când facem interogarea de pe aceeași mașină către aceeași adresă IP). 
 + 
 +SNMP este un protocol extensibil putând adăuga noi proprietăți care să fie exportate serverelor de management/​monitorizare. Putem crea script-uri custom care să preia valori din sistem și să le expună prin SNMP. 
 + 
 +Creați un script ​pe stația ''​gateway''​ care întoarce numărul de intrări din ''​passwd'':<​code bash> 
 +root@gateway:​~#​ cat /​tmp/​getUserNo 
 +#​!/​bin/​bash 
 + 
 +echo Numarul de utilizatori din sistem este: $(getent passwd | wc -l) 
 + 
 +root@gateway:​~#​ chmod +x /​tmp/​getUserNo 
 +root@gateway:​~#​ /​tmp/​getUserNo 
 +Numarul de utilizatori din sistem este: 26 
 +</​code>​ 
 + 
 +Dorim să exportăm rezultatul acestui script prin SNMP pentru ca stația ''​monitor''​ să poată să îl preia. În fișierul ''/​etc/​snmp/​snmpd.conf''​ avem la dispoziție comanda ''​extend''​ (''/​extend''​). Vom adăuga o nouă intrare de tipul ''​extend-sh'':<​code>​ 
 +root@gateway:​~#​ cat /​etc/​snmp/​snmpd.conf |grep getUser 
 + ​extend-sh ​   userNo ​  /​tmp/​getUserNo 
 +root@gateway:​~#​ /​etc/​init.d/​snmpd restart 
 +[....] Restarting network management services:: ​ snmpd 
 +</​code>​ 
 +Conform comentariilor din ''​snmpd.conf''​ ieșirea scriptului este exportată prin proprietatea ''​ NET-SNMP-EXTEND-MIB::​nsExtendOutput1Table'':<​code bash> 
 +root@monitor:​~# ​snmpwalk ​-v2c -c public 192.168.1.3 NET-SNMP-EXTEND-MIB::​nsExtendOutput1Table|grep userNo 
 +NET-SNMP-EXTEND-MIB::​nsExtendOutput1Line."​userNo"​ = STRING: Numarul ​de utilizatori din sistem este: 26 
 +NET-SNMP-EXTEND-MIB::​nsExtendOutputFull."​userNo"​ = STRING: Numarul de utilizatori din sistem este: 26 
 +NET-SNMP-EXTEND-MIB::​nsExtendOutNumLines."​userNo"​ = INTEGER: 1 
 +NET-SNMP-EXTEND-MIB::​nsExtendResult."​userNo"​ = INTEGER: 0 
 +</​code>​ 
 + 
 +După cum se vede scriptul este executat, iar output-ul acestuia este trimis prin SNMP. Adăugați un nou user pe stația ''​gateway''​ și executați interogarea de mai sus. Observați modificarea valorii la ''​27''​. 
 +<​solution -hidden>​ 
 +<code bash> 
 +root@gateway:​~#​ adduser test 
 +[...] 
 +root@monitor:​~#​ snmpwalk -v2c -c public 192.168.1.3 NET-SNMP-EXTEND-MIB::​nsExtendOutput1Table|grep userNo 
 +NET-SNMP-EXTEND-MIB::​nsExtendOutput1Line."​userNo"​ = STRING: Numarul de utilizatori din sistem este: 27 
 +</​code>​ 
 +</​solution>​
saisp/labs/03/contents/04.1394367191.txt.gz · Last modified: 2014/03/09 14:13 by mihai.carabas
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