INSTALACIÓN Y CONFIGURACIÓN DE UN AGENTE DE GESTIÓN SNMPv3 Judit de la Calzada Cuesta Rubén Frías Simón Laura de la Parra Jiménez Resumen En este documento se va a abordar el problema de la gestión de redes y cómo podemos tratarlo mediante un agente snmp. En primer lugar se dará una visión de la motivación para la instalación de un agente snmp para gestionar una red y posteriormente pasar a dicha instalación en un entorno de trabajo determinado. Con esto se conseguirá gestionar adecuadamente nuestro entorno de trabajo mediante el agente instalado y por lo tanto resolver en parte el problema de la gestión de la red. 1. Introducción Podemos ver una red de comunicaciones de forma simplificada como un conjunto de recursos de red, es decir, como un conjunto de nodos de conmutación a los que se pueden conectar los usuarios, y unos enlaces de comunicación que sirven para interconectar los distintos nodos. Los usuarios entienden que una red funciona según la disponibilidad de los servicios, lo implica el correcto funcionamiento, operatividad y configuración de todos los sistemas que intervienen en una comunicación. Estos requisitos necesitan de forma obligatoria una gestión de red adecuada, ya que sin una detección y corrección de errores, no se puede proporcionar la atención a los requerimientos demandados por los usuarios. Ante la necesidad ya citada de la gestión de recursos, la gestión de las redes se plantea como una cuestión clave para garantizar la disponibilidad y el correcto nivel de servicio de los requerimientos de los usuarios de la red. Las redes de comunicaciones toman mayor importancia a medida que aumentan de tamaño y por tanto de complejidad, por ello, uno de los mecanismos de gestión de redes que más se utilizan a pesar de su relativa simplicidad es el protocolo SNMP, que facilita el intercambio de información de gestión y administración entre los dispositivos de la red. En SNMPv1 aparecían algunas debilidades, como la debida a la transmisión de grandes volúmenes de datos y la falta de un mecanismo de seguridad principalmente. Para hacer frente a estas debilidades se creó SNMPv2 que mejoraba las características funcionales, la información a gestionar y la comunicación gestor-gestor, aunque seguía planteando falta de consenso en lo que se refiere a la seguridad. [1] Debido a la persistencia de algunos de los anteriores problemas, en 1997 aparece la versión SNMPv3 que modifica algunos de los aspectos funcionales de las anteriores versiones, definiendo la arquitectura en forma de árbol que hoy conocemos y mejorando la capacidad de seguridad y control de acceso, asegurando el proceso de autenticación y la privacidad de los datos, añadiendo así seguridad a la versión SNMPv2 anterior, según los RFCs 2570 a 2576. Una vez se han explicado las causas que nos llevan a plantearnos la necesidad de la gestión de redes y su posible solución a través del estudio e implementación (gestión correcta) de los componentes SNMP en las distintas versiones de este protocolo, y una vez presentadas las diferentes ventajas que proporcionan para la gestión de redes, pasamos a explicar la estructura en la que se presenta este documento. El apartado 2 describe el funcionamiento del protocolo simple de gestión de redes SNMP, se realiza un estudio del mecanismo de gestor agente por el que se rige, es decir, se explican los principales elementos que lo componen, finalmente se muestran una serie de pruebas realizadas sobre estas versiones de forma análoga para facilitar una mayor comprensión del lector de varias de las aplicaciones SNMP (snmpget, snmpgetnext, snmptable) y sus ventajas. El apartado 3 plantea la necesidad de la gestión de red en el entorno de trabajo utilizado para esta práctica, bajo el software abierto NET SNMP. El apartado 4 trata la implementación de un agente, primero en SNMPv1, y posteriormente en SNMPv3, mostrando las diferencias entre las distintas formas de configuración. En el apartado 5 se lleva a cabo una demostración de las capacidades de SNMPv3, por ser el más actual y el principal en este informe, es decir trataremos la creación dinámica de usuarios, y la modificación de los permisos que estos poseen para acceder a las distintas partes de la MIB. Por último, el apartado 6, desarrolla las conclusiones finales obtenidas tras la realización de esta práctica. 2. Necesidad de la gestión en nuestro entorno de trabajo. 2.1. Descripción del entorno Esta práctica se desarrolla en el entorno de software abierto NET-SNMP, que inicialmente desarrolló un protocolo de gestión de red relativamente nuevo, llamado SNMP, y que incluía una librería, una selección de comandos sencillos, y un agente que proporcionaba información de gestión de red, como definía el RFC 1213. [4] Posteriormente el agente se extendió para proporcionar información sobre los sistemas locales, precursor privado de la MIB de recursos del Host, también proporcionaba cierta información sobre situaciones de error y era capaz de ejecutar determinados scripts y comunicar los resultandos. Poco a poco, el código se hizo abierto, de modo que los usuarios podían añadir nuevos parches y realizar sugerencias sobre posibles mejoras, que permitían que las cuestiones de administración fueran más sencillas, al mismo tiempo que se hacían nuevas reestructuraciones del entorno agente, con una API de la MIB mucho más flexible. Actualmente este software tiene distintos paquetes independientes y se encuentra instalado por defecto en la mayoría de las distribuciones de sistemas Linux, y de Distribuciones Software de Berkeley (DSB). Net-SNMP está disponible para muchos sistemas operativos Unix y también para Microsoft Windows, y aunque la versión más actual de este software es la versión 5.5, en el laboratorio 2L009 está instalada la versión 5.4.1, que nos ha resultado más que suficiente para entender el funcionamiento del protocolo SNMP, de forma que Net-SNMP, el software utilizado para el desarrollo de esta práctica , es un conjunto de aplicaciones utilizados para implementar SNMP v1, SNMP v2c y SNMP v3 utilizando tanto IPv4 como IPv6, y que incluye: [4] Aplicaciones de línea de comandos para: o Recuperar información de un dispositivo compatible con SNMP, bien usando peticiones simples (snmpget, snmpgetnext), o peticiones múltiples (snmpwalk,snmptable, snmpdelta). o Manipular la configuración de un dispositivo compatible con SNMP (snmpset). o Recuperar un conjunto de información de un dispositivo compatible con SNMP (snmpdf, snmpetstat, snmpstatus). o Convertir entre formas numéricas y textuales de los identificadores de objetos de la MIB (Management InformationTable) ,y mostrar el contenido y estructura de la MIB (snmptranslate). Un explorador gráfico de MIB. Una aplicación “demonio” para recibir notificaciones SNMP (snmptrad). Las notificaciones puede registrarse, reenviarse a otro agente gestor SNMP, o pasarse a una aplicación externa. Un agente extensible para responder a peticiones SNMP de información de gestión (snmpd). Y una Liberia que permite desarrollar nuevas aplicaciones SNMP, con APIs tanto de C como de perl. Las aplicaciones SNMP que vamos a utilizar para el desarrollo de esta práctica se pueden clasificar en varios niveles según la documentación consultada: básico (snmpget, snmpgetnext, snmpwalk, snmpset), de segundo nivel (snmptable, snmpvacm), y de configuración (net-snmp-config, snmpconf) [4] 2.2. Problemática de la gestión Las redes de comunicación actuales están principalmente caracterizadas por un incremento constante tanto del numero de recursos que las componen, como por la distinta complejidad y heterogeneidad de los mismos, por ello, los principales problemas que hoy en día nos encontramos, y que se deben a esta constante necesidad de escalabilidad y expansión, están estrechamente unidos a la gestión de las redes, cuestión que, como se ha indicado anteriormente, toma cada vez mayor relevancia. La gestión de las redes se encarga de asegurar el correcto funcionamiento de todos los sistemas y de la planificación estratégica de su crecimiento futuro y previsible. Se puede entender por gestión integrada de red, el conjunto de actividades para controlar y vigilar de forma centralizada todos los recursos de un sistema. El protocolo de gestión de red simple o SNMP (Simple Network Management Protocol), es un protocolo de la capa de aplicación de TCP/IP que facilita el intercambio de información de gestión entre dispositivos de red y permite a los administradores de forma sencilla gestionar el rendimiento de un sistema y encontrar y solucionar problemas, así como planificar el crecimiento futuro de la red. Por ello, en los apartados sucesivos, se detallará la instalación y configuración de un agente SNMP, para mostrar las ventajas que este sencillo protocolo puede proporcionarnos como medio para conseguir la gestión simple de las redes de comunicaciones. 3. Estudio previo 3.1 Estudio agente-gestor El fundamento principal del protocolo SNMP es el paradigma gestor agente, de tal forma que sólo define el protocolo para el intercambio de información de gestión entre el gestor y el agente y el formato para representar la información de gestión o MIB [2]. Se compone principalmente de tres componentes claves [3]: dispositivos administrados, agentes, y sistemas administradores de red. El dispositivo administrativo es un simple nodo de red que contiene el agente, pueden ser routers, switches….El agente es un componente software que se ejecuta en el dispositivo a gestionar. Y los sistemas administradores de red ejecutan aplicaciones que supervisan y controlan a los dispositivos administrativos. 3.2. Pruebas sobre agente SNMP previamente instalado Llegados a este punto, consideramos necesario realizar una serie de peticiones al router de la Escuela a modo de prueba, empleando el agente SNMP que está instalada en balbas, para de esta forma asimilar el funcionamiento de la aplicación NET-SNMP. La primera petición que realizamos al router fue una descripción del mismo, mediante el comando “snmpget” y obtuvimos el modelo, la versión del software, la fecha de compilación y el usuario que llevo a cabo dicha compilación. Como mostramos en la siguiente captura. Otra prueba realizada fue la de la pedirle al router el siguiente OID en el árbol de datos del MIB, mediante el comando “snmpgetnext” obteniendo como resultado el siguiente OID en el árbol y su valor. De esta forma mediante sucesivas peticiones podemos completar la estructura del árbol. Como se muestra en el siguiente ejemplo. Otra forma de obtener la tabla de encaminamiento es mediante el comando “snmptable” como se muestra a continuación. De esta forma obtenemos principalmente la dirección IP origen, próximo salto y el protocolo de encaminamiento. Como se muestra a continuación. 4. Implementación solución agente Una vez estudiado el comportamiento del gestor SNMP y las necesidades de nuestro entorno de trabajo, pasamos a realizar la configuración del agente mediante el comando “snmpconf -g basic_setup”. En primer lugar realizaremos la configuración de la versión 1 que resulta más sencilla de llevar a cabo. 4.1. Instalación agente snmpv1 Una vez ejecutado el comando “snmpconf -g basic_setup” se nos abre una interfaz, donde se nos va pidiendo la información necesaria para configurar el agente, lo primero es seleccionar el tipo de fichero a crear, en este caso el fichero que se ha de seleccionar es el “/etc/snmp/snmpd.conf ”. Posteriormente el paso más importante es seleccionar la opción de configurar el acceso al agente y la opción “SNMPv1/v2 cread-write community”, asignarle una dirección IP y un puerto además de darle nombre a la comunidad. Una vez realizado estos pasos podemos comprobar si la configuración se ha llevado a cabo consultando el fichero “snmpd.conf”, si todo esta correcto ya podemos lanzar el agente y realizar diferentes peticiones como la que se muestra a continuación. 4.2. Instalación agente snmpv3 Para configurar el agente de la versión 3, tendremos que escoger la opción “SNMPv3 read-write” en lugar de la previamente seleccionada. Además la principal diferencia que nos encontramos con la versión anterior es la necesidad de crear un usuario, que lo haremos incluyendo la secuencia “createUser usuario MD5 password DES password1” en el fichero “snmpd.conf”. Una de las principales diferencias de esta versión con respecto a las anteriores es que podemos configurar el agente asignándoles diferentes funciones, en primer lugar le creamos para que no realice funciones de autentificación, utilizando la opción noAuthNoPriv, de tal forma que para poder realizar una petición no nos sirve el comando anterior, sino que debemos además indicarle el usuario como se muestra en la siguiente captura. A continuación configuramos el agente de forma que realice funciones de autenticación pero no de cifrado. Para ello se utiliza la directiva authNoPriv y a la hora de realizar la petición además de indicar el usuario deberemos indicar también su contraseña, como se observa en la siguiente captura. Con esta opción no se cifran las comunicaciones, si queremos cambiar esto deberemos decantarnos por la opción authPriv, de tal forma que a la hora de hacer la petición deberemos incluir a mayores la contraseña del cifrado, como se muestra en la siguiente captura. 5. Pruebas de capacidades del agente snmpv3 Una vez que se ha instalado correctamente el agente snmpv3 en balbas se va a pasar a realizar unas pruebas de las capacidades que este ofrece a sus usuarios. En el apartado anterior se vio como se creo un usuario al incluir en el fichero “snmp.conf” la línea “createUser usuario MD5 password DES password1” en el fichero “snmpd.conf”. Esto nos representa un problema a la hora de crear los usuarios pues necesitamos detener el agente cada vez que queramos crear un nuevo usuario. Por lo tanto el primer caso que se tratará será del de la creación dinámica de los usuarios mientras el agente este ya corriendo. Para con ello, poder resolver el problema anteriormente descrito. Una vez que se ha conseguido crear dichos usuarios se pasará a darlos diferentes permisos haciendo que sólo puedan acceder a la parte de la MIB a la que le demos acceso. 5.1. Creación dinámica de usuarios Como se ha comentado anteriormente en este punto se va a tratar la creación de usuarios una vez que tenemos el agente corriendo. Para la creación del nuevo usuario se va a utilizar el comando “snmpusm”,concretamente se utilizará con la opción “create”. Con esta opción conseguimos clonar un usuario de uno previamente creado otorgándole su clave y sus características. Sin embargo, con esto no se consigue que el usuario pueda tener permiso a la MIB y por lo tanto funcione correctamente. Para configurarlo correctamente es necesario realizar varias acciones sobre este usuario. En la siguiente imagen se detallan los diferentes comandos necesarios para configurar nuestro nuevo usuario: A continuación se pasa a detallar la función de cada uno de los comandos mostrados en la imagen anterior. Una vez creado el usuario se le tiene que asignar un grupo que en primer lugar hay que crear. Para realizar esta operación se utiliza el comando “snmpvacm ... createSec2Group 3 newuser grupo”. En el se ha creado un grupo llamada “grupo” y se le ha unido a el al usuario “newuser”. Además, con el 3 le indicamos que se está utilizando el modelo de seguridad USM. Con esto ya se habría unido al nuevo usuario a un grupo. A continuación se pasa a crear una vista, con la vista se consigue determinar a que parte de la MIB se va a acceder. En nuestro caso le vamos a dar acceso al árbol a partir de “system”. Por último se le dará acceso al grupo creado anteriormente en el que se encuentra el nuevo usuario a la vista. Por lo tanto lo que se va a realizar va a ser el dar acceso a la región del árbol que se definió en la vista. Con esto ya se habría dado permiso al nuevo usuario para realizar consultas al agente en la parte a la que le hemos dado el permiso. Se puede ver como esto realmente es cierto y como al realizar una petición “snmpget” con este nuevo usuario se consigue el resultado correcto. 5.2. Modificación de los permisos de usuarios En este punto se va a tratar de modificar los permisos asignados a los usuarios. Al igual que en el apartado anterior, se deberá de realizar mientras el agente “snmpv3” esta corriendo. Para la modificación de los permisos en primer lugar se va a utilizar el comando “snmpvacm” en este caso con la opción deleteAccess. Con ello vamos a denegar el acceso al grupo especificado para la vista previamente definida. En la siguiente imagen se muestra una prueba del funcionamiento. En primer lugar se ha dado acceso a un usuario como se comento en el apartado anterior y vemos como es capaz de realizar la petición “snmpget” correctamente. Sin embargo, tras la ejecutar el comando oportuno el permiso es denegado y no es capaz de atender dicha solicitud. Con este comando y la utilización adecuada de las vistas resulta muy sencillo ir asignando y quitando permisos a los usuarios para las partes de la MIB que se desee. 6.Conclusiones De la realización de este trabajo se han obtenido diversas conclusiones importantes. La primera es que la gestión de redes es algo muy importante y útil para conocer el estado de nuestra red. En este punto el programa “snmp” resulta ser una gran herramienta para llevar a cabo dicha gestión. En cuanto a lo que se refiere al protocolo “snmp” se ha observado que es una utilidad muy sencilla y eficaz a la hora de gestionar nuestra red. Pero a nuestro juicio dicha sencillez es probablemente también un problema debido a que no nos ofrece unas garantías de seguridad suficientes. En el caso de estar utilizando la versión 1 de snmp la seguridad es algo casi inexistente y prácticamente cualquiera va a poder acceder a los datos que se comparten entre agente y servidor con el consiguiente problema. Para ello se ha seguido trabajando con el agente pero en su versión 3 en la que nos ofrece mayores medidas de seguridad con un acceso a los recursos basado en la existencia de usuarios con claves que permiten la autenticación de los mismos. Además, también se va a poder trabajar en modo privado en el que se utilizan conexiones cifradas. Esta nueva versión por lo tanto mejora en gran medida la seguridad existente en anteriores versiones. Además, “snmp” ofrece una gran flexibilidad a la hora de trabajar pudiendo crear usuarios mientras tenemos el propio agente corriendo, esto resulta una ventaja. Además, podemos dar acceso solamente a la parte de la MIB que se necesite evitando con ello que usuarios sin permisos accedan a datos críticos de la gestión. Además, siempre se puede eliminar dichos permisos en cualquier momento. Esto a nuestro juicio es una gran ventaja y una buena medida de seguridad. Por lo tanto se puede concluir que “snmp” es muy sencillo y útil para la gestión de red pero sin embargo, en sus primeras versiones no nos ofrece unas garantías de seguridad y confidencialidad en los datos transmitidos suficiente, algo que se mejora considerablemente con la versión 3. 6. Bibliografía [1] Juan Ignacio Asensio Pérez “Apuntes Complementos Telemáticos II” ESTIT-UVA, 30 de Marzo de 2010. [2] Consultaría estratégica en tecnologías de la información y comunicaciones http://www.ramonmillan.com/tutoriales/snmpv3.php Fecha de última visita 19 de Mayo de 2010 [3] William Stallings “SNMP, SNMPv2, SNMPv3, AND RMON 1 and 2” Tercera Edición, Editorial Addison Wesley [4] Página oficial de NET-SNMP http://www.net-snmp.org/ Fecha de última visita 19 de Mayo de 2010.