Sunteți pe pagina 1din 8

Configuracin, ejecucin y pruebas de un agente de gestin SNMPv3

Grupo SNMPv3_B: Diego Aguilar Vidal, Luciano Rodrguez Lorenzana, Ana Romn Gonzlez RESUMEN Dado que el concepto de gestin es muy amplio y abarca muy diversos mbitos, el presente documento centra sus esfuerzos en el estudio de SNMP (Simple Network Management Protocol), y su implementacin de cdigo abierto net-snmp. No ser objetivo de este estudio, un desglose pormenorizado de lo que al protocolo SNMP se refiere, sin embargo, trataremos de esbozar los objetivos que se pretenden abarcar en el diseo de dicho protocolo, la estructuracin de la informacin disponible, las caractersticas ms relevantes incluidas en las diferentes revisiones del protocolo; haciendo especial hincapi en las polticas de privacidad y seguridad adoptadas , USM (User Security Model) y VACM (View-based Access Control Module). INTRODUCCIN El objetivo fundamental que trataremos de cubrir a lo largo del documento, ser solventar los principales escollos y trabas que surgen a la hora de gestionar sistemas tan heterogneos y en constante evolucin, como son los sistemas de comunicaciones o redes de comunicaciones. En el presente documento, profundizaremos en el conocimiento del protocolo SNMP, diseado como paliativo del complejo problema de la gestin de sistemas de comunicaciones anteriormente mencionado. Con el fin de alcanzar el objetivo prefijado, se desarrollaran las pertinentes configuraciones y validaciones, de un agente SNMP incluido en la suite NET-SNMP. Se revisarn las carencias, ventajas y desventajas de cada una de las revisiones del protocolo SNMP implementadas por NET-SNMP, realizando las validaciones funcionales y de seguridad pertinentes. Se har especial nfasis en la demostracin de las capacidades del marco de seguridad USM y el funcionamiento del control de acceso basado en el modelo VACM de SNMPv3. Una vez aclarados los objetivos y la metodologa a emplear, se describe a continuacin la estructura del presente documento: Seccin primera, en la que se detallan los conceptos fundamentales de SNMP, con el fin de facilitar la comprensin al lector. En esta seccin, se incluirn comentarios respecto a los modelos de seguridad empleados en las distintas revisiones del protocolo SNMP, o la estructura de almacenamiento de datos que SNMP toma como referencia, entre otros aspectos. Seccin segunda, en la que se profundiza sobre la implementacin del protocolo SNMP empleada, y algunas de las alternativas disponibles ms destacadas. Seccin tercera, en la que se recogen todos aquellos parmetros de configuracin reseables, las diferentes pruebas realizadas y los resultados obtenidos, en base al agente de gestin SNMP empleado. Seccin cuarta, en la que se realiza un anlisis de las principales conclusiones obtenidas tras las sesiones de laboratorio desempeadas. Tienen cabida en sta seccin tanto consideraciones personales, como tcnicas.

CONCEPTOS BSICOS DE SNMP El protocolo SNMP[1] o protocolo simple de administracin de red, es un protocolo de la capa de aplicacin que facilita el intercambio de informacin de administracin entre dispositivos de red. SNMP forma parte de la familia de protocolos TCP/IP y permite a los administradores supervisar el funcionamiento de la red, localizar y resolver sus anomalas, y planificar su crecimiento. Los componentes bsicos de una red gestionada mediante SNMP, son: Dispositivos administrados. Agentes. Sistemas administradores de red (NMSs - Network Management Systems) o gestores. Un dispositivo administrado es un nodo de red que contiene un agente SNMP y reside en una red administrada. Estos recogen y almacenan informacin de administracin, la cual es puesta a disposicin de los NMSs usando SNMP. Los dispositivos administrados, a veces llamados elementos de red, pueden ser routers, servidores de acceso, switches, hosts, hubs, etctera. Un agente es un mdulo de software de administracin de red que reside en un dispositivo administrado. Un agente posee un conocimiento local de informacin de administracin (memoria libre, nmero de paquetes IP recibidos, rutas, etctera), la cual es traducida a un formato compatible con SNMP y organizada en jerarquas, habitualmente en una base de datos denominada MIB (Management Information Base). Un NMS ejecuta aplicaciones que supervisan y controlan a los dispositivos administrados. Los NMSs proporcionan el volumen de recursos de procesamiento y memoria requeridos para la administracin de la red. Uno o ms NMSs deben existir en cualquier red administrada. El principio de funcionamiento de SNMP reside, por lo tanto, en el intercambio de informacin entre gestores y agentes. Habitualmente, los agentes mantienen en cada dispositivo gestionado informacin acerca de su estado y su configuracin. El gestor solicita al agente, a travs del protocolo SNMP, la realizacin determinadas operaciones (get, set) con datos de gestin, gracias a las cuales se puede conocer el estado del recurso e influir en su comportamiento. Cuando se produce alguna situacin anmala en un recurso gestionado, los agentes, sin necesidad de ser invocados por el gestor, emiten los denominados eventos o notificaciones, que son enviados a un gestor para que el sistema de gestin pueda actuar en consecuencia. Durante las diferentes revisiones del protocolo SNMP, se han ido mejorando sustancialmente las carencias de las versiones anteriores. SNMP en su ltima versin (SNMPv3) posee cambios significativos con relacin a sus predecesores, sobre todo en aspectos de seguridad, sin embargo no ha sido mayoritariamente aceptado en la industria. A continuacin describiremos con ms detalle, algunos de los mecanismos de seguridad empleados, que son el objetivo central de estudio del presente documento. El modelo de seguridad basado en usuario o USM[2] (User-Based Security Model) proporciona los servicios de autentificacin y privacidad en SNMPv3. El mecanismo de autentificacin en USM, asegura que un mensaje recibido fue trasmitido por la entidad indicada en el campo correspondiente a la fuente en la cabecera del mensaje; y adems, que el mensaje no fue alterado durante su trnsito, manipulado, artificialmente retardado o replicado. Con el fin de lograr la autentificacin, el gestor y el agente que desean comunicarse deben compartir la misma clave secreta de autentificacin, configurada previamente de forma externa a SNMPv3 (no es almacenada en la MIB y no es accesible mediante SNMP). El protocolo de autentificacin utilizado puede ser el HMAC-MD5-96 o el HMAC-SHA-96. Para asegurarse de que los mensajes llegan dentro de una ventana temporal razonable, que descarte el posible

retardo de mensajes y el ataque mediante mensajes replicados, se utilizan mecanismos de sincronizacin entre emisor y receptor, y el chequeo de la ventana temporal constituida por el intervalo temporal de emisin y recepcin del mensaje. Por otro lado, USM posibilita a los gestores y a los agentes el cifrado de mensajes con el fin de prevenir que stos sean analizados por intrusos. De nuevo, el gestor y el agente deben compartir una clave secreta configurada previamente. El algoritmo de encriptacin utilizado es el CBC (Cipher Block Chaining) de DES (Data Encryption Standard), conocido tambin por DES-56. El modelo de control de acceso basado en vistas o VACM (Views-Based Access Control Model) permite proporcionar diferentes niveles de acceso a las MIB de los agentes, para los distintos gestores en SNMPv3. Un agente puede, de este modo, restringir el acceso de ciertos gestores a parte de su MIB, o bien limitar las operaciones susceptibles de realizar por ciertos gestores sobre una parte de su MIB. La poltica de control de acceso a ser utilizada por el agente para cada gestor debe estar configurada previamente; consistiendo bsicamente en una tabla que detalla los privilegios de acceso para los distintos gestores autorizados. Mientras que la autentificacin es realizada por usuario, el control de acceso es realizado por grupos, donde un grupo podra ser un conjunto de usuarios. NET-SNMP Y ALTERNATIVAS DISPONIBLES NET-SNMP[3]es un conjunto de aplicaciones utilizadas para implementar SNMP v1, SNMP v2c y SNMP v3 utilizando IPv4 y/o IPv6. Esta suite nos proporciona todas las herramientas necesarias para interactuar con SNMP, obtener informacin, manipularla, visualizarla de forma grfica, etc. A su vez implementa un agente SNMP (snmpd), y un servicio para recibir notificaciones SNMP (snmptrapd). A modo de extensin, proporciona las libreras necesarias para el desarrollo propio de nuevas aplicaciones que interacten con SNMP. Como alternativa a NET-SNMP, cabe destacar las diferentes utilidades proporcionadas por MG-SOFT Corporation[4] , que proporciona un agente SNMP, herramientas grficas de visualizacin de MIBs, herramientas y plantillas de desarrollo para agentes SNMP, una utilidad cliente/servidor denominada Net Inspector, cuyo objetivo principal es monitorizar eficientemente dispositivos de red. Cabe destacar, la versatilidad de las herramientas que se nos ofrecen, disponibles muchas de ellas en varias plataformas, con gran documentacin, ejemplos, guas de instalacin y desarrollo, etctera. PROCEDIMIENTOS, PRUEBAS Y RESULTADOS Como punto de partida detallaremos la sintaxis de la orden snmpget, que nos permitir interrogar y de ste modo validar, el agente SNMP durante la fase de pruebas. Su sintaxis es la siguiente[5]:
snmpget v <versin> -c(comunidad) <ip del agente> <grupo OID>

ctm2x11@L9013:~> snmpget -v1 -c ltmlab 157.88.130.250 system.sysDescr.0 SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software IOS (tm) C3550 Software (C3550-I5Q3L2-M), Version 12.1(22)EA10b, RELEASE SOFTWARE (fc1) Copyright (c) 1986-2007 by cisco Systems, Inc. Compiled Thu 25-Oct-07 20:56 by antonino

El valor almacenado para el OID[1] (un identificador de objeto , object ID u OID, nicamente identifica un objeto administrado en la jerarqua MIB) sysDescr.0 es una descripcin del

agente, que incluye por ejemplo, la fecha y hora en que fue compilado el sistema operativo del dispositivo monitorizado, por ltima vez. En la pgina del manual de snmpcmd[5] se pueden consultar los parmetros comunes para todos los comando de NET-SNMP. En concreto, los dos parmetros empleados en la ejecucin de la orden snmpget anteriormente mostrada tienen el siguiente significado: -v: Especifica la versin del protocolo a usar. Por defecto, se utiliza la versin 3. -c: Especifica la comunidad. Posteriormente se indica la direccin IP de la entidad SNMP a la que se dirige la peticin, y por ltimo, el OID que se desea consultar. Una vez aclarado el funcionamiento y objetivo de la orden anterior, procedemos a generar un agente SNMPv1/2c con el fin de detallar el significado de las comunidades SNMP. Se utilizar la herramienta snmpconf, aplicacin que genera un fichero de salida, snmpd.conf, empleado por el demonio snmpd para aplicar las polticas de acceso. A continuacin, se muestran los pasos seguidos para la configuracin del agente SNMP v1/v2c bsico (Nota: con la opcin p lo crea en el directorio $HOME/.snmp del usuario):
ctm2x11@balbas:~> snmpconf -p 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: 1 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: Trap Destinations 2: System Information Setup 3: Access Control Setup 4: Extending the Agent 5: Monitor Various Aspects of the Running Host 6: Agent Operating Mode Other options: finished Select section: 3 Section: Access Control Setup Description: This section defines who is allowed to talk to your running snmp agent. Select from: 1: a SNMPv3 read-write user 2: a SNMPv3 read-only user 3: a SNMPv1/SNMPv2c read-only access community name 4: a SNMPv1/SNMPv2c read-write access community name Other options: finished, list Select section: 3 Configuring: rocommunity Description: a SNMPv1/SNMPv2c read-only access community name arguments: community [default|hostname|network/bits] [oid] The community name to add read-only access for: public The hostname or network address to accept this community name from [RETURN for all]: localhost

The OID that this community should be restricted to [RETURN for norestriction]: Finished Output: rocommunity public localhost

Obtenemos as el fichero de configuracin snmp en el directorio $HOME/.snmp, en el que se ha detallado la creacin de una comunidad de nombre public para SNMPv1/2c, accesible nicamente desde localhost, y sobre la cual obtendremos acceso de slo lectura sin restriccin alguna sobre ciertos OIDs de la MIB. A continuacin lanzamos el agente SNMP desde un terminal:
ctm2x11@balbas:~/.snmp> snmpd -f -C -c snmpd.conf localhost:10001 NET-SNMP version 5.4.1 Connection from UDP: [127.0.0.1]:35412

La ltima lnea de la salida anterior surge tras realizar la peticin al agente SNMP que se detalla a continuacin. Se nos indica la correcta comunicacin entre el gestor y el agente SNMP, describindose, el protocolo, IP y puerto a travs del cual el gestor ha realizado la peticin que se detalla a continuacin:
ctm2x11@balbas:~> snmpget -v1 -c public localhost:10001 system.sysUpTime.0 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (447) 0:00:04.47

Tras realizar la peticin, se observa en la consola correspondiente a la ejecucin del agente el host y puerto del que se ha recibido dicha peticin, que se corresponde con la IP de localhost, nica permitida en la configuracin del agente. Cabe destacar que al intentar modificar un OID de esta comunidad, como cabe de esperar al ser de solo lectura, obtenemos una negativa, como se muestra a continuacin:
ctm2x11@balbas:~> snmpset -v1 -c public localhost:10010 system.sysLocation.0 s "Laboratorio de CTM II" Error in packet. Reason: (noSuchName) There is no such variable name in this MIB. ctm2x11@balbas:~> snmpset -v2c -c public localhost:10010 system.sysLocation.0 s "Laboratorio de CTM II" Error in packet. Reason: noAccess

Una vez comprobadas, las virtudes y debilidades de la poltica de comunidades, daremos un paso ms y avanzaremos hacia los objetivos prefijados. Cabe destacar que la poltica de comunidades, permite filtrar las peticiones por acceso de host, red o subred; sin embargo, esto no deja de ser una carencia de seguridad, puesto que la informacin sensible que albergan las MIB utilizadas por SNMP, no dejaran de ser accesibles por personas ajenas a nuestro control que puedan cumplir en un momento determinado con las escasas restricciones impuestas. Se realizar a continuacin un anlisis pormenorizado de USM y VACM, demostrando su viabilidad, y describiendo como se han tratado de paliar las carencias de las polticas anteriores descritas. El fichero snmpd.conf (editado manualmente) sobre el que se han generado las pruebas contiene lo siguiente:
# SECTION: Access Control Setup # This section defines who is allowed to talk to your running snmp agent.

# SNMP v3 createUser ctm2x11 MD5 claveMD5 DES claveDES rouser ctm2x11 priv -V system #SNMP v1 y v2c com2sec secrosystem 127.0.0.1/32 rosystem com2sec secrwall 127.0.0.1/32 rwall com2sec secrwsystem 127.0.0.1/32 rwsystem group grouprosystem v1 secrosystem group grouprosystem v2c secrosystem group grouprosystem usm secrosystem group grouprwall v1 secrwall group grouprwall v2c secrwall group grouprwall usm secrwall group grouprwsystem v1 secrwsystem group grouprwsystem v2c secrwsystem group grouprwsystem usm secrwsystem view all included .1 view system included system access grouprwall "" any noauth exact all access grouprosystem "" any noauth exact system access grouprwsystem "" any noauth exact all sysContact ctm2x11 sysName Asignatura de CTMII

all none system

none none none

Como se puede observar en el contenido del fichero, se define para SNMPv3 un usuario con sus contraseas de acceso, al que se le permite interrogar al agente SNMP instanciado. Por otra parte para SNMPv1/2c, se mapean una serie de comunidades de acceso, a las que se les define los accesos garantizados, lectura, escritura o ambos simultneamente. Consultamos con la comunidad rwall las variables system.sysName y snmp.snmpInPkts.0. El resultado esperado es que ambas puedan ser ledas y escritas.
ctm2x11@balbas:~> snmpget -v2c -c rwall localhost:10008 system.sysName.0 SNMPv2-MIB::sysName.0 = STRING: Asignatura de CTMII ctm2x11@balbas:~> snmpget -v2c -c rwall localhost:10008 snmp.snmpInPkts.0 SNMPv2-MIB::snmpInPkts.0 = Counter32: 3 ctm2x11@balbas:~> snmpset -v2c -c rwall localhost:10008 system.sysLocation.0 s "Laboratorio de CTM II" SNMPv2-MIB::sysLocation.0 = STRING: Laboratorio de CTM II

Consultamos con la comunidad rosystem las variables system.sysName y snmp.snmpInPkts.0. El resultado esperado es que system.sysName pueda ser leda, y que snmp.snmpInPkts.0 no. Adems, ninguna de las dos debe poderse escribir.

ctm2x11@balbas:~> snmpget -v2c -c rosystem localhost:10008 system.sysName.0 SNMPv2-MIB::sysName.0 = STRING: Asignatura de CTMII ctm2x11@balbas:~> snmpget -v2c -c rosystem localhost:10008 snmp.snmpInPkts.0 SNMPv2-MIB::snmpInPkts.0 = No Such Object available on this agent at this OID ctm2x11@balbas:~> snmpset -v2c -c rosystem localhost:10008 system.sysLocation.0 s "Laboratorio de CTM II" Error in packet. Reason: noAccess

Consultamos con la comunidad rwsystem las variables system.sysName y snmp.snmpInPkts.0. El resultado esperado es que ambas variables puedan ser ledas y que las del grupo system puedan ser escritas.
ctm2x11@balbas:~> snmpget -v2c -c rwsystem localhost:10008 system.sysName.0 SNMPv2-MIB::sysName.0 = STRING: Asignatura de CTMII ctm2x11@balbas:~> snmpget -v2c -c rwsystem localhost:10008 snmp.snmpInPkts.0 SNMPv2-MIB::snmpInPkts.0 = No Such Object available on this agent at this OID ctm2x11@balbas:~> snmpset -v2c -c rwsystem localhost:10008 system.sysLocation.0 s "Laboratorio de CTM II" SNMPv2-MIB::sysLocation.0 = STRING: Laboratorio de CTM II

Consultamos con el usuario ctm2x11 de la versin 3. Este usuario tiene permisos de slo lectura sobre la vista system.
ctm2x11@balbas:~> snmpget -v3 -u ctm2x11 -l authPriv -a MD5 -A claveMD5 -x DES -X claveDES localhost:10008 system.sysName.0 SNMPv2-MIB::sysName.0 = STRING: Asignatura de CTMII ctm2x11@balbas:~> snmpget -v3 -u ctm2x11 -l authPriv -a MD5 -A claveMD5 -x DES -X claveDES localhost:10008 snmp.snmpInPkts.0 SNMPv2-MIB::snmpInPkts.0 = No Such Object available on this agent at this OID ctm2x11@balbas:~> snmpset -v3 -u ctm2x11 -l authPriv -a MD5 -A claveMD5 -x DES -X claveDES localhost:10008 system.sysLocation.0 s "Laboratorio de CTM II" Error in packet. Reason: noAccess

Por ltimo destacar dos rdenes que permiten interactuar con el agente y reescribir configuraciones de USM y VACM, sin necesidad de detener el agente: SNMPUSM: Permite realizar un mantenimiento simple de los usuarios de un agente SNMP, mediante la manipulacin de la tabla USM del agente. El usuario que lo ejecuta, necesita poseer permisos de escritura en la tabla usmUserTable de la MIB del agente. Este comando permite realizar una modificacin en la tabla USM del agente, sin necesidad de detener el mismo para aadir, modificar o eliminar usuarios. A continuacin se muestras dos ejemplos de creacin y clonacin de un usuario.
ctm2x11@balbas:~> snmpusm -v3 -u ctm2x11 -l authPriv -a MD5 -A claveMD5 -x DES -X claveDES localhost:10008 create nuevo User successfully created. ctm2x11@balbas:~> snmpusm -v3 -u ctm2x11 -l authPriv -a MD5 -A claveMD5 -x DES -X claveDES localhost:10008 cloneFrom nuevo ctm2x11 User successfully cloned.

SNMPVACM: Permite realizar un mantenimiento simple de las tablas VACM de un agente SNMP. Su utilidad reside en que no es necesario detener el agente SNMP para realizar operaciones. A continuacin se muestra el uso de este comando para la creacin de una nueva entrada de la lista de acceso:
ctm2x11@balbas:~> snmpvacm -v3 -u ctm2x11 -l authPriv -a MD5 -A claveMD5 -x DES -X claveDES localhost:10008 createSec2Group 3 nuevo nombregrupo Sec2group successfully created.

ctm2x11@balbas:~> snmpvacm -v3 -u ctm2x11 -l authPriv -a MD5 -A claveMD5 -x DES -X claveDES localhost:10008 createView vista all "" View successfully created. ctm2x11@balbas:~> snmpvacm -v3 -u ctm2x11 -l authPriv -a MD5 -A claveMD5 -x DES -X claveDES localhost:10008 createAccess nombregrupo 3 3 1 vista none none Access successfully created.

CONCLUSIONES SNMP es un protocolo sencillo pero potente, permite monitorizar los recursos de red sin sobrecargar de sobremanera los dispositivos que intervienen en su mbito de aplicacin. No obstante, las sucesivas revisiones que se han llevado a cabo y las venideras, incrementarn la complejidad y las posibilidades de esta filosofa de gestin, aunque ello supondr obviamente un aumento del consumo de recursos. Por otra parte, son necesarias mejoras, como se ha ido demostrando, puesto que la definicin de SNMP ms primitiva careca de mecanismos de seguridad, y muchos de los avances en las revisiones siguientes, no fueron capaces de paliar completamente el problema existente. SNMPv3 ha supuesto un gran avance en cuanto a privacidad y seguridad se refiere, aadiendo posibilidades de cifrado, autentificacin unitaria de usuarios, modelos de vistas definidas exhaustivamente y de forma individual, normalizando y paliando las carencias anteriores. A nivel personal, aunque nuestro aprendizaje de SNMP resulte un tanto bsico, se torna interesante comprender la problemtica de la gestin integrada y lo complicado de encontrar soluciones simples, pero eficientes y robustas. Como grupo con caractersticas un tanto particulares, destacar el esfuerzo que hemos tenido que realizar para trabajar en horas fuera del horario lectivo, con el fin de equiparar nuestros avances y ritmo de trabajo con el de nuestros compaeros. Aunque la prctica una vez realizada pueda parecer liviana y capaz de ser resumida en unos cuantos comandos, la documentacin, el esfuerzo de aprendizaje y comprensin de lo desconocido, hasta alcanzar una visin global del problema, su dimensin y las soluciones que se han tomado por parte de aquellos que trabajan en el diseo de soluciones como SNMP, compensa con creces lo liviano y escueto del informe y la presentacin.

BIBLIOGRAFA [1] [2] [3] [4] [5] http://es.wikipedia.org/wiki/SNMP http://www.ramonmillan.com/tutoriales/snmpv3.php http://www.net-snmp.org/ http://www.mg-soft.com/index.html Pginas de manual incluidas en la distribucin del sistema operativo, orden man.

S-ar putea să vă placă și