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:25]
mihai.carabas created
saisp:labs:03:contents:04 [2014/03/10 17:46] (current)
alexandru.carp
Line 1: Line 1:
-==== 04. SNMP server pe Linux ====+==== 04. [15p] SNMP server pe Linux ====
  
-    * SNMP - tutorial +Î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 server ​pe linux +
-      * crearea unei noi intrari care sa exporte valorile obtinute in urma executiei unui script custom+
  
 +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.1394367934.txt.gz · Last modified: 2014/03/09 14:25 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