Spiga

Introducción a SNMP III

¡Hola!

En las entradas anteriores hemos realizado una introducción a SNMP, estudiando sus componentes y arquitectura, y hemos profundizado en los MIBs y el árbol de información de gestión. Hoy nos vamos a centrar en los mensajes SNMP.

Para alcanzar el objetivo de ser un protocolo simple, SNMP propuso un conjunto limitado de órdenes y respuestas de gestión. La versión inicial del protocolo tenía tan sólo 5 operadores:

  • Get, para obtener o leer el valor de una o más instancias de un objeto.
  • GetNext, muy similar a Get, se diferencia en que esta operación obtiene el valor del siguiente OID del árbol
  • Set, para escribir o establecer el valor de una o más instancias de un objeto.
  • Trap, que son mensajes enviados por los agentes a los NMS para informar de que se ha producido un cierto evento
  • Response, son las respuestas desde los agentes a los NMS que contienen los valores solicitados.

SNMPv2 introdujo 2 operadores nuevos:

  • GetBulk, se introdujo como una mejora de las peticiones Get Next, cuando hay que obtener datos de una tabla (como la información de las interfaces de red de un equipo o su tabla de encaminamiento).
  • Inform, un mensaje muy similar a trap pero que incluye una confirmación desde el NMS al recibir el mensaje.

GET⁄ GET NEXT⁄ GET BULK⁄ SET


TRAP


INFORM

Para ver el funcionamiento de SNMP en acción y poder realizar algunas capturas con WireShark, necesitamos un NMS y algún dispositivo SNMP. Para ello podéis usar vuestro router casero, un switch o vuestra propia máquina.

Yo voy a utilizar una máquina virtual Windows XP en la que he instalado el servicio SNMP (Inicio->Agregar o quitar programas -> agregar componentes de windows -> herramientas de administración y supervisión -> SNMP). Una vez instalado podemos configurar el agente y definir sus detalles. Por ejemplo, podemos establecer el nombre de contacto, que será la información contenida en el valor del objeto sysContact, o la localización, que será el valor de sysLoc, ambos del grupo System.



Si nos vamos a la pestaña seguridad, vemos que por defecto sólo se crea la comunidad public, que tiene derechos de sólo lectura. Una comunidad (community string) es algo parecido a una contraseña en texto plano (y por tanto muy insegura). En la próxima entrada hablaremos de la seguridad del protocolo y de SNMPv3.

Podemos crear una nueva comunidad con permisos de lectura y escritura:


Una vez realizados los cambios hay que reiniciar el servicio.

Como NMS vamos a usar la aplicación Blackowl MIB browser. En la imagen podéis ver cómo he seleccionado el equipo sobre el que quiero trabajar (escribiendo su IP en el campo Host), he ido navegando por el árbol hasta los objetos del grupo system y he realizado tres operaciones get para obtener el valor de los objetos sysdescr, sysContact y sysLocation. Como la comunidad de las operaciones de lectura está establecido por defecto a public, no hay que configurar nada:


Como podéis ver, los valores que nos devuelve el agente son los que establecimos previamente en el equipo.

Si os fijáis, el objeto sysLocation se puede modificar desde el NMS, ya que su acceso es readwrite. ¡Vamos a cambiarlo! Para ello, tenemos que facilitarle a nuestro NMS los datos de la comunidad de escritura del agente. Tenemos que irnos a las propiedades, seleccionar SNMPv2 y escribir el community string adecuado.




Si realizamos la operación Set sobre el objeto sysLocation, nos salta una nueva ventana solicitando el valor a escribir en el agente:


Si nos vamos al equipo y observamos las propiedades SNMP podemos comprobar que, efectivamente, el valor de SysLocation se ha modificado:


Para terminar os dejo un par de imágenes de la captura realizada con WireShark al realizar la operación get sobre el objeto sysContact y su respuesta desde el agente:



¡OJO! Después de realizar las pruebas, deberías deshabilitar o asegurar SNMP en tus equipos, no vaya a ser que tus equipos comiencen a hacer cosas raras...

En el próximo artículo hablaremos, precisamente, de la seguridad del protocolo y de SNMPv3.

¡Un saludo!


Fuentes:
http://www3.rad.com/networks/applications/snmp/comp.htm
http://www.manageengine.com/network-monitoring/what-is-snmp.html

0 comentarios: