logo

Es un protocolo utilizado para el manejo de dispositivos en redes IP y es una excelente opción para la administración de nuestra red. Una de sus grandes ventajas es que es un protocolo soportado por una gran cantidad de dispositivos (switches, routers, impresoras, sistemas Windows, sistemas UNIX, etc.) a diferencia de su predecesor, el Simple Gateway Management Protocol (SGMP), el cual sólo estaba pensado para administrar routers.

Podemos utilizar para cosas tan simples como monitorear la condición de nuestros dispositivos hasta poder tener control sobre ellos (por ejemplo, podemos dar de baja interfaces o condiciones más especificas designadas por los fabricantes del hardware).

¿Cómo funciona SNMP?

En el mundo de SNMP hay dos actores: managers y agents.

Se tiene como manager a un servidor que corra un software que pueda administrar tareas para la red, a menudo se les conoce como NMSs (Network Management Stations).

Los agents, son piezas de software que corren en los dispositivos de red que administramos, puede ser un programa separado o puede estar incorporado en el sistema operativo. La mayoría de los dispositivos IP vienen con una especie de SNMP agent.

En SNMP, tenemos que lo importante es la interacción entre estos dos actores, el agent le pasa información al manager, y éste se encarga de administrarla. De hecho el manager puede tener un rol más activo solicitando y actualizando la información del agent.

snmp

Cabe mencionar que el agent tiene una lista de objetos que lo describen (por decir, un objeto podría ser el status operacional de la interfaz de un router) y aquí es donde entran las MIBs.

Una MIB (Management Information Base ) es una base de datos que contiene información de los objetos del agente, el cual puede implementar varias MIBs, sin embargo todos los agents implementan una en particular, la cual es MIB-II y cuyo RFC es el 1213.

SNMP usa UDP (User Datagram Protocol) como su protocolo de transporte para pasar los datos entre managers y agents. La ventaja de que trabaje con UDP en vez de TCP es por la velocidad, debido a que no hay una conexión end-to-end, sin embargo por obvias razones este envío de información no es confiable (pérdida de paquetes, sin embargo no es un problema realmente), depende entonces de la aplicación SNMP el determinar si se perdieron los datagramas y retransmitirlos en todo caso (esto se logra utilizando timeouts).

SNMP usa el puerto UDP 161 para mandar y recibir requests y el puerto 162 para recibir los traps de los dispositivos administrados.

Un punto importante a tratar al hablar de SNMP es lo que se conoce como comunidades (communities) las cuales son la manera en la cual se establecen relaciones seguras (trust) entre managers y agents. A modo de resumen, una comunidad es una contraseña.

Un agent tiene tres nombres de comunidades: read-only, read-write y trap. Cada una controla una diferente actividad y va en relación a su nombre (solo lectura, lectura y escritura y recepción de notificaciones asíncronas respectivamente). Por default, tenemos que public representa a read-only y private a read-write.

Si bien tenemos que en SNMP podemos obtener información operacional sobre los dispositivos queda una pregunta, ¿cómo es representada la información en SNMP?

Cada objeto tiene tres atributos:

Nombre: El nombre o mejor dicho, el identificador del objeto (OID) el cual es único y define a cada objeto. Puede estar representado en forma numérica o en versión “human readable”.

Tipo y sintaxis: El como los datos van a ser representados y transmitidos entre managers y agents (el tipo de dato del objeto), una ventaja es que es independiente de la máquina que sea, por ejemplo, una máquina con Windows 2000 puede comunicarse con una Sun SPARC.

Encoding: Es el como los objetos son encoded y decoded.

Los objetos son organizados en un árbol jerárquico, y de hecho esta estructura es la base para el esquema de nombres en SNMP. Un OID está hecho con una serie de números enteros basados en los nodos del árbol y separados por puntos.

Como en cualquier árbol el primer nodo es la raíz y cualquier nodo con hijos es un subárbol. Cualquier nodo sin hijos a su vez es llamado nodo hoja. Cabe mencionar que solo el subárbol iso(1) del diagrama pertenece a SNMP. La representación numérica, por ejemplo, del subárbol internet(1) sería la siguiente: 1.3.6.1 y en versión “human readable”: iso.org.dod.internet . Como se puede ver cada objeto tiene un número correspondiente (OID) así como un nombre.

Información para el subárbol internet(1):

Respecto al nodo hoja directory(1), actualmente no es utilizado.

El management(2) define un estándar de administración.

Experimental(3) está reservado para pruebas e investigación.

Y en prívate(4) está reservado para que sean definidos nuevos objetos por individuos u organizaciones (para una lista de los números que se han creado de forma privada visitar: http://www.iana.org/assignments/enterprise-numbers , se anexa un documento de todas formas con ésta información).

Ahora veamos el grupo de MIB-II (definido como iso.org.dod.internet.mgmt.1 o lo que es lo mismo 1.3.6.1.2.1) representado en árbol y una lista rápida descriptiva de los objetos que lo integran (analizar el RFC 1213 respectivo a MIB-II para más información):

snmp2

¿Cómo administrar hosts?

Partiendo del hecho de que con SNMP podemos recabar información de las máquinas en nuestra red, podemos usar una rama llamada host que pertenece a MIB-II, con la cual podemos sacar información específica:

host            OBJECT IDENTIFIER ::= { mib-2 25 }
hrSystem        OBJECT IDENTIFIER ::= { host 1 }
hrStorage       OBJECT IDENTIFIER ::= { host 2 }
hrDevice        OBJECT IDENTIFIER ::= { host 3 }
hrSWRun         OBJECT IDENTIFIER ::= { host 4 }
hrSWRunPerf     OBJECT IDENTIFIER ::= { host 5 }
hrSWInstalled   OBJECT IDENTIFIER ::= { host 6 }

El OID de host es 1.3.6.1.2.1.25 (iso.org.dod.internet.mgmt.mib-2.host).

The hrSystem (1.3.6.1.2.1.25.1) información del sistema en si.

The hrDevice (1.3.6.1.2.1.25.3) and hrStorage (1.3.6.1.2.1.25.2) información de los dispositivos del host y de sus medios de almacenamiento respectivamente.

The hrSWRun (1.3.6.1.2.1.25.4), hrSWRunPerf (1.3.6.1.2.1.25.5), and hrSWInstalled (1.3.6.1.2.1.25.6 ) se refieren aspectos respectivos al software instalado en el sistema y a los procesos, etc.

En el siguiente diagrama presentamos el árbol para la rama de host en MIB-II, la razón, con la información extraida del árbol podemos obtener datos para administrar nustros hosts:

snmp3

Ok… ahora como comentario final, diré que podemos hacer nuestrar propias herramientas de administración con PHP (bueno, con otros lenguajes es posible también, pero yo me anime a hacerlo en PHP para tener una herramienta web fácil de desarrollar y administrar sin tantos líos), de hecho desarrolle un sistema para este fin, al cual le llamé junto con un amigo Free-Love Scanner y puedes encontrar más información de él (incluido más documentación y código fuente) en el siguiente link: http://www.quanaxoft.com/blog/category/proyectos/free-love-scanner/

Bibliografía:

SNMP – http://es.wikipedia.org/wiki/SNMP

SNMP Tutorial-http://www.dpstele.com/layers/l2/snmp_l2_tut_part1.php

Essential SNMP, Second Edition, by Douglas R. Mauro and Kevin J. Schmidt. Copyright 2005 O’Reilly Media, Inc., 0-596-00840-6

Que tal, pues gracias al comentario de un amigo (miguex) en un foro… me decidi a hostear el Free-Love Scanner en Google Code…

Les paso la página del proyecto:

http://code.google.com/p/flscanner/

salu2!

logoQue tal, que tal… pues, el año pasado habia desarrollado un scanneador de puertos en PHP, también obtenía información de las máquinas que tuvieran SNMP y hacia un escanneo para ver que máquinas habia online en la red…

Creo que es un buen proyecto y se le puede sacar mucho provecho (hacer un administrador de red) … les pongo una versión un tanto mejorada (pero muy limitada) del administrador de red por si alguien la quiere checar… igual pienso que si alguien tiene animo podríamos trabajar juntos para mejorarla y entregar un mejor proyecto a la comunidad jeje.

Requisitos:

- Tener instalado Apache

- Tener un navegador web (como firefox!)

- Instalar el soporte en PHP para Sockets, SNMP y MySQL

- Configurar SNMP en nuestra máquina

En la documentación pongo el procedimiento, los requisitos y como hacer algunas configuraciones, sin embargo son para Windows…

Archivos necesarios:

La documentación del proyecto la pueden bajar de aqui:

http://www.mediafire.com/file/nydzzyza3xm/FLScannerDoc.pdf

El script de la base de datos lo pueden bajar de aqui:

http://www.mediafire.com/file/wzimay1moct/freelove.sql

Los archivos del administrador de red los bajas de aqui (los php, jeje):

http://www.mediafire.com/file/xyoiozdgnz1/flscanner.zip

Estos archivos los descomprimes en tu carpeta htdocs de Apache :) … el index.php es la página inicial.

Algunas capturas del administrador en funcionamiento:

3

4

Igual que opinan? Creen que sea un buen proyecto?

Creen que sea util? Creen que se le deba dar continuidad?

Alguien mas quiere participar? :)

salu2!

© 2011 Quanaxblog Suffusion theme by Sayontan Sinha