SNMP

De SergiTurWiki

Share/Save/Bookmark
Dreceres ràpides: navegació, cerca
Aquesta wiki forma part dels materials d'un curs
Curs: SeguretatXarxesInformàtiques, LinuxAdministracioAvancada, DissenyXarxesLinux
Fitxers: EinesMonitoritzacio.pdf (EinesMonitoritzacio.odp)

EinesMonitoritzacio2.pdf (EinesMonitoritzacio2.odp)

Repositori SVN: https://anonymous@svn.projectes.lafarga.cat/svn/iceupc/SeguretatXarxesInformàtiques
Usuari: anonymous
Paraula de pas: sense paraula de pas
Autors: Sergi Tur Badenas

Simple Network Management Protocol (SNMP) és un protocol del nivell d'aplicació que facilita l'intercanvi d'informació d'administració entre dispositius de xarxa.

Característiques principals:

  • Utilitza un servei no orientat a connexió (protocol UDP)
  • Permet als administradors supervisar de forma remota els dispositius d'una xarxa.
  • Hi han 3 versions del protocol:
    • Les més utilitzades són SNMPv1 i SNMPv2
    • A la nova versió (SNMPv3) s'han introduït força canvis sobretot respecte al tema de seguretat però encara no esta gaire suportat per la industria.

Contingut

Components bàsics d'una xarxa amb SNMP

Els components bàsics d'una xarxa administrada amb SNMP són:

  • Dispositius administrats
  • Agents de programari
  • Sistemes administradors de xarxa

Els dispositius administrats tenen instal·lat un programari (agent) que s'encarreguen de recollir i emmagatzemar informació de la màquina administrada. La informació emmagatzemada es posa a disposició dels sistemes administradors de la xarxa mitjançant SNMP. Les màquines administrades poden ser encaminadors, servidors, commutadors, estacions de treball, impressores, perifèrics de xarxa o altres màquines connectades a la xarxa (màquines dispensadores d'aliments, alarmes, estacions meteorològiques, etc.)

Management Information Bases (MIB)

  • Emmagatzema una col·lecció d'informació d'administració que està organitzada jeràrquicament.
  • Són les dades que guarden els dispositius administrats i que es posen a disposició dels gestors de la xarxa (NM) a través de SNMP.
  • Sovint els dispositius administrats s'anomenen objectes MIB.

Es tracta doncs d'una base de dades jeràrquica on cada node de l'arbre és un objecte. Hi ha dos tipus d'objectes:

  • Escalars: Els objectes tabulars són simplement una variable
  • Tabulars: Estan formats per altres objectes

Imatge:ArbreMIBSNMP.JPG

  • Cada objecte té un identificador (object ID) que l'identifica de forma única dins de l'arbre MIB
  • L'estructura de l'arbre MIB esta força definida tot i que localitzar un paràmetre específic per a un dispositiu específic dependrà en gran part en conèixer l'arbre MIB del fabricant del dispositiu. No tots els dispositius proporcionen totes les variables.
  • S'utilitza una notació especial anomenada Abstract Syntax Notation One.
  • L'arrel és anònima i es representa amb un punt

Per exemple l'objecte l'objecte ifNumber s'identifica amb una de les següents notacions:

  • iso.org.dod.internet.mgmt.mib-2.interfaces.ifNumber
  • .1.3.6.1.2.1.2.1

Instal·lació

Servidor

$ sudo apt-get install snmpd

Comandes;

$ dpkg -L snmpd | grep bin
/usr/sbin
/usr/sbin/snmpd
/usr/sbin/snmptrapd

Fitxers de configuració

$ dpkg -L snmpd | grep etc
/etc
/etc/default
/etc/default/snmpd
/etc/snmp
/etc/snmp/snmpd.conf
/etc/snmp/snmptrapd.conf
/etc/init.d
/etc/init.d/snmpd

Client

$ sudo apt-get install snmp

Comandes:

$ dpkg -L snmp | grep bin
/usr/bin
/usr/bin/snmpbulkget
/usr/bin/snmpbulkwalk
/usr/bin/snmpconf
/usr/bin/snmpdelta
/usr/bin/snmpdf
/usr/bin/snmpget
/usr/bin/snmpgetnext
/usr/bin/snmpnetstat
/usr/bin/snmpnetstat53
/usr/bin/snmpset
/usr/bin/snmpstatus
/usr/bin/snmptable
/usr/bin/snmptest
/usr/bin/snmptranslate
/usr/bin/snmptrap
/usr/bin/snmpusm
/usr/bin/snmpvacm
/usr/bin/snmpwalk
/usr/bin/encode_keychange
/usr/bin/fixproc
/usr/bin/traptoemail
/usr/bin/mib2c-update
/usr/bin/snmpinform

Comandes del client snmp

Comanda snmpwalk

La comanda snmpwalk ens mostra els continguts de la base de dades MIB de SNMP a partir d'un node concret.

Per exemple, per obtenir les dades de la secció sistema a una màquina local amb snmp activat:

$ snmpwalk -Os -c public -v 2c localhost system
sysDescr.0 = STRING: Linux ubuntu-sala 2.6.22-14-generic #1 SMP Sun Oct 14 23:05:12 GMT 2007 i686
sysObjectID.0 = OID: netSnmpAgentOIDs.10
sysUpTimeInstance = Timeticks: (984884) 2:44:08.84
sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmpd.local.conf)
sysName.0 = STRING: ubuntu-sala
sysLocation.0 = STRING: Unknown (configure /etc/snmp/snmpd.local.conf)
sysORLastChange.0 = Timeticks: (54) 0:00:00.54
sysORID.1 = OID: snmpMIB
sysORID.2 = OID: tcpMIB
sysORID.3 = OID: ip
sysORID.4 = OID: udpMIB
sysORID.5 = OID: vacmBasicGroup
sysORID.6 = OID: snmpFrameworkMIBCompliance
sysORID.7 = OID: snmpMPDCompliance
sysORID.8 = OID: usmMIBCompliance
sysORDescr.1 = STRING: The MIB module for SNMPv2 entities
sysORDescr.2 = STRING: The MIB module for managing TCP implementations
sysORDescr.3 = STRING: The MIB module for managing IP and ICMP implementations
sysORDescr.4 = STRING: The MIB module for managing UDP implementations
sysORDescr.5 = STRING: View-based Access Control Model for SNMP.
sysORDescr.6 = STRING: The SNMP Management Architecture MIB.
sysORDescr.7 = STRING: The MIB for Message Processing and Dispatching.
sysORDescr.8 = STRING: The management information definitions for the SNMP User-based Security Model.
sysORUpTime.1 = Timeticks: (54) 0:00:00.54
sysORUpTime.2 = Timeticks: (54) 0:00:00.54
sysORUpTime.3 = Timeticks: (54) 0:00:00.54
sysORUpTime.4 = Timeticks: (54) 0:00:00.54
sysORUpTime.5 = Timeticks: (54) 0:00:00.54
sysORUpTime.6 = Timeticks: (54) 0:00:00.54
sysORUpTime.7 = Timeticks: (54) 0:00:00.54
sysORUpTime.8 = Timeticks: (54) 0:00:00.54 

On

-c public

Indica la community que volem indicar i

-v 2c

Ens indica la versió de SNMP. Finalment l'últim paràmetre (system) ens indica que volem mostrar les dades del node:

.1.3.6.1.2.1.1

o

.iso.org.dod.mgtm.mib-2.system.

Si utilitem snmpwalk sense l'últim paràmetre:

$ snmpwalk -Os -c public -v 2c localhost 

Obtenim tot l'arbre MIB.

Les seccions més interessants per a consultar són les del node 'iso.org.dod.mgtm.mib-2:

  • System (1);
  • Interfaces (2)
  • AT (3);
  • IP (4);
  • ICMP (5);
  • TCP (6);
  • UDP (7);
  • EGP (8);
  • Transmission (10);
  • SNMP (11).

Per monitoritzar les interfícies de xarxa podem utilitzar:

$ snmpwalk -Os -c public -v 2c localhost interfaces

Comanda snmpconf

snmpconf

La comanda snmpconf ens ofereix un assistent que permet configurar snmp.

$ sudo snmpconf
The following installed configuration files were found:

   1:  /etc/snmp/snmpd.conf
   2:  /etc/snmp/snmptrapd.conf

Would you like me to read them in?  Their content will be merged with the
output files created by this session.

Valid answer examples: "all", "none","3","1,2,5"

Read in which (default = all): 1

I can create the following types of configuration files for you.
Select the file type you wish to create:
(you can create more than one as you run this program)

   1:  snmpd.conf
   2:  snmp.conf
   3:  snmptrapd.conf

Other options: quit

Select File: 

Les primeres opcions ens pregunten quins fitxers de configuració volem modificar.

Per modificar el servidor, primer escollim:

1:  /etc/snmp/snmpd.conf

i després:

1:  snmpd.conf

Seguim...

The configuration information which can be put into snmpd.conf is divided
into sections.  Select a configuration section for snmpd.conf
that you wish to create: 

   1:  Extending the Agent
   2:  Monitor Various Aspects of the Running Host
   3:  Access Control Setup
   4:  Agent Operating Mode
   5:  Trap Destinations
   6:  System Information Setup

Other options: finished

Select section:

Monitoritzar recursos del Host que executa el servidor

A la tercera pregunta de snmpconf seleccionen l'opció 2:

2:  Monitor Various Aspects of the Running Host
The configuration information which can be put into snmpd.conf is divided
into sections.  Select a configuration section for snmpd.conf
that you wish to create: 

   1:  Extending the Agent
   2:  Monitor Various Aspects of the Running Host
   3:  Access Control Setup
   4:  Agent Operating Mode
   5:  Trap Destinations
   6:  System Information Setup

Other options: finished

Select section: 2

Tindrem 4 grups de paràmetres a monitoritzar:

  • 1: Monitorització de processos.
  • 2: Monitorització d'espai en disc
  • 3: Monitorització de la càrrega del sistema
  • 4: Monitorització de la mida d'un fitxer
Section: Monitor Various Aspects of the Running Host
Description:
  The following check up on various aspects of a host.

Select from:

   1:  Check for processes that should be running.
   2:  Check for disk space usage of a partition.
   3:  Check for unreasonable load average values.
   4:  Check on the size of a file.

Other options: finished, list

Select section:

Per exemple podem controlar el servidor apache2:

Configuring: proc
Description:
  Check for processes that should be running.
      proc NAME [MAX=0] [MIN=0]
    
      NAME:  the name of the process to check for.  It must match
             exactly (ie, http will not find httpd processes).
      MAX:   the maximum number allowed to be running.  Defaults to 0.
      MIN:   the minimum number to be running.  Defaults to 0.
    
    The results are reported in the prTable section of the UCD-SNMP-MIB tree
    Special Case:  When the min and max numbers are both 0, it assumes
    you want a max of infinity and a min of 1.

Name of the process you want to check on: apache2
Maximum number of processes named 'apache2' that should be running [default = 0]: 0
Minimum number of processes named 'apache2' that should be running [default = 0]: 10

Ara només queda guardar escrivint varies vegades la comanda finished. Snmpconf ens generarà un fitxer anomenat:

snmpd.conf

Que el podem substituir per l'antic /etc/snmp/snmpd.conf:

$ sudo cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.old
$ sudo cp snmpd.conf /etc/snmp

i reiniciar snmp:

$ sudo /etc/init.d/snmpd reload

Ara podem consultar les alertes del procés apache2 amb:

$ snmpwalk -Os -c public -v 2c localhost prTable
prIndex.1 = INTEGER: 1
prNames.1 = STRING: apache2
prMin.1 = INTEGER: 10
prMax.1 = INTEGER: 0
prCount.1 = INTEGER: 6
prErrorFlag.1 = INTEGER: 1
prErrMessage.1 = STRING: Too few apache2 running (# = 6)
prErrFix.1 = INTEGER: 0
prErrFixCmd.1 = STRING:

O amb mbrowse:

Imatge:Mbrowse5.png

Ports de SNMP

Els podem obtenir consultant el fitxers /etc/services:

$ cat /etc/services | grep snmp
snmp            161/tcp                         # Simple Net Mgmt Protocol
snmp            161/udp                         # Simple Net Mgmt Protocol
snmp-trap       162/tcp         snmptrap        # Traps for SNMP
snmp-trap       162/udp        snmptrap        # Traps for SNMP

Per saber si un dispositiu suporta SNMP podem primer utilitzar l'scanner de ports nmap:

$ sudo nmap -sU 192.168.1.1 -p 161
Starting Nmap 4.20 ( http://insecure.org ) at 2007-12-10 12:56 CET
Interesting ports on mygateway1.ar7 (192.168.1.1):
PORT    STATE         SERVICE
161/udp open|filtered snmp
MAC Address: 00:15:E9:CA:34:A5 (D-Link)

Nmap finished: 1 IP address (1 host up) scanned in 0.439 seconds

Fixeu-vos que cal indicar explícitament que voleu fer un escaneig amb UDP.

Configuració del servidor

El fitxer de configuració del servidor és /etc/snmp/snmpd.conf. A una Ubuntu 9.10 trobem:

$ sudo cat /etc/snmp/snmpd.conf | grep -v '^#\|^$\|^;'
com2sec paranoid  default         public
group MyROSystem v1        paranoid
group MyROSystem v2c       paranoid
group MyROSystem usm       paranoid
group MyROGroup v1         readonly
group MyROGroup v2c        readonly
group MyROGroup usm        readonly
group MyRWGroup v1         readwrite
group MyRWGroup v2c        readwrite
group MyRWGroup usm        readwrite
view all    included  .1                               80
view system included  .iso.org.dod.internet.mgmt.mib-2.system
access MyROSystem ""     any       noauth    exact  system none   none
access MyROGroup ""      any       noauth    exact  all    none   none
access MyRWGroup ""      any       noauth    exact  all    all    none
syslocation Unknown (configure /etc/snmp/snmpd.local.conf)
syscontact Root <root@localhost> (configure /etc/snmp/snmpd.local.conf)

On:

$ sudo cat /etc/snmp/snmpd.conf
................
###############################################################################
# Access Control
###############################################################################
..............
..............

#       sec.name  source          community
com2sec paranoid  default         public
#com2sec readonly  default         public  
#com2sec readwrite default         private 

Per defecte esta en mode paranoid. Si volem activar el servidor hem de descomentar la línia:

com2sec readonly  default         public

I comentar la línia

com2sec paranoid  default         public

El fitxer queda de la següent manera:

$ sudo cat /etc/snmp/snmpd.conf
................
###############################################################################
# Access Control
###############################################################################
..............
..............

#       sec.name  source          community
#com2sec paranoid  default         public
com2sec readonly  default         public  
#com2sec readwrite default         private 

Sempre que modifiquem la configuració cal aplicar els canvis tornant a iniciar el servidor amb la comanda:

$ sudo /etc/init.d/snmpd reload

Per provar que funciona:

$ snmpwalk -Os -c public -v 2c localhost system

Recursos:

Eines gràfiques

mbrowse

Per instal·lar mbrowse cal executar:

$ sudo apt-get install mbrowse

i executeu el següent des de una terminal:

$ mbrowse

Imatge:Mbrowse1.png

Imatge:Mbrowse2.png

Imatge:Mbrowse3.png

Imatge:Mbrowse4.png

Dispositius

SNMP als routers Zyxel Prestige 660HW-61 de telefònica

Imatge:660hwcombined.jpg

Aquest routers tenen accés telnet:

$ telnet ip_router_adsl

Copyright (c) 1994 - 2005 ZyXEL Communications Corp.

                             Prestige 660HW-61 Main Menu

    Getting Started                      Advanced Management
      1. General Setup                     21. Filter Set Configuration
      2. WAN Backup Setup                  22. SNMP Configuration
      3. LAN Setup                         23. System Security
      4. Internet Access Setup             24. System Maintenance
                                           25. IP Routing Policy Setup
    Advanced Applications                  26. Schedule Setup
      11. Remote Node Setup
      12. Static Routing Setup
      14. Dial-in User Setup               99. Exit
      15. NAT Setup

                         Enter Menu Selection Number:

Seleccionem l'opció 22':

               Menu 22 - SNMP Configuration

                  SNMP:
                    Get Community= public
                    Set Community= public
                    Trusted Host= 0.0.0.0
                    Trap:
                      Community= public
                      Destination= 0.0.0.0

                   Press ENTER to Confirm or ESC to Cancel:

Com podeu veure ja porten SNMP activat per defecte amb les community típiques.

TroubleShooting. Resolució de problemes

SNMPD només funciona amb localhost

Si noteu que només podeu accedir a SNMPD des de la màquina local i utilitzant localhost en comptes de la IP, aleshores és que SNMPD només s'està executant a la interfície loopback. Consulteu el fitxer:

$ cat /etc/default/snmpd 
# This file controls the activity of snmpd and snmptrapd 

# MIB directories.  /usr/share/snmp/mibs is the default, but
# including it here avoids some strange problems.
export MIBDIRS=/usr/share/snmp/mibs 

# snmpd control (yes means start daemon).
SNMPDRUN=yes 

# snmpd options (use syslog, close stdin/out/err).
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1'

# snmptrapd control (yes means start daemon).  As of net-snmp version
# 5.0, master agentx support must be enabled in snmpd before snmptrapd
# can be run.  See snmpd.conf(5) for how to do this.
TRAPDRUN=no 

# snmptrapd options (use syslog).
TRAPDOPTS='-Lsd -p /var/run/snmptrapd.pid'

# create symlink on Debian legacy location to official RFC path
SNMPDCOMPAT=yes
 

Per seguretat, el dimoni per defecte és carrega per escoltar només a localhost. Canvieu la línia:

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1'

per:

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid' 

I torneu a iniciar SNMPD:

$ sudo /etc/init.d/snmpd restart

Exemples

Obtenir el nom d'una impresora

$ snmpwalk -v1 -c public 192.168.12.50 -m ALL .1 | grep DeviceDescr
HOST-RESOURCES-MIB::hrDeviceDescr.1 = STRING: hp LaserJet 2420


Vegeu també

Enllaços externs

IES Nicolau Copèrnic