ÍNDICE CAPÍTULO 1. INTRODUCCIÓN 7 CAPÍTULO 2. GESTIÓN DEL PROYECTO 9 2.1 Descripción del proyecto 2.2 Objetivos del proyecto 2.3 Alcance del proyecto 2.4 Planificación temporal 2.5 Riesgos y planes de contingencia 2.6 Método de trabajo 2.7 Gestión real del proyecto CAPÍTULO 3. DESCRIPCION DEL PROTOCOLO SNMP 3.1 Introducción 3.2 Evolución histórica del protocolo SNMP 3.3 Arquitectura de un sistema de gestión de red 3.3.1 Entidad gestora 3.3.2 Dispositivos a gestionar 3.3.3 Protocolo de gestión 9 9 10 11 13 14 14 19 19 19 21 21 21 22 3.4 Modelo de información 23 3.4.1 Estructura de la información de administración 3.4.2 MIB 3.4.3 Operaciones de SNMP 3.4.4 La seguridad en SNMP 3.5 Conclusiones 23 24 28 31 31 CAPÍTULO 4. DESARROLLO TEÓRICO 4.1 Introducción (finalidad del proyecto) 4.2 Captura de requerimientos hardware 4.3 Captura de requerimientos software 4.3.1 El Sistema Operativo 4.3.2 Los agentes 4.3.3 Análisis de herramientas de monitorización de datos 4.3.4 Servidor http 4.3.5 Análisis de herramientas para la comunicación de redes IP y GSM 4.4 Conclusiones 33 33 33 35 35 36 37 37 38 38 CAPÍTULO 5. DESARROLLO PRÁCTICO 5.1 Instalación, configuración y pruebas de los agentes 5.1.1 Linux – Debian (Net-SNMP) 5.1.2 Otros agentes SNMP para Linux 5.1.3 Windows 2000, Windows 2003 Server 5.2 Instalación y configuración de MRTG 5.3 Instalación y configuración del servidor HTTP, Apache 5.4 Instalación y configuración de Gnokii 5.5 Conclusiones CAPÍTULO 6. CONCLUSIONES 39 39 39 44 45 49 63 65 69 71 1 CAPÍTULO 7. BIBLIOGRAFÍA 73 ÍNDICE DE FIGURAS Figura 1. Diagrama EDT Figura 2. Diagrama de Gantt inicial Figura 3. Tareas y diagrama de Gantt real Figura 4. Ubicación del protocolo SNMP en el modelo OSI Figura 5. Componentes principales de una arquitectura de gestión de red Figura 6. Árbol de objetos MIB Figura 7. Implementación parcial del módulo system Figura 8. Formato de las PDUs en SNMPv2 Figura 9. Operaciones SNMP Figura 10. Instalación del paquete snmp a través del comando apt-get Figura 11. Definición de los nombres de comunidad y grupos asignados Figura 12. Relación entre modelos de seguridad y grupos Figura 13. Definición de vistas y tipo de acceso Figura 14. Proceso snmp escuchando en el puerto 161 a través del protocolo UDP Figura 15. Salida del comando snmpget Figura 16. Salida del comando snmpget con múltiples variables Figura 17. Salida del comando snmpgetnext Figura 18. Salida del comando snmpwalk Figura 19. Utilización del comando snmpset Figura 20. Salida del comando snmpstatus Figura 21. Salida del comando snmptranslate Figura 22. Salida del comando snmpnetstat Figura 23. Panel de instalación del agente SNMP en Windows Figura 24. Estado del servicio SNMP Figura 25. Panel de propiedades del servicio SNMP Figura 26. Detalles de las opciones del menú Servicio Figura 27. Panel de configuración de Seguridad del servicio SNMP Figura 28. Instalación de los módulos necesarios para MRTG Figura 29. Opciones globales para el archivo mrtgcpu.cfg Figura 30. Implementación parcial del archivo de configuración mrtg.cfg Figura 31. Implementación parcial del archivo mrtgdiscos.cfg Figura 32. Implementación del script snmp_hdfree Figura 33. Implementación parcial del archivo mrtgfreemem.cfg Figura 34. Implementación del script snmp_windowsmemfree Figura 35. Implementación parcial del archivo mrtgnumprocses.cfg Figura 36. Implementación parcial del archivo mrtgonoff.cfg Figura 37. Implementación del script para comprobar el estado, on/off, de un dispositivo Figura 38. Utilización del comando cfgmaker Figura 39. Implementación parcial del archivo mrtgredservers.cfg creado mediante el comando cfgmaker Figura 40. Implementación parcial del archivo mrtgroutercisco.cfg creado mediante el comando cfgmaker Figura 41. Implementación del script galarma Figura 42. Implementación del script galarmaok Figura 43. “Compilación” de los archivos de configuración 2 Figura 44. Tareas a realizar de manera periódica Figura 45. Utilización del comando indexmaker Figura 46. Menú principal de acceso a las gráficas Figura 47. Vista global de las gráficas Figura 48. Vista detallada de las gráficas Figura 49. Instalación del módulo apache2 Figura 50. Configuración de apache2, permisos de acceso por IP Figura 51. Utilización del comando htpasswd2 Figura 52. Configuración de apache2, autorizaciones Figura 53. Menú de acceso a las gráficas Figura 54. Conexión del cable de datos al teléfono móvil Figura 55. Instalación del modulo gnokii Figura 56. Configuración de gnokii, modelo de móvil y conexión Figura 57. Configuración de gnokii, tiempo de espera Figura 58. Comprobación de la instalación de gnokii mediante el comando gnokii –monitor Figura 59. Enviar sms a través de gnokii Figura 60. Script galarma Figura 61. Script galarmaok Figura 62. Recepción de una alerta 3 CAPÍTULO 1. INTRODUCCIÓN Aquí comienza el desarrollo de este Proyecto Fin de Carrera (de aquí en adelante PFC), titulado “Implantación de un sistema de gestión de dispositivos de red, basado en el protocolo SNMP”, el cual se encuentra enmarcado dentro del amplio mundo de las redes informáticas. El centro de formación Cebanc-Cdea, situado en San Sebastián, cuenta con su propia red informática formada por una gran cantidad de dispositivos informáticos diferentes. A los administradores informáticos de esta empresa, les resultaba algo incómodo y tedioso el hecho de tener que comprobar el funcionamiento de estos dispositivos además de sentir una cierta frustración cuando uno o varios de ellos fallaban sin conocer el motivo. De esta manera les surgió la idea de implantar en su red un sistema de gestión o control, de tal forma que fuera el propio sistema el que les avisara de los fallos en la red y evitarse así el tener que realizar ellos mismos periódicamente controles. Mi gran pasión por las redes informáticas y el hecho de realizar prácticas en esta empresa durante el verano del año 2002, provocaron el comienzo del desarrollo de este proyecto. Para mí, consistía un gran reto y una ampliación en mis conocimientos informáticos, ya que desconocía casi por completo el mundo de las gestiones de las redes informáticas. El presente documento tratará de explicar todos los pasos que se han llevado a cabo en la realización de este proyecto. Inicialmente se desarrollará el Documento de Objetivos del Proyecto (DOP), que reúne los objetivos a completar, los cuales obviamente han sido solicitados por la empresa Cebanc-Cdea, así como una serie de puntos sobre la gestión del propio proyecto. Posteriormente se pasa al aspecto más laborioso e importante de todo este documento donde se realiza el estudio y aprendizaje del protocolo de gestión de red utilizado, que servirá de base para el posterior desarrollo práctico. Para concluir se comentarán una serie de conclusiones personales obtenidas tras la finalización del proyecto. Por último, me gustaría comentar, que este documento no pretende ser un manual global para implantar un sistema de gestión en una red informática, ya que existen múltiples maneras de gestionar una red, las cuales varían en función de los requerimientos y necesidades de las propias redes. No se intenta que el sistema de gestión que se desarrollará a continuación, sea mejor o peor que otros, sino que sea el óptimo para la red en la que se va a implantar. 4 CAPÍTULO 2. GESTIÓN DEL PROYECTO En este capítulo se abordará todo lo relativo a la gestión de este PFC. Se explicará de una forma resumida en qué consiste el proyecto y cuáles son los objetivos que se pretenden conseguir. Seguidamente se desarrollará el alcance, la planificación temporal, una lista de riesgos junto con su plan de contingencia así como la metodología a seguir para la buena realización de este PFC. Finalmente se realizará un apartado sobre la gestión real del proyecto, en el que se incluirán todas aquellas modificaciones surgidas durante el desarrollo del PFC y que servirá para realizar un balance entre la gestión planificada al comienzo y la real. 2.1 Descripción del proyecto Hoy en día una red está formada por una gran cantidad de elementos complejos, tanto de tipo hardware como software y que interactúan; desde enlaces, routers, servidores y otros dispositivos que componen la parte física de la red, hasta los diferentes protocolos que coordinan y controlan estos dispositivos. Cuando una organización reúne cientos o miles de estos componentes para formar una red, es normal que algunos no funcionen bien ocasionalmente, que los elementos de la red se desconfiguren, que los recursos de la red sean sobreexplotados, o que los componentes de la red sencillamente se rompan. El administrador de red, cuyo trabajo es mantener la red con un funcionamiento óptimo, debe ser capaz de responder ante estos percances o incluso si se puede, evitarlos. Este PFC consistirá en realizar la implantación de herramientas hardware y software que facilitarán el control de la red al administrador. Como es obvio pensar, se necesitará una red lo suficientemente amplia como para poder llevar a cabo el proyecto; para ello, este proyecto se desarrollará en el centro de formación Cebanc-Cdea, el cual cuenta con una red de aproximadamente 300 máquinas y unos 15 servidores, además de diferentes dispositivos para su conexión. La aplicación final será capaz de monitorizar la información de los diferentes componentes de la red por medio de gráficas que facilitarán la comprensión del funcionamiento de la red al administrador. 2.2 Objetivos del proyecto A continuación se detallarán los objetivos que se pretenden conseguir con la realización de este proyecto: 1. Aprendizaje del protocolo SNMP, Simple Network Management Protocol, para su uso posterior. SNMP es un protocolo de gestión de red, que nos va a permitir obtener datos concretos de los dispositivos que participan en la red (como por ejemplo, la tasa de CPU que se está utilizando en un servidor o el consumo de tráfico en las entradas/salidas de una interfaz de red). Se analizará su funcionamiento y la evolución desde su aparición. 5 2. Implantación de un sistema de control de red, que contará con las siguientes funcionalidades: • • • Capacidad para monitorizar los resultados obtenidos por medio del protocolo SNMP. Este sistema presentará los resultados deseados por medio de unas gráficas. Almacenamiento de datos históricos para poder comparar la información obtenida en tiempo real con la información ya almacenada y así poder realizar un mejor análisis de los datos obtenidos. Y por último, disponibilidad para el envío de una alerta, a través de correo e-mail, a un teléfono móvil. Este enviará un mensaje (vía SMS), con el contenido del texto del e-mail, a otro teléfono móvil que estará en posesión del administrador. La alerta sólo se enviará en caso de anomalías críticas en la red (por ejemplo, en el bloqueo de un servidor). También aparecen como objetivos indirectos un estudio básico de la red instalada en la empresa y del diferente software a utilizar para la realización de la aplicación. 2.3 Alcance del proyecto En este punto se tratarán las tareas que implican este proyecto, y que las podemos dividir en tres grandes grupos: • En el primero quedan englobadas todas aquellas que se basan en la recopilación de información (mediante la búsqueda por diferentes fuentes y a través de reuniones con el cliente). • El segundo sirve de nexo entre el primero y el tercero. Aquí queda encuadrada la tarea de análisis de la información obtenida en las tareas anteriores, y que servirá para la realización de las tareas posteriores. • Y en el tercero se encuentran todas las que implican el desarrollo del sistema (implantación y pruebas). Cada una de las tareas puede subdividirse en otras más pequeñas como se muestra en el siguiente diagrama EDT: 6 PFC Búsqueda Captura de Análisis de documentació requisitos requisitos n Consultas con Entregables Consulta en el cliente de cada fase libros Gestión Memoria final Consulta en Internet Estudio de la red Desarrollo Implantación Pruebas Consulta en manuales Consulta en otras fuentes (fig. 1, diagrama EDT) 2.4 Planificación temporal Este apartado servirá para realizar una estimación del tiempo que se empleará en la realización del proyecto y sus diferentes tareas. Inicialmente se prevé que la mayor parte del tiempo se dedique en la parte media y final del proyecto (en el análisis de la información e implantación de la aplicación). El tiempo dedicado a la recopilación de la información dependerá de la calidad de esta. Esto es importante, ya que sin un buen material de partida es altamente probable que surjan problemas en las fases posteriores y que pueden llevar a reanalizar muchos conceptos que implicarán un aumento del tiempo en la realización del PFC. Hay que tener en cuenta que durante el primer cuatrimestre me encontraré cursando asignaturas, de las que deberé examinarme a finales de enero y primeros de febrero. A partir de febrero, si no ocurre nada imprevisto, el tiempo que podré dedicar al proyecto será completo. De esta forma la planificación temporal del proyecto en un principio queda dividida de la siguiente manera: • Hasta finales del mes de diciembre se realizarán las tareas de búsqueda de información y captura de requerimientos • Tras la realización de los exámenes, a mediados de febrero, se continuará con el análisis, la implantación y las pruebas Se espera finalizar el proyecto a primeros de mayo para realizar su posterior presentación en la convocatoria de junio. Para ver una representación gráfica de la planificación expuesta se presenta a continuación su correspondiente diagrama de Gantt: 7 2.5 Riesgos y planes de contingencia Al igual que en cualquier otro proyecto, este también cuenta con una serie de riesgos que de no detectarse a tiempo podrían afectar a su desarrollo. Se analizarán y se presentarán soluciones para poder evitarlos: • Mala documentación. Es un riesgo importante a tener en cuenta ya que la información obtenida durante las primeras fases va a servir de base para el posterior desarrollo del proyecto. Una mala documentación podría llevar a su fracaso. También hay que tener en cuenta la alta probabilidad que existe de que mucha de la documentación necesaria se encuentre en inglés, idioma en el que el alumno no tiene un nivel muy alto. o Solución: contrastar, con diferentes documentos, la información obtenida. Referente al idioma, el alumno espera no tener excesivos problemas, pero si se da el caso habrá que realizar uso de herramientas traductoras (traductores de páginas Web o sencillamente un diccionario). • Falta de recursos humanos. Al ser este un PFC que se va a desarrollar en una empresa y por lo tanto va a contar con usuarios reales, el buen desarrollo del proyecto va a depender también del nivel de colaboración de los clientes, sobre todo en la fase de captura de requerimientos donde se pueden dar malentendidos de lo que se quiera realizar. o Solución: mantener una comunicación regular, mediante reuniones personales o vía e-mail, con las dos partes implicadas en este proyecto (el tutor del mismo, D. José Antonio Lozano Alonso y el cliente, la empresa Cebanc-Cdea). Inicialmente no se cree que vaya a faltar colaboración por parte del cliente. Si esto no fuese así, los tiempos planificados para realizar las diferentes tareas del proyecto se podrían alargar, con lo cual habría que realizar una replanificación temporal del PFC. • Falta de experiencia: es otro gran riesgo ya que es el primer proyecto, con una envergadura aceptable, al que el alumno se enfrenta solo. Esto puede provocar el retraso en el desarrollo del PFC o haciendo que los objetivos planteados en un principio deban ser menos ambiciosos. o Solución: durante las primeras fases, documentarse lo máximo posible y a través de diferentes medios (libros, Internet o personas con conocimientos sobre el tema). • Pérdida de la información: aunque hoy en día los problemas de seguridad y fiabilidad en los sistemas a nivel usuario no son excesivamente preocupantes, hay que tenerlos en cuenta. La pérdida parcial de la información podría provocar retrasos en las tareas, y la pérdida total el fracaso seguro. o Solución: tener una política de backups (copias de seguridad). El alumno realizará copias de la información en dispositivos como CD-RW (CD’s regrabables) o en DVD-RW si fuese necesario (tienen mayor capacidad que los CD’s). Las copias se realizarán cuando el alumno lo estime oportuno (probablemente cada vez que se realice un importante avance en el desarrollo del proyecto). 8 Estos son los mayores problemas que se pueden detectar al comienzo de la realización de este PFC. Seguramente, durante su transcurso aparecerán muchos más. Todos ellos se recogerán en el apartado Gestión real del proyecto. 2.6 Método de trabajo Para el buen desarrollo de este proyecto se intentará mantener un ritmo adecuado en la realización del mismo. Tal y como se ha adelantado en el punto de la planificación temporal, el alumno se encuentra cursando asignaturas del último año de carrera. Hasta febrero se le dará mayor prioridad a las asignaturas, pero sin dejar de lado el desarrollo del PFC. A partir de la finalización de los exámenes del primer cuatrimestre, y contando con que el alumno tendrá mas tiempo libre, se llevarán a cabo las tareas que a priori se cree que serán más laboriosas. Al final de cada una de las fases en las que se divide el proyecto, se pretende generar un informe con lo que se ha realizado en dicha fase y que se entregará tanto al director del proyecto como al cliente. De esta manera se pretende conseguir un mayor control y seguimiento del proyecto de las tres partes implicadas (alumno, cliente y director). También será importante mantener una buena comunicación. Puesto que el cliente ha ofrecido sus instalaciones al alumno para realizar el proyecto, la comunicación alumno-cliente será prácticamente diaria. Con respecto al profesor, además de mantenerle informado del desarrollo del proyecto por medio de los informes de cada fase, si alguna de las dos partes cree conveniente realizar alguna reunión se comunicarán vía e-mail para llevarla a cabo. 2.7 Gestión real del proyecto Este último apartado de este capítulo, al contrario que los demás, se realiza una vez finalizado el proyecto, y se utiliza para realizar un balance de la gestión propuesta inicialmente para el desarrollo del mismo. Comparando el diagrama de Gantt presentado al inicio de este proyecto, con el real, lo primero que destaca es el tiempo empleado. En un principio se había estimado la finalización hacia el mes de mayo, cumpliéndose ésta realmente en el mes de octubre. Se explicarán los motivos de este aumento de tiempo: 1. 2. Debido a que los conocimientos del alumno sobre sistemas de gestión de red eran muy escasos, se tuvo que hacer una replanificación temporal de la fase de captación de requerimientos, ampliando el tiempo de esta, para poder asimilar mejor los conceptos que iban surgiendo, y de esta manera evitar acarrear problemas en las fases posteriores. También se apuntó anteriormente, que durante los meses de enero y febrero el alumno se encontraría realizando exámenes. Debido a una imprevista nevada, algunos de estos exámenes se suspendieron hasta fechas posteriores, lo cual también incidió en la duración de la fase de captación de requerimientos. 9 3. 4. Aunque se preveía que durante el segundo cuatrimestre el alumno no tuviera asignaturas que cursar, debió de realizar un examen en el mes de junio, lo que provocó una parada temporal en el desarrollo del proyecto. Por último y provocado por una incompatibilidad en el calendario con el tutor del proyecto, la corrección del presente documento también se vió demorada durante un par de semanas en el mes de agosto. Continuando con el análisis del diagrama de Gantt real, se observa que algunas tareas se han eliminado, las correspondientes a las entregas de los informes de cada fase. Esto se debió a que, el tutor del proyecto no está dedicado a la materia sobre la que se basa el proyecto (redes informáticas) y por lo tanto poco podía ayudar en la parte técnica. En cuanto al responsable del proyecto en la empresa Cebanc-Cdea, al no contar éste con suficiente tiempo como para revisar estos informes, el alumno le fue informando, prácticamente a diario y de una manera coloquial, de los avances que se iban realizando y de las dudas que iban surgiendo. Para finalizar, también se observa que muchas de las fases se han solapado. No era algo previsto al inicio de este proyecto, debido a que el alumno en aquel momento desconocía cuál iba a ser el desarrollo del mismo. A medida que se iba avanzando, y como se observará en los capítulos posteriores, era necesario el realizar las tareas de esta manera. 10 CAPÍTULO 3. DESCRIPCIÓN DEL PROTOCOLO SNMP La realización de este proyecto se basa en el uso del protocolo SNMP (Simple Network Management Protocol). Por ello, en este capítulo se tratará de explicar su funcionamiento, sus componentes, su arquitectura, así como su evolución en sus diferentes versiones desde su nacimiento en la década de los 80. 3.1 Introducción A finales de los años 70 las redes de ordenadores experimentaron un espectacular crecimiento y comenzaron a conectarse entre sí. Pasaron de ser pequeñas redes a convertirse en grandes infraestructuras globales, lo que conllevó también al crecimiento en número de los componentes hardware y software. Debido a esto, cada vez se hacía más difícil el control y la gestión de dichos componentes por lo que tuvo que ser necesario el desarrollo de un sistema para poder mantener la gestión en la red. Antes de que surgiera la necesidad de gestionar las redes, ya habían aparecido una serie de problemas a la hora de interconectarlas; estos mismos problemas se dieron también en el momento en el que se comenzaron a gestionar y como veremos la política que se utilizó para solucionarlos fue similar: • Dispositivos diferentes: la interconexión de redes permite conectar diferentes dispositivos de distintas marcas comerciales que soportan el protocolo de transmisión de datos TCP/IP(Transmisión Control Protocol/Internet Protocol). A la hora de administrar una red esto se presenta como un problema. El uso de una tecnología de interconexión abierta fue la que dio solución a este problema, por lo que para administrar estas redes se hizo necesario también utilizar una tecnología de administración de redes abierta. • Administraciones diferentes: hay que tener en cuenta que como se permite la interconexión de redes de diferente propósito, éstas también se encontrarán administradas y gestionadas de diferente forma. 3.2 Evolución histórica del protocolo SNMP Tal y como se ha comentado en puntos anteriores, el gran aumento de las redes y sus componentes hizo necesario la creación de un sistema de comunicación que pudiera administrarlas y gestionarlas. Este sistema de comunicación se implementó en forma de protocolo tal y como se explica a continuación. A mediados de los años 80 aparecen los primeros protocolos de gestión, SGMP (Simple Gateway Monitoring Protocol). Este protocolo definía una plataforma que servía para monitorizar el rendimiento de los dispositivos que unían las redes que se encontraban aisladas. Fue diseñado por un grupo de investigadores universitarios de redes, usuarios y gestores, que gracias a su experiencia y a la imperiosa necesidad que había por crear un sistema de administración de redes, pudieron diseñar e implementar el protocolo SNMP en unos pocos meses. En un principio el protocolo SNMP fue creado como una solución temporal hasta que llegaran protocolos de gestión de red con mejores diseños y más completos. Su primera versión, SNMPv1 (propuesto 11 originalmente en el Request For Comment, RFC, 1157)[1], contaba con un manejo muy simple que se basaba en el intercambio de información de red a través de mensajes o PDU´s (Protocol Data Unit). Era un protocolo que se podía extender fácilmente por toda la red. Pero no todo era perfecto, ya que no estaba pensado para poder gestionar las numerosas e innovadoras redes que cada día iban apareciendo. Además contaba con importantes deficiencias en materia de seguridad. Paralelamente a la creación de SNMP, surgió otro protocolo de gestión, CMIP (Common Managment Information Protocol) del modelo ISO/OSI (Open System Interconnection), encargado del desarrollo de estándares en materias de comunicaciones de datos. CMIP, se encontraba mucho mejor organizado, contaba con muchas más funciones y subsanaba muchas de las deficiencias de SNMP. El precio de todo esto es que se convirtió en un sistema tan grande y complejo, que consumía muchos recursos en la red y tan solo las mejores equipadas podían soportarlo. De esta manera SNMP encontró una mejor aceptación entre los usuarios y se convirtió en la opción más factible para la gestión de redes. Tras quedarse SNMP al frente de los protocolos de gestión de red, se hacía necesario subsanar todas aquellas carencias que habían surgido en su primera versión. Por este motivo, a principios de los años 90 se empieza a trabajar en una nueva versión del protocolo, SNMPv2 (RFCs 1441-1452)[1]. Las mayores innovaciones sobre las que se trabajaron en esta versión son: • • Mecanismos de seguridad, los cuales no existían en la primera versión. Se basaron en tres grandes conceptos dentro del mundo de la seguridad: privacidad de los datos, autenticación de los usuarios y control en el acceso. Estructuras de datos, que permitían un mejor manejo de éstos. Se abría la posibilidad de gestionar un número de datos y objetos mayor, de tal manera que el problema de gestionar grandes redes se iba solucionando. Desafortunadamente muchas de estas innovaciones no se llegaron a implementar y se quedaron en pura teoría, como fue el caso de las referentes a la seguridad, provocando que esta versión sirviera como parche o extensión de la versión anterior. Con la evolución del mundo de Internet estas versiones dejaban al descubierto las grandes deficiencias que surgían en torno a la seguridad. Por esta razón a finales de los 90, los grupos de expertos se reunieron para crear un nuevo conjunto de RFC´s (2271-2275, 2570-2575)[1], conocidos como SNMPv3, que se orientaban a solucionar estas deficiencias. Las principales ventajas que aparecieron en esta versión sobre sus predecesoras fueron las siguientes: • • [1] Se implantan definitivamente los mecanismos de seguridad (privacidad, autenticación y autorización). El uso de LOO (Lenguajes Orientados a Objetos) como Java o C++ que ayudaron en la construcción de elementos propios del protocolo (objetos al fin y al cabo) y que sirvieron también para dar una mayor consistencia al protocolo lo cual equivalía a una mayor seguridad de éste. Consultar referencia en la Bibliografía [ [ 12 Hoy en día, SNMP está considerado como el gran estándar dentro de los protocolos de gestión de red, algo que no ha pasado inadvertido para los fabricantes de dispositivos de red que diseñan la gran mayoría de sus productos para soportar este protocolo. 3.3 Arquitectura de un sistema de gestión de red Dentro de la arquitectura de red del modelo OSI, el protocolo SNMP se sitúa en el tope del nivel de transporte, como se observa en la figura 4, por encima de la capa de protocolos de transporte como por ejemplo UDP (User Datagram Protocol). Aplicación SNMP Transporte IP Acceso a red Físico (fig. 4, ubicación del protocolo SNMP en el modelo OSI) En la propia arquitectura de gestión de red, existen tres componentes básicos que se pasarán a analizar seguidamente: • • • La entidad gestora Los dispositivos a gestionar El protocolo de gestión de red 3.4.1 Entidad gestora La entidad gestora es una aplicación que se ejecuta en una máquina que se encuentra en el centro de operaciones de red. Es desde esta máquina donde se va a controlar la gestión de la red: recolección, procesamiento y visualización de la información a gestionar. Desde aquí el administrador de red tendrá la capacidad de interactuar con los dispositivos que quiera controlar. 3.4.2 Dispositivos a gestionar Los dispositivos a gestionar, son todos aquellos dispositivos que tienen algún tipo de capacidad de trabajo en red; puede ser un servidor, un router, un módem, una impresora, un hub, switches, etc. Cada dispositivo contará con diferentes objetos a gestionar (managed objects), que son el hardware de los dispositivos que se gestionan (por ejemplo, en un servidor su tarjeta de red) y sus parámetros de configuración (bytes emitidos y recibidos en un router, por ejemplo). En estos objetos se encuentra la información que el administrador de red puede controlar desde la entidad gestora. Esta información se almacena en una “base 13 de datos de información de gestión” (MIB; Manager Information Base), que se analizará más adelante. Por último, en cada dispositivo existe un agente de gestión de red (de aquí en adelante agente), que es el proceso encargado de comunicarse con la entidad gestora proporcionando la información que ésta solicite. En la siguiente figura, se puede visualizar la arquitectura descrita. Entidad Gestora MIB SNMP Agente MIB P M SN P M SN MP SN Dispositivo a gestionar Dispositivo a gestionar Agente MIB Dispositivo a gestionar Agente Agente MIB MIB Dispositivo a gestionar (fig. 5, componentes principales de una arquitectura de gestión de red) 3.4.3 Protocolo de gestión Un buen sistema de gestión, será aquel que sea capaz de reconocer la gran diversidad de dispositivos a administrar que pueden aparecer en una red, ofreciendo un entorno de administración adecuado. Teniendo en cuenta esto, una de las características más importantes que se ha de cumplir a la hora de implantar un sistema de gestión en una red es que el impacto, en términos de rendimiento, que se produzca en los dispositivos gestionados sea mínimo. Para poder llevar a cabo la comunicación entre los agentes de cada dispositivo y la entidad gestora va a ser necesario tener un protocolo, en este caso un protocolo de gestión (SNMP, CMIP, etc). A través del protocolo, la entidad gestora podrá realizar consultas sobre el estado de los dispositivos o indicar a los agentes de cada dispositivo las acciones que deben de llevar a cabo. De la misma manera, los agentes podrán utilizar el protocolo para informar a la entidad de cualquier anomalía que pudiera suceder en un dispositivo (por ejemplo la caída de un servidor). Dentro del protocolo de gestión, va a ser importante la elección de un servicio de transporte adecuado, ya que el rendimiento del protocolo va a depender directamente de este servicio. Tal y como se ha comentado en el apartado anterior, la implantación de un sistema de control de red debe causar el menor impacto 14 posible en la propia red, característica que deberá de cumplir el servicio de transporte. Hay que tener en cuenta que en el momento en el que se den fallos en la red, la administración de ésta ha de seguir funcionando (será en ese instante cuando más se necesite tener la red controlada y administrada), por lo que el servicio de transporte seleccionado deberá de ser fiable para que no se provoque una pérdida de la información. Los servicios de transporte los podemos clasificar en dos categorías: orientados y no orientados a conexión. Los orientados a conexión (por ejemplo TCP), son mas fiables, permiten la retransmisión de la información pero hacen un mayor uso de los recursos de la red; por ejemplo: si en un momento dado la red se encuentra congestionada y es difícil establecer una conexión, con un servicio de transporte orientado a conexión necesitaríamos tres pasos para establecer dicha conexión, mientras que con un servicio no orientado a conexión solo nos haría falta un paso. Si la red está perdiendo paquetes, será más sencillo establecer la conexión de ésta última forma. Por todo esto, lo que se recomienda en los protocolos de gestión es el uso de un servicio de transporte no orientado a conexión. De hecho, para SNMP en el RFC 1906, se establece que UDP es el servicio de transporte más adecuado (lo cual no implica que no se pueda utilizar TCP). 3.5 Modelo de información En este apartado se va a tratar la estructuración de la información en un entorno de gestión de red, así como la forma de comunicación de los datos. 3.5.1 Estructura de la información de administración La estructura de la información de administración (Structure of Management Information, SMI) define las reglas para definir la información de administración; es el lenguaje que se utiliza para definir la información de gestión que reside en una entidad de red (en nuestro caso, los dispositivos a gestionar). Con este lenguaje nos aseguramos que la sintaxis y semántica de los datos de gestión de red se encuentren bien definidos y no sean ambiguos. En el apartado 3.4.2 se ha comentado que cada dispositivo a gestionar cuenta con una serie de objetos que contienen información sobre el dispositivo, y que dicha información se almacena en una base de datos denominada MIB. SMI, se encarga de definir el esquema de esa base de datos. SMI está basado en el lenguaje de definición de objetos Abstract Syntax Notation One (ASN.1), pero ya cuenta con los suficientes tipos de datos específicos como para que se le considere un lenguaje de definición de datos. Además también proporciona construcciones de lenguaje de alto nivel, entre las que destacan estas dos: • OBJECT-TYPE: esta construcción se utiliza para especificar el tipo de datos, el estado y la semántica del objeto gestionado. 15 • MODULE-IDENTITY: esta otra construcción nos permite poder agrupar objetos relacionados dentro de lo que se denomina un “módulo de información”. 3.5.2 MIB SNMP tiene definido una estructura estándar para los datos que gestiona, la base de información de gestión (Management Information Base; MIB). En esta estructura se definen los datos (objetos con valores) que contiene un dispositivo gestionado, al igual que las operaciones que permite. Esos valores van a poder ser consultados o modificados por una entidad de gestión enviando mensajes, a través del protocolo SNMP, al agente que se está ejecutando en el dispositivo a gestionar. Los objetos se especifican utilizando la construcción, comentada en el punto anterior, OBJECTTYPE y se reúnen en módulos (módulos MIB) utilizando el constructor MODULEIDENTITY. Se puede ver parte de la implementación de uno de estos módulos en la figura 7. Debido a la gran diversidad de dispositivos de red y fabricantes que residen en el mercado informático, la IETF (Internet Engineering Task Force) tuvo que buscar una manera estándar de identificar a todos los dispositivos y de acceder a la información de gestión que contienen. Para ello, la IETF adoptó un entorno estandarizado de identificación que había sido propuesto por la ISO, de tal manera que se iba a poder identificar cualquier objeto de cualquier dispositivo, independientemente del fabricante. La MIB mantiene una estructura de árbol, de tal manera que para acceder a un dato en concreto desde la raíz, sólo va a existir un único camino. En la parte superior del árbol se encuentra ISO y ITU-T (Internacional Telecommunication Union), las dos principales organizaciones de estandarización. Tal y como se observa en la figura 6, cada nodo del árbol contiene un nombre y un número, de tal forma que cada nodo va a ser identificable mediante una secuencia de nombres o de números. En nuestro caso, para acceder a los módulos MIB estándar podremos hacerlo de las siguientes dos maneras: • • mediante su nombre: .iso.org.dod.internet.management ó a través de su representación numérica (también llamada OID, Object IDentifier)1.3.6.1.2 16 ITU-T (0) ISO (1) Joint ISO/ITU-T (2) Standard (0) Cuerpos miembros de ISO (1) Organizaciones identificadas por ISO (3) US DoD (6) Internet (1) managment (2) MIB-2 (1) system (1) interface (2) address translation (3) ip (4) icmp (5) MIB-1 (2) tcp (6) udp (7) egp (8) snmp (11) (fig. 6, árbol de objetos MIB) Las hojas del árbol MIB, son los objetos que contienen las variables que a su vez contienen información sobre el dispositivo. La versión estándar actual de la MIB, es la MIB-II (1.3.6.1.2.1) especificada en el RFC 1213. Aquí se encuentran algunos de los módulos de información que más nos van a interesar para la gestión del dispositivo: • • • • • • • • system(1.3.6.2.1.1): incluye información sobre el fabricante y el tiempo sobre el último reinicio del sistema de gestión interface(1.3.6.2.1.2): información sobre los interfaces de red address translation(1.3.6.2.1.3): contiene la dirección de red y sus traducciones a direcciones físicas ip(1.3.6.2.1.4): proporciona las tablas de rutas y estadísticas sobre los datagramas IP recibidos icmp(1.3.6.2.1.5): contiene información sobre los mensajes icmp recibidos tcp(1.3.6.2.1.6): muestra información sobre las conexiones TCP, retransmisiones, etc. udp(1.3.6.2.1.7): cuenta el número de datagramas UDP, enviados, recibidos, etc. egp(1.3.6.2.1.8): proporciona información acerca de los mensajes egp, recibidos, enviados, etc. A modo de nota informativa, comentar que en el RFC 3000[1] se encuentran enumerados todos los módulos MIB estandarizados. [1] Consultar referencia en la Bibliografía 17 En la figura 7, se muestra parte de la implementación de la MIB-II. En concreto, las definiciones de tres objetos del grupo o módulo system: sysDescr, sysObjectID y sysUpTime. RFC1213-MIB DEFINITIONS ::= BEGIN IMPORTS mgmt, NetworkAddress, IpAddress, Counter, Gauge, TimeTicks FROM RFC1155-SMI OBJECT-TYPE FROM RFC-1212; -- This MIB module uses the extended OBJECT-TYPE macro as -- defined in [14]; -- MIB-II (same prefix as MIB-I) mib-2 OBJECT IDENTIFIER ::= { mgmt 1 } -- textual conventions DisplayString ::= OCTET STRING -- This data type is used to model textual information taken -- from the NVT ASCII character set. By convention, objects -- with this syntax are declared as having --- SIZE (0..255) PhysAddress ::= OCTET STRING -- This data type is used to model media addresses. For many -- types of media, this will be in a binary representation. -- For example, an ethernet address would be represented as -- a string of 6 octets. -- groups in MIB-II system OBJECT IDENTIFIER ::= { mib-2 1 } interfaces OBJECT IDENTIFIER ::= { mib-2 2 } at OBJECT IDENTIFIER ::= { mib-2 3 } ip OBJECT IDENTIFIER ::= { mib-2 4 } icmp OBJECT IDENTIFIER ::= { mib-2 5 } 18 tcp OBJECT IDENTIFIER ::= { mib-2 6 } udp OBJECT IDENTIFIER ::= { mib-2 7 } egp OBJECT IDENTIFIER ::= { mib-2 8 } -- historical (some say hysterical) -- cmot OBJECT IDENTIFIER ::= { mib-2 9 } transmission OBJECT IDENTIFIER ::= { mib-2 10 } snmp OBJECT IDENTIFIER ::= { mib-2 11 } -- the System group -- Implementation of the System group is mandatory for all -- systems. If an agent is not configured to have a value -- for any of these variables, a string of length 0 is -- returned. sysDescr OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) ACCESS read-only STATUS mandatory DESCRIPTION "A textual description of the entity. This value should include the full name and version identification of the system's hardware type, software operating-system, and networking software. It is mandatory that this only contain printable ASCII characters." ::= { system 1 } sysObjectID OBJECT-TYPE SYNTAX OBJECT IDENTIFIER ACCESS read-only STATUS mandatory DESCRIPTION "The vendor's authoritative identification of the network management subsystem contained in the entity. This value is allocated within the SMI enterprises subtree (1.3.6.1.4.1) and provides an easy and unambiguous means for determining `what kind of box' is being managed. For example, if vendor `Flintstones, Inc.' was assigned the subtree 1.3.6.1.4.1.4242, it could assign the identifier 1.3.6.1.4.1.4242.1.1 to its `Fred 19 Router'." ::= { system 2 } sysUpTime OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION "The time (in hundredths of a second) since the network management portion of the system was last re-initialized." ::= { system 3 } (fig. 7, implementación parcial del módulo system) Por cada uno de los objetos, vemos que muestra: • su nombre o definición (OBJECT-TYPE) • la estructura de datos de ese objeto, “el tipo de dato que va a devolver ese objeto” (SYNTAX) • el tipo de privilegio o acceso al objeto, “lectura, escritura, creación….” (ACCESS) • su estado, que indica si esa definición es actual o antigua • y una descripción de lo que se obtiene de él (DESCRIPTION) Además de la MIB estándar (MIB-II), otra MIB que también nos va a interesar es la HOST-RESOURCES-MIB (MIB de recursos del host con OID .1.3.6.1.2.1.25), de la cual podremos obtener información de recursos de servidores tales como la capacidad de disco duro, el número de usuarios del sistema, el uso de la memoria RAM, el número de procesos, software instalado, etc (la descripción de esta MIB se encuentra definida en el RFC 2790)[1]. Por último, comentar que muchas empresas y fabricantes informáticos se dedican también a crear sus propias MIBs (MIBs propietarias) para sus productos, de tal manera que el usuario final pueda obtener una mejor información y realizar una gestión adecuada de dicho producto. 3.5.3 Operaciones de SNMP La forma más común de utilizar el protocolo SNMP es de la manera “petición –respuesta”, en el que la entidad gestora envía una petición a un agente (que se encuentra en un dispositivo a gestionar), la recibe, la trata y envía una respuesta a esa petición. Las peticiones se suelen utilizar para obtener (get) o modificar (set) valores de objetos MIB del dispositivo a gestionar. Otra manera de utilizar el protocolo SNMP, es mediante “mensajes trampa” o “traps”. Aquí, la entidad gestora no envía ninguna petición, sino que es el propio agente del dispositivo que se está gestionando el que envía un mensaje a la entidad gestora. Estos traps se utilizan cuando se dan situaciones excepcionales, por [1] Consultar referencia en la Bibliografía 20 ejemplo: el agente instalado en un servidor podría enviar un trap cuando el espacio libre de su disco duro alcance un determinado nivel. Aunque se detallará más adelante, el sistema operativo Windows 2003 Server no soporta la última versión del protocolo (SNMPv3), por lo que la versión utilizada en este PFC será la 2 (SNMPv2), la cual tiene definidos siete tipos de mensajes o PDUs que se engloban en cinco grupos (el formato se puede observar en la figura 8): • operaciones tipo “get”, que son enviadas desde la entidad gestora a un agente para obtener el valor de los objetos MIB del dispositivo a gestionar. Existen tres diferentes: o GetRequest: utilizada para obtener el valor de uno o varios objetos MIB o GetNextRequest: utilizada para obtener el valor del siguiente objeto MIB en una tabla (de esta manera evitamos tener que hacer múltiples GetRequest) o GetBulkRequest: utilizada cuando se va a acceder a una tabla que contiene una gran cantidad de objetos MIB • tipo “set”, enviadas desde la entidad gestora al agente del dispositivo gestionado para modificar el valor de uno o varios objetos MIB: o SetRequest • tipo “inform”, se envían desde la entidad gestora al agente de otra entidad gestora para notificar la información MIB que es remota a la entidad receptora (no se va a utilizar): o InformRequest • tipo “response”, se envían como respuesta a los mensajes expuestos anteriormente, desde el agente a la entidad gestora: o Response • mensajes trampa o “traps”, estos mensajes se envían desde el agente del dispositivo gestionado a la entidad gestora, para informar a esta de un evento excepcional sucedido en el dispositivo gestionado. El apelativo de “trampa”, se debe a que el agente envía el mensaje sin que la entidad gestora lo solicite. 21 Obtener/establecer cabecera Variables a obtener/establecer Tipo PDU (0-3) id petición Estatus de error (0-5) Índice de error Nombre Valor Nombre Valor Tipo PDU (4) Empresa Dirección agente Tipo trampa (0-7) Código específico Marca de tiempo Nombre Valor Cabecera de trampa Información de trampa PDU SNMP (fig. 8, formato de las PDUs en SNMPv2) Como ya se ha comentado, UDP es el principal protocolo de transporte para el envío de mensajes SNMP siendo el puerto 162 el usado para los mensajes trampa (la entidad gestora se queda a la escucha del puerto esperando recibir algún mensaje) y el 161 para el resto de mensajes como se muestra en la siguiente figura. (fig. 9, operaciones SNMP) Debido a que UDP ofrece un servicio de transporte no orientado a conexión, esto es, no fiable, no se va a poder obtener una garantía de que las peticiones, o sus respectivas respuestas, lleguen a su correspondiente destino. Por ello, la entidad gestora utiliza el campo ID Petición de las PDU para numerar las peticiones realizadas a un agente; éste, tomará la ID Petición de la petición recibida y la indicará en la PDU de respuesta. De esta manera la entidad gestora puede detectar las peticiones o respuestas perdidas. En el caso particular, de que la entidad gestora no recibiera la correspondiente respuesta a la petición enviada, el estándar SNMP actualmente no indica si se debe de seguir algún tipo de política (como por ejemplo, la retransmisión de la petición). 22 3.5.3 La seguridad en SNMP En el apartado anterior hemos comprobado que los mensajes SNMP no se utilizan sólo para obtener información de los dispositivos gestionados, sino que también se puede modificar información de estos (con el mensaje SetRequest). Esto es algo peligroso, ya que un usuario no autorizado podría captar estos mensajes y modificarlos a su gusto originando graves problemas en la red. Ya se ha comentado que la seguridad en las dos primeras versiones del protocolo SNMP era algo escasa. Se basa en el concepto de comunidad (community). Hay dos tipos de comunidades que indican los permisos de acceso y que pueden ser: Read-only o sólo lectura, utilizada cuando solo se quiere obtener información de los dispositivos gestionados Read-write o lectura-escritura, además de obtener información, se realizan cambios en la información del dispositivo Cada una de estas, tiene una clave de acceso llamada nombre de comunidad (community name) y que se ha de indicar cuando se utilizan los mensajes SNMP. Por defecto son: public para la comunidad read-only private para la read-write Obviamente, para aumentar la seguridad de nuestro sistema lo primero que se debería de realizar es el cambio de estos nombres de comunidad. Ya que en este PFC se utiliza SNMPv2, en capítulos posteriores se explicará como realizar este paso. Es en la versión 3 de SNMP cuando se introducen verdaderos mecanismos de seguridad. Esta seguridad se basa en los conceptos de autenticación y cifrado. Aparece también el concepto de usuario, que se identifica por un nombre de usuario y una clave de acceso. Para el cifrado o encriptación de la información, SNMPv3 utiliza el sistema de clave compartida DES (Data Encryption Standard), y para la autenticación también se suelen utilizar funciones de dispersión (lo más común es utilizar algoritmos como MD5 o SHA). Todos estos mecanismos hacen de SNMPv3 la versión más segura del protocolo ofreciendo una gran confianza a sus usuarios aunque dependiendo de las necesidades de estos y de la gestión que se vaya a realizar de la red, se podrán seguir utilizando cualquiera de las otras dos versiones anteriores. 3.6 Conclusiones El protocolo de gestión SNMP cuenta con un diseño simple lo que le hace tener también una implementación sencilla capaz de integrarse en grandes redes necesitando pocos recursos. La utilización de las MIB como “base de datos” de los dispositivos a gestionar, permite a los usuarios un acceso sencillo a la información que deseen conocer. 23 La popularidad la alcanzó al ser, prácticamente, el único protocolo de gestión que existió al principio, lo cual hizo que los fabricantes informáticos diseñaran sus productos para soportar SNMP. Siendo un protocolo tan popular, no se podía permitir las desventajas con las que contaba, las referentes a la seguridad, que cada vez se iban haciendo más latentes a medida que surgían redes más potentes. Por ello, los grupos de expertos se reunieron para introducir los mecanismos de seguridad, ofreciendo de esta manera un gran protocolo de gestión a los usuarios más exigentes. 24 CAPÍTULO 4. DESARROLLO TEÓRICO En este capítulo se abordará de una manera global (sin entrar en detalles) el propio desarrollo del proyecto: se comentará de forma breve su finalidad, para pasar posteriormente a la captura y análisis de requerimientos necesarios para poder llevarlo a cabo: • • A nivel hardware, se enunciarán los dispositivos necesarios y sus características más relevantes. A nivel software, se realizará un pequeño análisis de los programas y paquetes informáticos utilizados. También se comentarán las decisiones más relevantes tomadas durante la realización de este proyecto, que en general se han establecido en función de la arquitectura de la red informática sobre la que se ha implantado el sistema de gestión. 4.1 Introducción (finalidad del proyecto) Este proyecto tiene como finalidad la implantación de un sistema de control o gestión de una red informática que pueda facilitar el control de ésta a su administrador. Como características más relevantes de este sistema, se presentan la capacidad de monitorizar mediante gráficas, diferentes parámetros de los dispositivos que se encuentran en la red así como un almacenamiento “histórico” de los datos para su posterior análisis. En caso de producirse un evento importante en alguno de los dispositivos gestionados, el sistema también será capaz de generar una alerta que pueda enviarse mediante correo electrónico o vía SMS (Short Message Service, Servicio de Mensajes Cortos), pudiendo así el administrador realizar un control más cómodo de la red informática. 4.2 Captura de requerimientos hardware Aunque pueda resultar una obviedad, lo primero que necesitaremos para llevar a cabo el proyecto es una red informática lo suficientemente amplia. Es por ello que este sistema se va a implantar en el centro de formación Cebanc-Cdea, el cual cuenta con una red de aproximadamente 300 máquinas y unos 15 servidores, además de múltiples dispositivos (routers, switches, hubs, etc.) para su interconexión. En segundo lugar, y haciendo referencia al capítulo anterior, se utilizará como base un protocolo de gestión (SNMP) para el control de la red. Centrándonos ya en la arquitectura del protocolo SNMP, lo primero será disponer de una máquina o un servidor que haga la función de entidad gestora. Para ello se cuenta con un servidor HP ProLiant ML 110, que presenta las siguientes características, las cuales se consideran suficientes como para llevar a cabo un buen control de la red: • • • Procesador Intel Pentium 4 a 2.80 GHz 512 MB de memoria SDRAM DDR PC 3200 A 400 MHz Disco duro con capacidad para 40 GB (ATA/100 7200 rpm) 25 • • Tarjeta de red Broadcom 5705 PCI Gigabit 10/100/1000 integrada con WOL (Wake on LAN). Desde esta interfaz habrá que tener conexión con los dispositivos a gestionar. Conexión a un SAI (Sistema de Alimentación Ininterrumpida), para evitar problemas en caso de cortes en el sistema eléctrico. Hay que recordar, que del buen funcionamiento de esta máquina dependerá la buena gestión de la red, sobre todo en los momentos más críticos (cuando haya congestiones, cortes de luz, etc.). Por ello, es importante contar con una máquina lo más fiable posible y así poder obtener al final una mayor probabilidad de éxito en el control de la red. Una vez que tenemos la máquina que trabajará como entidad gestora, el siguiente punto a tratar es la elección de los dispositivos de red a gestionar y sus parámetros. Tras consultarlo con el cliente de este proyecto, el administrador de sistemas de la empresa, se decide gestionar 11 de los servidores y 1 de los routers. Por motivos de seguridad para la empresa, no se detallarán en profundidad las características de estos dispositivos aunque sí se puede comentar que entre los servidores algunos ofrecen servicios típicos como: • • • • • • servicio de correo interno/externo servicio web acceso a la base de datos del centro servicio de descarga de ficheros gestión de dominios bajo Windows 2003 (DCs, Domain Controler) cursos interactivos on-line Los parámetros que se desean gestionar y monitorizar posteriormente son los siguientes: • en cada uno de los servidores: o tráfico entrante/saliente en las tarjetas de red o espacio libre en los HD (Hard Disk, disco duro) o tasa de CPU utilizada o memoria RAM disponible o numero de sesiones abiertas o numero de procesos en ejecución o estado (encendido/apagado) • en el router: o tráfico entrante/saliente en sus diferentes bocas Ya se comentó en el capítulo anterior que a través de las MIB podemos monitorizar prácticamente todo aquello que se nos ocurra. Algunos parámetros interesantes que también se podrían haber gestionado pero que el cliente no consideró necesarios en estos momentos son: estado de los servicios/procesos (si se encuentran en ejecución o no), memoria utilizada por cada proceso, estado de los puertos, etc. 26 De los 11 servidores, 10 de ellos trabajan bajo el Sistema Operativo Windows 2003 Server y el restante, bajo Windows 2000. Esto será importante, a la hora de tener que instalar y configurar el agente de cada uno de los servidores. Por último, para posibilitar a nuestro sistema la capacidad de envío de SMS, será necesario contar con un dispositivo móvil que permita el envío de este tipo de mensajes, así como su correspondiente cable de conexión de datos, para que la entidad gestora pueda comunicarse con él. La elección de estas herramientas se deja para un punto posterior, ya que se tomará una decisión en función del software a utilizar. Todo lo explicado hasta ahora es referente al hardware necesario, a continuación se detallará el software. Antes de nada, resaltar que como finalidad indirecta del proyecto, también se quiere desarrollar e implantar el sistema con herramientas gratuitas y de libre distribución y esto se debe básicamente a dos motivos: primero, porque para su realización no se cuenta con ningún tipo de presupuesto económico y segundo porque se quiere demostrar que muchas de las herramientas de libre distribución son tan válidas y funcionales como las desarrolladas por las empresas privadas. 4.3 Captura de requerimientos software 4.3.1 El Sistema Operativo A nivel software, la primera decisión a tomar es la elección de la plataforma bajo la que se desarrolla el control de la red. Principalmente existen dos grandes sistemas en el mercado, Windows y Linux. Además de tener en cuenta lo comentado en el punto anterior, también se toma en consideración las consultas realizadas con el cliente, quien me animó y me aconsejó a realizarlo bajo GNU/Linux, sistema que a nivel de servidores ofrece un mejor rendimiento y una mayor fiabilidad que Windows. Además, el tener los servidores a gestionar con Windows como sistema base, no nos presenta ningún tipo de problema. Una vez decantados por el S.O. Linux, la siguiente decisión es la elección de la distribución a utilizar. Actualmente, existen múltiples distribuciones de este S.O., tales como Red Hat, Suse, Mandrake, Debian, etc. Todas ellas tienen en común el núcleo Linux, junto con sus bibliotecas y herramientas del proyecto GNU (proyecto para el desarrollo de herramientas totalmente libres), y difieren en el conjunto de aplicaciones que reúnen cada una. Es conocido, que la instalación de paquetes y programas bajo Linux no suele ser algo trivial y cómodo. Esto se presenta como un problema, ya que se prevé que durante este proyecto se tenga que instalar y configurar diferente software. Se decide utilizar Debian (versión del núcleo 2.4.27), debido a que subsana los problemas comentados en el párrafo anterior. Gracias a su comando ‘apt-get’, se pueden instalar y actualizar de manera sencilla los paquetes y servicios que deseemos. Además se realiza una instalación ‘por red’, que nos permite decidir desde un principio los paquetes a instalar. Con una instalación desde CD tendremos una gran cantidad de paquetes instalados que no se van a utilizar, lo cual podría generar una sobrecarga en nuestra máquina de forma innecesaria. Otra ventaja con la que cuenta la distribución por red, es que en el 27 momento de la instalación contamos con las últimas versiones de todos los paquetes, y que a través del comando ‘apt-get update’ se podrán ir actualizando cómodamente. 4.3.2 Los agentes Hasta el momento tenemos, por un lado el servidor o máquina que trabaja como entidad gestora y que funciona bajo Linux, utilizando la distribución Debian; por el otro los dispositivos a gestionar (11 servidores Windows y 1 router), y el protocolo SNMP para realizar la gestión entre la entidad y los dispositivos. Siguiendo la arquitectura del protocolo de gestión comentada en el capítulo 3, el siguiente paso es poner en funcionamiento a los agentes de cada dispositivo, que son los procesos encargados de comunicarse con la entidad gestora. Para llevar a cabo las primeras pruebas, además de realizar la instalación de los agentes en cada uno de los servidores a gestionar, también se instala el agente en la propia entidad gestora (de esta manera se detalla también la instalación y configuración de un agente en Linux). En este último caso nuestro servidor además de trabajar como entidad gestora, adquiere también la funcionalidad de dispositivo gestionable. Para el caso del router (y el ejemplo serviría para otros dispositivos como switches o hubs), el fabricante (Cisco) le dio soporte para el protocolo SNMP, por lo que ya cuenta con el agente. Tan solo hay que consultar su manual, para poder configurarlo. Es interesante también, acceder a las páginas web de los fabricantes para poder comprobar si existen nuevas actualizaciones para el firmware de nuestros productos. En la mayoría de las distribuciones Linux, se incluye un agente SNMP que es uno de los más desarrollados en la actualidad. Se trata de la librería NETSNMP, antes denominada ucd-snmp. Más adelante se explicará su instalación, su configuración y las herramientas con las que cuenta. Uno de los principales problemas durante la realización de este proyecto, surgió en el momento en el que se debía de analizar el agente con el que trabaja la plataforma Windows. Tras recopilar la información necesaria sobre los dispositivos a gestionar, y más concretamente sobre los agentes de Windows, se comprobó que estos ya partían con una desventaja importante: actualmente no soportan SNMPv3. Esto presenta un problema a nivel de seguridad, ya que los mensajes SNMP no pueden viajar cifrados ni se puede realizar una seguridad a nivel de usuario (tal y como se explicó en el capítulo anterior). Tras consultar este problema con el cliente del proyecto, no se vio tampoco como un gran inconveniente, ya que toda la información SNMP va a viajar sólo a través de la Intranet (ó red interna) de la empresa y además ya se había decidido que los mensajes se iban a utilizar únicamente para obtener información. Es decir, se presentaron los riesgos al cliente, éste los evaluó y consideró que la seguridad que ofrece SNMPv2 era suficiente para la red de la empresa. 28 En compensación, el agente de Windows ofrece otro tipo de opciones en materias de seguridad para suplir de alguna manera esa carencia, que se verán más adelante. Una vez que tenemos instalados y configurados los agentes en los diferentes servidores a gestionar, ya podemos realizar el control de éstos desde la entidad gestora. Ahora bien, queremos tener los datos representados de una manera “amigable”, vistosa y clara, utilizando por ejemplo la representación a través de gráficas. Para ello haremos uso de una herramienta de monitorización de datos, que será capaz de generar las gráficas en páginas HTML (HyperText Mark-Up Language), y que posteriormente podrán ser visibles desde otras máquinas, haciendo uso también de un servidor HTTP (HyperText Transfer Protocol). 4.3.3 Análisis de herramientas de monitorización de datos Aunque inicialmente se preveía que el decidir el software a utilizar para monitorizar los datos fuese uno de los pasos más laboriosos, por existir multitud de software en el mercado y tener que realizar múltiples pruebas con cada una de las aplicaciones que nos pudieran interesar, resultó mucho más sencillo de lo que parecía. Como se ha dicho, actualmente en el mercado, existen muchas herramientas de monitorización de dispositivos, pero descartando todas aquellas que no son de libre distribución y que no trabajan en el mundo Linux, básicamente nos podemos quedar con dos ya que son las más valoradas y usadas en el ámbito de la gestión de redes: MRTG (Multi Router Traffic Grapher) y Nagios. Se comenzó analizando Nagios, y rápidamente se descartó ya que aunque permite la captura de paquetes SNMP, no es un sistema de monitorización y gestión basado en SNMP sino que se basa en unos pequeños módulos software que realizan chequeos de la red. Con lo cual, la elección fue sencilla: MRTG. Esta herramienta cuenta con todas las características necesarias para solventar los requerimientos de este proyecto: genera páginas HTML con los gráficos, es capaz también de generar alarmas (de esta manera no hace falta usar los mensajes trampa o “traps”, evitando tener el puerto 162 abierto), y es un sistema basado en SNMP (sus desarrolladores lo crearon para poder trabajar, básicamente, con SNMP, aunque permite otros métodos de obtención de datos, como se verá más adelante). 4.3.4 Servidor HTTP Una vez que tenemos las páginas web con los gráficos de los dispositivos funcionando, se va a montar en nuestra máquina un servidor de páginas web, para que se pueda acceder a las gráficas desde otras máquinas. Para este proyecto se va a emplear el servidor HTTPD de Apache por diferentes motivos: disponibilidad del programa, facilidad de instalación, necesita muy pocos recursos y podemos obtenerlo de manera gratuita. 29 Actualmente se cuenta con dos versiones de este software, Apache 1.x y Apache 2.x. La versión 1.x aún se encuentra activa y en desarrollo, lo cual implica que no se hará obsoleta en pocos años. La versión 2.x, cuenta con una serie de funcionalidades nuevas que la hacen más eficiente en sistemas no Unix. Muchos de sus módulos han sido simplificados, al igual que el archivo de configuración principal. Instalando esta versión, nos evitamos también el tener que realizar una migración de la versión 1.x a la 2.x en un futuro. Por todos los motivos explicados anteriormente, se decide instalar Apache2. 4.3.5 Análisis de herramientas para la comunicación de redes IP y GSM Por último, nos hará falta un software o librería capaz de comunicar redes IP (Internet Protocol) con redes GSM (Global System for Mobile communications, Sistema Global para las Comunicaciones Móviles), de tal manera que podamos enviar alarmas (a través de mensajes SMS) sobre los eventos excepcionales ocurridos en los dispositivos, al teléfono móvil del administrador de la red. En la distribución Debian, dos son las principales librerías que nos ofrecen este tipo de servicio: alamin y gnokii. Alamin es un proyecto español basado en el proyecto Gnokii. Su utilización más habitual, es la de pasarela para el envío de alarmas desde una red de ordenadores a un dispositivo móvil, informando de la gestión de la red. Otro uso muy común que se le da actualmente es, como aplicación para mostrar los SMS que los teleespectadores envían a los programas de televisión. Actualmente se encuentra en desarrollo, en espera de añadir nuevas funcionalidades, siendo un programa muy completo. Cuenta con la desventaja de que el número de dispositivos móviles que se ha testeado con este programa, aún no es muy amplio. Gnokii es un programa de similares características, pero lleva más tiempo en desarrollo lo que lo hace más fiable además de contar con una configuración muy sencilla. Cuenta con un abanico de soporte de teléfonos móviles más amplio. Estas características hacen que seleccionemos Gnokii como software para la realización de este último punto. 4.4 Conclusiones En este capítulo se ha tratado de recopilar de una manera global los requerimientos y las decisiones de este proyecto. Como se ha comprobado, la gran mayoría de estos requerimientos se han seleccionado en función de la propia topología de la red y de las necesidades del cliente. De aquí se puede deducir, que la manera de implantar un sistema de gestión de red no es única, lo que conlleva a que actualmente no exista un estándar para poder llevar a cabo esta tarea. Hay que tratar de realizar un buen estudio de la red y tener claras las capacidades con las que se quiere dotar al sistema de gestión, para que el funcionamiento del sistema sea lo más óptimo posible en nuestra red. 30 Una vez recopilados todos los requerimientos necesarios, en el siguiente capítulo se explicarán con más detalle cada uno de ellos. Se hará siguiendo el mismo orden en el que se ha realizado el proyecto. 31 CAPÍTULO 5. DESARROLLO PRÁCTICO Este es el capítulo más práctico de todo el proyecto. Aquí se detallará paso a paso la configuración de todo el software que ha aparecido en capítulos anteriores. Como ya se ha explicado anteriormente, no se puede tratar como un manual global o estándar, sino de un manual para la red con la que se está trabajando en este proyecto. Aún así, también puede servir de punto de partida para implantar sistemas de gestión en otro tipo de redes. Por motivos de seguridad para la red de Cebanc-Cdea, algunos de los archivos de configuración que se van detallar, no aparecen exactamente de la manera en la que se han implementado (como por ejemplo, los nombres de comunidades, grupos o direcciones IP). El desarrollo de este capítulo se realizará en el siguiente orden: inicialmente se tratará la instalación y configuración de los agentes tanto en Linux como en Windows; posteriormente pasaremos a la instalación y configuración de la herramienta de monitorización (MRTG) y del servidor web (Apache). El capítulo concluye detallando el uso del software para comunicar redes IP y GSM (Gnokii). 5.1 Instalación, configuración y pruebas de los agentes Como ya se ha comentado, cada dispositivo gestionado contará con un agente para poder comunicarse con la entidad gestora. En la propia entidad gestora también se instalará el agente, de tal manera que se puedan hacer pruebas en el propio servidor (utilizaremos nuestro servidor, como entidad gestora y dispositivo a gestionar). Además la configuración de este agente, será diferente a la del resto de dispositivos a gestionar, ya que este contará con un agente Linux, mientras que el resto utilizarán uno para Windows. En el caso de los servidores (o máquinas terminales), los agentes y el servicio SNMP, no vienen instalados por defecto en el S.O. A continuación explicaremos los dos casos que se han utilizado en este proyecto. 5.1.1 Linux – Debian (Net-SNMP) La librería Net-SNMP es una de las más conocidas y utilizadas en plataformas Linux. De hecho las distribuciones más importantes de este S.O. siempre la añaden entre sus aplicaciones. La versión utilizada, para la distribución en Debian, ha sido la 5.1.2. Esta librería cuenta con diferentes paquetes de los cuales nos interesan dos: • • snmp (5.1.2-6.1) Net-SNMP Apps: en este paquete se encuentran las aplicaciones NET-SNMP, que son una colección de comandos para los clientes, para poder publicar las peticiones SNMP a los agentes snmpd (5.1.2-6.1) Net-SNMP Agents: es el agente Net-SNMP. Es un servicio (en Linux también conocido como demonio) que se queda a la escucha de peticiones SNMP desde los clientes y proporciona respuestas. 32 Para realizar su instalación desde la línea de comandos, lo primero que se deberá hacer es acceder como superusuario a través del comando su, y luego ayudarnos del comando apt-get para la instalación del paquete, como se muestra en la figura 10. rmartin@sojos:~$ su Password: sojos:/home/rmartin# apt-get install snmp (fig 10, instalación del paquete snmp a través del comando apt-get) Una vez instalado el agente y sus aplicaciones, tan sólo habrá que configurarlo según las necesidades del equipo en el que va a estar instalado. La propia librería incluye suficiente documentación para describir los diferentes archivos de configuración. El fichero que más nos va a interesar es el snmpd.conf, que en nuestro caso se encuentra en /etc/snmp/ Las primeras definiciones en el archivo de configuración se refieren al modo de acceder al agente desde cualquier servidor. Su funcionamiento es un poco complejo, debido a que este agente da soporte para las 3 versiones del protocolo y si recordamos, la seguridad en las dos primeras versiones se basa en comunidades, mientras que en la última se realiza a través de usuarios. Ya se explicó en el capítulo anterior que la versión del protocolo que se utilizará en este proyecto es la SNMPv2, por lo tanto realizaremos la configuración del agente basándonos en las comunidades. Lo primero que se ha de definir son los nombres de comunidad en función de dónde se haga la petición y del grupo de seguridad. Se verá más claro con un ejemplo como el de la figura 11. # Mapear el nombre de comunidad en un nombre de seguridad # (dependiendo de donde provenga la petición) # sec.name source community com2sec readonly default public com2sec readwrite 127.0.0.1 private (fig. 11, definición de los nombres de comunidad y grupos asignados) En este caso, se está indicando que para acceder desde cualquier servidor a este se hará dentro del grupo readonly y con el nombre de comunidad public. El propio servidor (127.0.0.1) puede acceder a sí mismo a través del grupo readwrite y con el nombre de comunidad private. Ya se comentó, que los nombres de comunidad eran por defecto los que aparecen aquí. Es en este momento cuando se deben de cambiar los nombres por otros, para aumentar la seguridad de acceso al sistema. A continuación se debe definir una relación entre modelos de seguridad y grupos, como se muestra en la figura 12. Todos los accesos como comunidad public desde cualquier lugar se incluyen en el grupo MyROGroup, mientras que los accesos como comunidad private desde el propio servidor se añaden al grupo MyRWGroup. 33 # Asignacion de grupos (mapear los nombres de seguridad en grupos) group MyRWGroup v1 readwrite group MyRWGroup v2c readwrite group MyRWGroup usm readwrite group MyROGroup v1 readonly group MyROGroup v2c readonly group MyROGroup usm readonly (fig. 12, relación entre modelos de seguridad y grupos) Para que quede más claro; hasta ahora tenemos dos grupos de acceso: MyROGroup y MyRWGroup y que están ligados a los grupos de seguridad readonly y readwrite, respectivamente. En readonly se encuentran todos los accesos que se hagan desde cualquier lugar y utilizando el nombre de comunidad public. Mientras que en readwrite sólo se encuentra el propio servidor que podrá acceder a sí mismo utilizando la comunidad private. A continuación, se definen las vistas (figura 13). Con esto se indica a qué zonas de la MIB tiene acceso cada grupo. # Vistas (accesos permitidos a la MIB) # incl/excl subtree mask view all included .1 80 view system included .iso.org.dod.internet.mgmt.mib-2.system # Especificar los permisos de los grupos # group context sec.model sec.level prefix read write notif access MyROGroup "" any noauth exact all none none access MyRWGroup "" any noauth exact all all none # Datos informativos de contacto syslocation Servidor Linux en dptoInformatica syscontact Raul Martin ([email protected]) (fig. 13, definición de vistas y tipo de acceso) Con esta configuración se garantiza el acceso de escritura al grupo MyRWGroup a cualquier zona de la MIB, mientras que sólo se permite leer dentro de la vista system al grupo MyROGroup que es de sólo lectura. Con esto ya tenemos nuestro agente de Linux configurado. A continuación hay que lanzar el proceso snmpd y comprobar que se encuentra escuchando en el puerto 161, como se ve en la figura 14. sojos:/home/rmartin# cd /etc/init.d sojos:/etc/init.d# snmpd start sojos:/etc/init.d# netstat -anp -u Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address PID/Program name udp 0 0 0.0.0.0:9 0.0.0.0:* 1 udp 0 0 0.0.0.0:161 0.0.0.0:* 1 State 167/inetd 178/snmpd (fig. 14, proceso snmp escuchando en el puerto 161 a través del protocolo UDP) 34 Es importante tener en cuenta que cada vez que modifiquemos algo en este archivo de configuración, para que los cambios tengan efecto, se deberá de reiniciar el servicio. En Debian se puede realizar fácilmente con el comando restart. Una vez que tenemos el agente configurado, y el proceso snmpd en ejecución, podemos comenzar a utilizar las herramientas de gestión incluidas en el paquete snmp. Con estas herramientas podremos utilizar todas esas funciones que se comentaron en el capítulo 3 (GetRequest, GetNextRequest, etc). Las herramientas (o comandos) con las que contamos son las siguientes: • snmpget: se utiliza para obtener datos de un dispositivo dado su nombre y un OID (figura 15). sojos:/# snmpget -c 2nmp -v2c localhost system.sysUpTime.0 SNMPv2-MIB::sysUpTime.0 = Timeticks: (197601694) 22 days, 20:53:36.94 (fig. 15, salida del comando snmpget) En esta orden se indica, el nombre de la comunidad de acceso public, la versión a utilizar, la 2 (2c), el nombre del dispositivo que queremos gestionar (localhost o su IP 127.0.0.1) y el OID, system.sysUpTime.0 También podemos realizar múltiples consultas en una única orden (figura 16). sojos:/# snmpget -c 2nmp -v2c localhost sysUpTime.0 sysName.0 SNMPv2-MIB::sysUpTime.0 = Timeticks: (197604978) 22 days, 20:54:09.78 SNMPv2-MIB::sysName.0 = STRING: sojos (fig. 16, salida del comando snmpget con múltiples variables) • snmpgetnext: este comando es similar al anterior, salvo que en vez de devolver el valor del OID que nosotros le indiquemos, nos devolverá el siguiente. Se suele utilizar para poder recorrer de forma manual el árbol MIB, indicando siempre el último OID solicitado (figura 17). sojos:/# snmpgetnext -c 2nmp -v2c localhost sysUpTime.0 SNMPv2-MIB::sysContact.0=STRING:Raul ([email protected]) (fig. 17, salida del comando snmpgetnext) • snmpwalk: con este comando se realizan getnexts de manera automática. Es más cómodo para recorrer los valores del árbol MIB. En la figura 18 se muestra cómo recorrer sólo el módulo system. sojos:/# snmpwalk -c 2nmp -v2c localhost system SNMPv2-MIB::sysDescr.0 = STRING: Linux sojos 2.4.27-1-386 #1 Fri Sep 3 06:24:46 UTC 2004 i686 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 SNMPv2-MIB::sysUpTime.0 = Timeticks: (197612307) 22 days, 20:55:23.07 SNMPv2-MIB::sysContact.0 = STRING: Raul Martin ([email protected]) SNMPv2-MIB::sysName.0 = STRING: sojos SNMPv2-MIB::sysLocation.0 = STRING: Servidor Linux en dptoInformatica 35 SNMPv2-MIB::sysORLastChange.0 = Timeticks: (12) 0:00:00.12 SNMPv2-MIB::sysORID.1 = OID: IF-MIB::ifMIB SNMPv2-MIB::sysORID.2 = OID: SNMPv2-MIB::snmpMIB SNMPv2-MIB::sysORID.3 = OID: TCP-MIB::tcpMIB SNMPv2-MIB::sysORID.4 = OID: IP-MIB::ip SNMPv2-MIB::sysORID.5 = OID: UDP-MIB::udpMIB SNMPv2-MIB::sysORID.6 = OID: SNMP-VIEW-BASED-ACMMIB::vacmBasicGroup SNMPv2-MIB::sysORID.7 = OID: SNMP-FRAMEWORKMIB::snmpFrameworkMIBCompliance SNMPv2-MIB::sysORID.8 = OID: SNMP-MPD-MIB::snmpMPDCompliance SNMPv2-MIB::sysORID.9 = OID: SNMP-USER-BASED-SMMIB::usmMIBCompliance ... (fig. 18, salida del comando snmpwalk) • snmpset: este comando se utiliza para modificar información del dispositivo a gestionar (figura 19). sojos:/# snmpget -v2c -c public localhost systContact.0 SNMPv2-MIB::sysContact.0 = STRING: Raul Martin ([email protected]) sojos:/# snmpset -v2c -c public localhost systContact.0 s "Administrador" SNMPv2-MIB::sysContact.0 = STRING: Administrador sojos:/# snmpget -v2c -c public localhost systContact.0 SNMPv2-MIB::sysContact.0 = STRING: Administrador (fig. 19, utilización del comando snmpset) Vemos en la línea de comandos que antes de indicar el valor nuevo de la variable hay indicada una “s”; esto es para indicar el tipo del valor de la variable (en este caso string). Para conocer el resto de tipos de variables podemos ejecutar el siguiente comando ‘snmpset –h | tail -4’ • snmpstatus: permite acceder al estado del agente (podemos comprobar si éste se encuentra activo, figura 20) sojos:/# snmpstatus -v2c -c 2nmp localhost [127.0.0.1]=>[Linux sojos 2.4.27-1-386 #1 Fri Sep 3 06:24:46 UTC 2004 i686] Up: 22 days, 21:10:28.03 Interfaces: 0, Recv/Trans packets: 1206861/1206861 | IP: 3678133/4154461 (fig. 20, salida del comando snmpstatus) • snmptranslate: con esta orden podemos pasar un OID a la variable que representa. Muy útil a la hora de explorar el árbol MIB (figura 21). sojos:/# snmptranslate .1.3.6.1.2.1.1.3.0 SNMPv2-MIB::sysUpTime.0 (fig. 21, salida del comando snmptranslate) • snmpnetstat: comando similiar al ‘netstat’ de Linux, pero utilizando el agente SNMP para obtener la información (nos muestra una lista de los puertos abiertos en una máquina, figura 22). 36 sojos:/# snmpnetstat -v2c -c 2nmp localhost Active Internet (tcp) Connections Proto Local Address Foreign Address tcp sojos.cebancdea.edu.ssh 192.16.51.18.1361 Active Internet (udp) Connections Proto Local Address udp *.discard udp *.sunrpc udp *.snmp udp *.947 udp *.950 udp *.10000 udp *.46745 (state) ESTABLISHED (fig. 22, salida del comando snmpnetstat) Además de estos comandos, la librería Net-SNMP presenta algunos más que son menos conocidos y menos utilizados (‘snmpdelta’ o ‘snmptest’). Aquí se ha presentado la forma más sencilla y común de utilizarlos, pero cada comando presenta muchas opciones que se pueden consultar a través del parámetro --help (Ej: ‘snmpget –help’). De todos los presentados aquí, para este proyecto los que más van a interesar son básicamente dos: snmpget y snmpwalk. El comando snmpset, suele ser también muy utilizado, pero tras consultarlo con el cliente y sus necesidades, no se consideró necesario usarlo. Además, teniendo en cuenta que vamos a utilizar la versión SNMPv2 con una seguridad sólo basada en comunidades, es interesante tener “desactivado” ese comando. En el archivo de configuración del agente (/etc/snmp/snmpd.conf), tenemos indicado que todas las consultas SNMP que se hagan desde cualquier máquina que no sea la propia (localhost o 127.0.0.1), sean solo de tipo lectura (sólo se podrán obtener datos, nunca modificarlos). Como ya se ha comentado, la instalación de este agente en este proyecto, tan solo se ha utilizado para realizar las primeras pruebas sobre la propia máquina, y también para poder aprender como configurar un agente en Linux. 5.1.2 Otros agentes SNMP para Linux Aunque el agente Net-SNMP es posiblemente el más utilizado y el que en más distribuciones aparece, no es el único dentro del mundo Linux. También existen otros como: • SNMP++, programado en lenguaje C++ pero que sólo soporta las dos primeras versiones del protocolo SNMP, y cuya licencia de distribución no es libre. • Agent++, basado en el anterior y de similares características salvo que soporta todas las versiones de SNMP. • Opennms, es una librería en Java desarrollada por el proyecto Open Network Managment (Gestión Abierta de Redes). Se caracteriza por incluir varios agentes, desde el propio agente que se encarga de comunicarse con la entidad gestora, hasta agentes para poder procesar alarmas. 37 Una vez vistos los agentes para Linux, en el próximo apartado se comentará la configuración de los agentes de los dispositivos a gestionar (11 servidores con plataforma Windows: 1 con Windows 2000, 10 con Windows 2003). 5.1.3 Windows 2000, Windows 2003 Server El agente que ofrece Windows es el mismo para las versiones 2000, 2003 Server y XP, por lo que su configuración es similar. El servicio SNMP en Windows, actualmente soporta, pero no incluye software de administración. El software de administración es el que debe de instalarse en la entidad gestora, para que se encargue de la administración. Aquí obtenemos otro motivo más, para haber utilizado en nuestra entidad gestora la plataforma Linux. Para instalar el protocolo SNMP y su agente en Windows: • Iniciar el Asistente para componentes de Windows al que se accede a través del menú Panel de Control -> Agregar o quitar programas -> Agregar o quitar componentes de Windows. Marcamos la opción Herramientas de administración y supervisión y vemos los detalles como muestra la figura 23. (fig 23, panel de instalación del agente SNMP en Windows) Marcamos la opción que incluye el agente. Tras la instalación el servicio SNMP se iniciará automáticamente. Lo podremos comprobar en la lista de 38 servicios a la que se accede desde el menú Herramientas Administrativas (figura 24). (fig. 24, estado del servicio SNMP) Accedemos a la configuración del servicio seleccionándolo y desde el menú Acción haciendo clic en Propiedades; se muestra en la siguiente figura. (fig. 25, panel de propiedades del servicio SNMP) En la ficha Agente, indicamos un nombre de contacto para el servidor y su ubicación. Las opciones del menú Servicio se detallan en la figura 26. Teniendo en cuenta estas opciones, en nuestros servidores marcamos las opciones “Aplicaciones” y “De un extremo a otro” (ver figura 25). 39 (fig. 26, detalles de las opciones del menú Servicio) 40 (fig. 27, panel de configuración de Seguridad del servicio SNMP) En la ficha Seguridad, que se muestra en la figura 27, se indican los nombres de comunidad y qué derechos tiene cada una de las comunidades que indiquemos. Como ya se ha comentado varias veces, en nuestro caso sólo se va a obtener información de estos dispositivos, por lo que los derechos de la comunidad serán de sólo lectura. Además también, podemos señalar desde qué máquinas se pueden aceptar paquetes SNMP. Aquí indicaremos la dirección IP (o el nombre) de nuestra entidad gestora. De esta forma nos aseguramos que sólo se va a poder gestionar el dispositivo desde nuestra entidad gestora. Marcamos también la opción “Enviar captura de autenticación”, que servirá para comprobar si los paquetes SNMP se reciben desde direcciones IP válidas. Si esto no fuera así, porque la dirección IP (o nombre de la máquina) o el nombre de la comunidad no son correctos, se enviaría desde el agente un mensaje de error hacia la entidad gestora. En el resto de fichas, para las necesidades de este proyecto, no se hará prácticamente ninguna modificación: 41 o Capturas: se refiere a los ‘traps’ (alarmas de eventos excepcionales) comentados en el capítulo anterior. Más adelante se explicará como se realizan estas alarmas sin tener que utilizar estos mensajes trampa. o Dependencias: muestra los servicios que dependen del servicio SNMP; útil cuando se va a detener o reiniciar el proceso. o General: muestra información sobre el servicio (nombre, descripción, estado, etc) o Iniciar sesión: esto es útil si se tienen diferentes cuentas de acceso en la máquina gestionada, para habilitar o deshabilitar el servicio a cada una de las cuentas o Recuperación: muestra una serie de opciones a realizar en caso de que el servicio no funcione (indicamos que se vuelva a reiniciar el servicio) Otro problema que surgió durante el desarrollo del proyecto, fue la disponibilidad de determinados datos en estos servidores. Con esta instalación, sólo se tiene acceso a los datos que ofrece la MIB estándar (MIB-II). Datos como el número de procesos o sesiones no se pueden obtener de esta MIB, por lo que fue necesario el uso y la instalación de dos MIBs nuevas: • • HOST-RESOURCES-MIB con OID 1.3.6.1.2.1.25 y que como su propio nombre indica es una MIB especialmente dedicada a recursos de servidores. SNMP4W2K-WINDOWS-2000-PERFORMANCE con OID 1.3.6.1.4.1.311.1.1.3 destinada a gestionar parámetros de máquinas con un S.O. Windows. Generalmente las MIBs suelen ser librerías dinámicas (.dll) o archivos de texto (.txt, .mib) que se encuentran en la carpeta C:\Windows\System32. En los sistemas Linux la gran mayoría son archivos con extensión .txt y se encuentran por defecto en la ruta /usr/share/snmp/mibs. Una vez configurados los agentes de los servidores Windows, lo siguiente es realizar pruebas para comprobar que tenemos conexión vía SNMP. Las pruebas se realizan utilizando desde la entidad gestora los comandos indicados para Linux, indicando en este caso el nombre de la comunidad que hayamos definido en los agentes de Windows (por motivos de seguridad no se menciona en este documento), e indicando también la dirección IP del servidor que queramos gestionar. Con todo esto, ya podemos administrar nuestros dispositivos. Surge un nuevo problema, y es que la solicitud y obtención de datos a través de la línea de comandos de Linux, no resulta muy atractiva y tampoco nos ofrece excesiva información. Es decir, por ejemplo, si solicitamos el espacio libre del disco duro de un servidor, este nos devolverá un número del tipo 256489127, lo cual no nos dice nada. Llega el momento de monitorizar los datos, y para ello lo haremos mediante gráficas, y más concretamente con el paquete de libre distribución MRTG. Su configuración e instalación, se detallan a continuación. 42 5.2 Instalación y configuración de MRTG Es una de las herramientas de monitorización de dispositivos más importantes para plataformas Linux. Se encuentra programado por Tobias Oetiker y Dave Rand en Perl y C. En el caso más general se utiliza tan sólo para monitorizar el tráfico en diferentes dispositivos, pero profundizando en su configuración, podemos representar todo aquello que el protocolo SNMP y las MIB nos ofrezcan (ó incluso datos que nos ofrezca otro programa externo). Los gráficos que genera, además de ofrecer una vista diaria, representan también la información de la última semana, último mes y último año. Esto es posible, gracias a que MRTG contiene un archivo donde recopila los datos obtenidos del dispositivo de red durante un tiempo máximo de 2 años. Al ser un software tan demandado y utilizado, muchas distribuciones Linux cuentan con esta librería, como es el caso de Debian. Como siempre para instalar los diferentes paquetes utilizaremos el comando ‘apt-get’ y siendo superusuario (comando ‘su’). Los paquetes necesarios son: • • • mrtg (2.10.13-1.2): contiene el propio programa mrtgutils (0.5): son las utilidades necesarias para que MRTG pueda generar las estadísticas mrtg-contrib (2.10.13-1.2): archivos necesarios, por ser MRTG un programa libre, pero que depende de otros programas que no lo son sojos:/# apt-get install mrtg mrtgutils mrtg-contrib (fig. 28, instalación de los módulos necesarios para MRTG) MRTG suele basar su configuración en el archivo /etc/mrtg.cfg. Por normal general, en este archivo se guarda toda la configuración de todos los dispositivos. En nuestro caso, al tener un número importante de dispositivos a gestionar y sobre todo una gran cantidad de parámetros de cada uno, se decidió realizar un archivo de configuración por cada tipo de parámetro a administrar. De esta forma, en nuestra entidad gestora, en el directorio /etc/ nos encontramos los siguientes archivos de configuración: • • • • • mrtgcpu.cfg: archivo de configuración referente a la tasa de CPU utilizada por cada servidor gestionado mrtgdiscos.cfg: aquí se configura el espacio libre en los discos duros de cada servidor gestionado mrtgfreemem.cfg: archivo de configuración sobre la memoria RAM disponible en cada servidor gestionado mrtgnumprocses.cfg: archivo de configuración referente al número de procesos en ejecución y el número de sesiones abiertas en cada servidor gestionado mrtgonoff.cfg: en este archivo se configura el estado de los servidores (encendido ó apagado) 43 • • mrtgredservers.cfg: desde aquí queda configurado el tráfico entrante/saliente de cada una de las interfaces de red de cada servidor (ya que hay servidores con más de una interfaz de red) mrtgroutercisco.cfg: configuración del tráfico de red entrante/saliente del router Cisco A continuación se detallarán cada uno de estos archivos. Para no hacer un documento muy pesado, no se presentará todo el archivo (ya que en determinados casos es muy repetitivo), sino lo más importante de cada uno. mrtgcpu.cfg ### Ultima actualizacion: 11/08/05 ### mrtgcpu.cfg - Archivo de configuracion para representar el porcentaje de uso de cpu en los servidores, tanto por usuario como por el sistema ### Global Config Options # for Debian WorkDir: /var/www/mrtg ### Global Defaults MaxBytes[_]: 100 Unscaled[_]: ymwd ShortLegend[_]: % YLengend[_]: Uso de CPU Legend1[_]: Usuario CPU % (Load) Legend2[_]: Sistema CPU % (Load) LegendI[_]: Usuario LegendO[_]: Sistema ThreshMaxO[_]: 99 ThreshProgO[_]: /home/rmartin/mrtg/alarmas/galarma ThreshProgOKO[_]: /home/rmartin/mrtg/alarmas/galarmaok Options[_]: growrigth,nopercent,unknaszero,gauge,noinfo WriteExpires: Yes Language: spanish EnableIPv6: no Interval: 5 Refresh: 300 ThreshDir: /home/rmartin/mrtg/alarmas/threshdir (fig. 29, opciones globales para el archive mrtgcpu.cfg) Las primeras líneas de cada uno de los archivos de configuración se utilizan para indicar la última modificación del archivo y una breve descripción de lo que contiene. La primera palabra clave que aparece es WorkDir. Aquí se especifica donde se crearán los archivos log (archivos de registro) y las páginas web. Las siguientes opciones, son opciones globales para todos los dispositivos que aparezcan a continuación. En MaxBytes, indicamos el valor máximo que los dos parámetros supervisados (ya que por cada gráfico podemos representar dos parámetros) pueden alcanzar. En este caso hemos indicado un valor de 100, ya que estamos gestionando la tasa de uso de CPU, que nos devolverá unos valores que oscilarán entre 0 y 100. 44 Cada gráfico se escala verticalmente para hacer que los datos actuales sean visibles incluso cuando son muy inferiores a MaxBytes. Esto se puede suprimir utilizando la opción Unscaled. Se indican con una letra que gráfico no se quiere escalar (d=dia, w=semana, m=mes, y=año). Las siguientes 6 opciones, se refieren a las leyendas que aparecerán posteriormente en el documento HTML que contiene las gráficas. A continuación aparecen opciones más interesantes (el resto, son básicamente para configurar los gráficos). ThreshMaxO, este es el valor máximo aceptable para el parámetro Output o de salida (el segundo). En este caso cuando el parámetro Output supere el valor 99, se ejecutará el programa indicado en ThreshProgO. Cuando el parámetro Output, sea inferior a 99 se ejecutará el programa especificado en ThreshProgOKO. Para realizar lo mismo, pero con el primer parámetro (Input o de entrada), se utilizan ThreshMaxI, ThreshProgI y ThreshProgOKI. En Options, se indican otro tipo de opciones para los gráficos: growright, para conseguir que el gráfico se desplace de derecha a izquierda (el valor más actual a la derecha del gráfico, y los históricos a su izquierda); nopercent, no imprime los porcentajes en las gráficas. En este caso no tiene mucho sentido volver a indicar los porcentajes, ya que los datos que estamos representando son porcentajes. En el caso, por ejemplo, del espacio libre en el disco duro, sí nos puede interesar además del valor en sí, cuál es el porcentaje libre con respecto al total; unknaszero, en caso de que se obtuviera un valor desconocido se registraría como un 0 en vez de repetir el último valor, que es la opción por defecto; gauge, trata los valores obtenidos como medidas del estado actual y no como incrementos; noinfo, suprime la información sobre el tiempo en funcionamiento y nombre del dispositivo en la página web generada. Languaje, muestra las páginas web en el idioma que indiquemos (es=español). EnableIPv6, MRTG soporta la versión 6 del protocolo IP. Nuestra red, actualmente utiliza la versión 4, por lo que desactivamos esta opción. Interval, aquí se indica cada cuanto se testean o gestionan los datos, No se puede poner un valor inferior a 5 minutos (en parte es lógico, si estuviéramos testeando datos, por ejemplo cada minuto, podríamos saturar la red). Más adelante, comprobaremos que esto se puede especificar de otra forma. Refresh, número de segundos que tardará la página web en actualizarse (minímo 300 segundos). Threshdir, definiendo esta opción que apunta a un directorio escribible, MRTG solo alertará cuando se sobrepase algún límite del umbral. Por ejemplo, en este caso, si en un momento dado la CPU se satura y se obtiene un porcentaje de uso de 100, saltará la alarma, si en el próximo testeo (a los 5 minutos), sigue teniendo un uso de 100, no volverá a saltar. Esto es para evitar que se envíen gran cantidad de alarmas. Cuando el uso de CPU baje del umbral indicado (99), se enviará otra alarma (la especificada en ThreshProgOKO), indicando que el problema ya se encuentra resuelto. 45 A continuación se presentan las opciones dedicadas a cada servidor (figura 30). Como las opciones son similares, sólo se muestran las de los dos primeros servidores. ######################################################### # Tasa de CPU por usuario y sistema en el servidor NTSQL2 ######################################################### Target[ntsql2-cpu]: 1.3.6.1.4.1.311.1.1.3.1.1.2.1.4.6.95.84.111.116.97.108&1.3.6.1.4.1.311 .1.1.3.1.1.2.1.3.6.95.84.111.116.97.108:[email protected] Title[ntsql2-cpu]: NTSQL2 - CPU LOAD PageTop[ntsql2-cpu]: <H1>NTSQL2 - CPU (Usuario y Sistema) Load %</H1> ########################################################## # Tasa de CPU por usuario y sistema en el servidor NTMail2 ########################################################## Target[ntmail2-cpu]: 1.3.6.1.4.1.311.1.1.3.1.1.2.1.4.6.95.84.111.116.97.108&1.3.6.1.4.1.311 .1.1.3.1.1.2.1.3.6.95.84.111.116.97.108:[email protected] Title[ntmail2-cpu]: NTMail2 - CPU LOAD PageTop[ntmail2-cpu]: <H1>NTMAIL2 - CPU (Usuario y Sistema) Load %</H1> (fig. 30, implementación parcial del archivo de configuración mrtgcpu.cfg) En Target, se decide lo que debe monitorizar MRTG. En este caso, son dos OIDs en los que se encuentran el valor de uso de CPU por el usuario y por el sistema. El primero representa el valor de entrada (input) y el segundo el de salida (output). También hay que especificar el nombre de comunidad y la dirección IP del dispositivo. Entre corchetes se indica un nombre de etiqueta. Para este proyecto hemos decidido utilizar el nombre del servidor seguido del parámetro a gestionar. Title sirve para especificar el título de la página HTML generado para el gráfico, y PageTop para la cabecera de título. El resto de archivos tiene una configuración similar; a partir de ahora tan sólo se detallarán aquellas opciones nuevas que surjan y todo aquello que sea reseñable. mrtgdiscos.cfg ### Ultima actualizacion: 28/07/05 ### mrtgdiscos.cfg - Archivo capacidad de los discos duros de configuración para representar la ThreshMinO[_]: 10% ThreshProgO[_]: /home/rmartin/mrtg/alarmas/galarma ThreshProgOKO[_]: /home/rmartin/mrtg/alarmas/galarmaok ################################################################# # Espacio total y espacio libre del HD Datos del servidor NTMail2 ################################################################# Target[ntmail2-discoe]: `/home/rmartin/mrtg/snmpscripts/snmp_hdfree 192.16.41.2 nombrecomunidad 4` MaxBytes[ntmail2-discoe]: 62305316864 ################################################################### 46 # Espacio total y espacio libre del HD Sistema del servidor NTMail2 ################################################################### Target[ntmail2-discoc]: `/home/rmartin/mrtg/snmpscripts/snmp_hdfree 192.16.41.2 nombrecomunidad 2` MaxBytes[ntmail2-discoc]: 10482400768 (fig. 31, implementación parcial del archivo mrtgdiscos.cfg) Esto es parte del archivo de configuración, en el que se monitorizan por cada gráfica el espacio total de cada disco duro de cada servidor y el espacio libre. En este caso se utiliza la opción ThreshMinO, la alarma saltará cuando el valor obtenido sea menor que el indicado en esta opción. Vemos que el valor es un porcentaje, de esta forma conseguimos que las alarmas salten cuando quede menos del 10% de espacio libre. Para obtener los datos, en esta ocasión se utiliza un script. A la hora de utilizar scripts en Target hay que tener en cuenta que debe devolver cuatro valores: • • • • 1: el estado actual del parámetro de entrada (en este caso el espacio total) 2: el estado actual del parámetro de salida (el espacio libre) 3: el tiempo de funcionamiento del dispositivo 4: el nombre del dispositivo En la figura 32 se muestra el código del script (snmp_hdfree) al que se le pasa como parámetros la dirección IP del dispositivo, el nombre de comunidad y un índice. # Script para obtener el # Parametros de entrada: # # espacio libre del HD $1 direccion ip del dispositivo $2 nombre de la comunidad de lectura del dispositivo $3 indice del disco duro en el OID de la MIB #Obtener el espacio total HDTotal=`snmpget -v2c -c $2 $1 hrStorageSize.$3 | gawk '{print $4}'` #Obtener el espacio usado HDUsado=`snmpget -v2c -c $2 $1 hrStorageUsed.$3 | gawk '{print $4}'` #Obtener las unidades en las que se miden los datos anteriores Unidad=`snmpget -v2c -c $2 $1 hrStorageAllocationUnits.$3 | gawk '{print $4}'` #Obtener el espacio total, ya multiplicado por las unidades espacioTotal=$(((HDTotal)*Unidad)) #Obtener el espacio libre espacioLibre=$(((HDTotal-HDUsado)*Unidad)) echo $espacioLibre echo $espacioTotal #Obtener el tiempo de funcionamiento Tiempo=`snmpget -v2c -c $2 $1 sysUpTime.0 | gawk '{print $5, $6, $7}'` echo $Tiempo #Obtener el nombre de la máquina Nombre=`snmpget -v2c -c $2 $1 sysName.0 | gawk '{print $4}'` echo $Nombre (fig. 32, implementación del script snmp_hdfree) mrtgfreemem.cfg ### Ultima actualizacion: 29/07/05 47 ### mrtgfreemem.cfg - Archivo de configuracion para representar la memoria libre de los servidores ThreshMinO[_]: 5% ThreshProgO[_]: /home/rmartin/mrtg/alarmas/galarma ThreshProgOKO[_]: /home/rmartin/mrtg/alarmas/galarmaok ########################## # Memoria libre en NTMail2 ########################## Target[ntmail2-freemem]: `/home/rmartin/mrtg/snmpscripts/snmp_winmemfree nombrecomunidad 6` Title[ntmail2-freemem]: NTMail2 - Memoria libre 192.16.41.2 ########################## # Memoria libre en NTWeb ########################## Target[ntweb-freemem]: `/home/rmartin/mrtg/snmpscripts/snmp_winmemfree 192.16.41.108 nombrecomunidad 6` Title[ntweb-freemem]: NTWeb - Memoria libre (fig. 33, implementación parcial del archive mrtgfreemem.cfg) En este caso se trata de monitorizar la memoria RAM disponible en cada ordenador. Como hay que representar dos parámetros, monitorizamos también la memoria total. Y de esta forma se generan las alarmas cuando la memoria libre se encuentre por debajo del 5% del total. Al igual que en el caso anterior, aquí también se obtienen los datos a través del siguiente script , representado en la figura 34. # snmp_winmemfree: script para obtener la memoria libre de un servidor windows # Parametros de entrada: $1 direccion ip del dispositivo # $2 nombre de la comunidad de lectura del dispositivo # $3 indice de la memoria RAM disponbile en el OID de la MIB total=`snmpget -v2c -c $2 $1 .1.3.6.1.4.1.311.1.1.3.1.1.1.2.0 | gawk '{print $4}'` libre=`snmpget -v2c -c $2 $1 .1.3.6.1.4.1.311.1.1.3.1.1.1.2.$3 | gawk '{print $4}'` echo $total echo $libre #Obtener el tiempo de funcionamiento Tiempo=`snmpget -v2c -c $2 $1 sysUpTime.0 | gawk '{print $5, $6, $7}'` echo $Tiempo #Obtener el nombre de la máquina Nombre=`snmpget -v2c -c $2 $1 sysName.0 | gawk '{print $4}'` echo $Nombre (fig 34, implementación del script snmp_winmemfree) mrtgnumprocses.cfg ### Ultima actualizacion: 28/07/05 ### mrtgnumprocses.cfg - Archivo de configuracion para representar el numero de procesos y sesiones abiertas de los servidores 48 ###################################################################### ####################################### # Numero de procesos del sistema (hrSystemProcesses.0) # Numero de sesiones abiertas en el servidor NTMail2 (serverServerSessions.0 - Cargado de la MIB perfmib.mib) # -Windows+SNMP+SNMP4tPC ###################################################################### ####################################### Target[ntmail2-procses]: 1.3.6.1.2.1.25.1.6.0&1.3.6.1.4.1.311.1.1.3.1.1.8.16.0:nombrecomunidad@ 192.16.41.2 MaxBytes[ntmail2-procses]: 100 (fig. 35, implementación parcial del archivo mrtgnumprocses.cfg) En este archivo (figura 35) se configuran los números de procesos en ejecución y sesiones abiertas en cada servidor. Obtenemos los datos a través de los OIDs, proporcionados por la MIB SNMP4W2K-WINDOWS-2000-PERFORMANCE implementada en el archivo perfmib.mib. En este caso, no se consideró necesario la gestión de alarmas, y el control de sus datos se realizará analizando las gráficas que genere. mrtgonoff.cfg ### Ultima actualizacion: 28/07/05 ### mrtgonoff.cfg - Archivo de configuración estado de los servidores: 1 encendido, 0 apagado para representar el ############################# # Estado del servidor NTMail2 ############################# Target[ntmail2-onoff]: `/home/rmartin/mrtg/snmpscripts/snmp_onoff 192.16.41.2 nombrecomunidad` MaxBytes[ntmail2-onoff]: 1 (fig. 36, implementación parcial del archivo mrtgonoff.cfg) Aquí se monitoriza el estado de los servidores, si se encuentran encendidos o apagados. Como se puede ver la alarma se genera cuando se obtiene un valor menor que 1. Para conocer el estado del servidor, se ha creado un script que puede devolver dos valores: 1, si el servidor se encuentra encendido, 0 si se encuentra apagado. Por lo tanto en estas gráficas sólo se generarán dos valores 0 ó 1. En la figura 37 se muestra el script para la obtención de los valores. # Script que comprueba si un dispositivo se encuentra encendido o apagado # Parametros de entrada: $1 direccion ip del dispositivo # $2 nombre de la comunidad de lectura del dispositivo # Salida: 1 si esta encendido # 0 e.o.c # variable que nos indicara si el dispositivo se encuentra encendido (1) o # apagado (0) estado=0 # recoger lo que que devuelve la consulta snmpget 49 resultado=`snmpget -v2c -c $2 $1 system.sysUpTime.0 | gawk '{print $2}'` # si devuelve algo es porque el dispositivo se encuentra encendido if test $resultado then #si llego aqui es porque el dispositivo esta encendido estado=1 fi # Obtener dos veces el mismo parametro para que el MRTG pinte el mismo parametro de entrada y salida echo $estado echo $estado #Obtener el tiempo de funcionamiento Tiempo=`snmpget -v2c -c $2 $1 sysUpTime.0 | gawk '{print $5, $6, $7}'` echo $Tiempo #Obtener el nombre de la máquina Nombre=`snmpget -v2c -c $2 $1 sysName.0 | gawk '{print $4}'` echo $Nombre (fig. 37, implementación del script para comprobar el estado, on/off, de un dispositivo) mrtgredservers.cfg – mrtgroutercisco.cfg En estos dos archivos, se encuentra la configuración referente al tráfico de entrada/salida de cada una de las interfaces de los servidores y del router Cisco. Mientras que el resto de archivos se ha tenido que editar manualmente, para obtener el archivo de configuración de tráfico de red, MRTG presenta el siguiente comando: cfgmaker. En la figura 38, se muestra su utilización. sojos:/etc# cfgmaker [email protected] >> mrtgroutercisco.cfg (fig. 38, utilización del comando cfgmaker) Vemos que hay que indicar el nombre de comunidad y el nombre o dirección IP del dispositivo a gestionar, y todo lo que genere se redirecciona a los archivos de configuración. ### Ultima actualizacion: 27/07/05 ### mrtgredservers.cfg - Archivo de configuración para representar el tráfico entrante/saliente en las interfaces de los servidores ##################################################################### # System: NTMAIL2 # Description: Hardware: x86 Family 6 Model 11 Stepping 1 AT/AT COMPATIBLE - Software: Windows Version 5.2 (Build 3790 Uniprocessor Free) # Contact: Carlos Sanchez # Location: Dpto. Informatico ###################################################################### ### Interface 65539 >> Descr: 'HP-NC3163-Fast-Ethernet-NIC' | Name: '' | Ip: '192.16.41.2' | Eth: '00-08-02-46-1f-b8' ### Target[192.16.41.2_65539]: 65539:[email protected]: 50 SetEnv[192.16.41.2_65539]: MRTG_INT_IP="192.16.41.2" MRTG_INT_DESCR="HP-NC3163-Fast-Ethernet-NIC" MaxBytes[192.16.41.2_65539]: 60000 Title[192.16.41.2_65539]: Análisis de Tráfico -- NTMAIL2 PageTop[192.16.41.2_65539]: <H1>Análisis de Tráfico -- NTMAIL2</H1> <TABLE> <TR><TD>System:</TD> <TD>NTMAIL2 in Dpto. Informatico</TD></TR> <TR><TD>Maintainer:</TD> <TD>Carlos Sanchez</TD></TR> <TR><TD>Description:</TD><TD>HP-NC3163-Fast-Ethernet-NIC </TD></TR> <TR><TD>ifType:</TD> <TD>ethernetCsmacd (6)</TD></TR> <TR><TD>ifName:</TD> <TD></TD></TR> <TR><TD>Max Speed:</TD> <TD>12.5 MBytes/s</TD></TR> <TR><TD>Ip:</TD> <TD>192.16.41.2 (ntmail2.cebancdea.edu)</TD></TR> </TABLE> (fig. 39, implementación parcial del archivo mrtgredservers.cfg creado mediante el comando cfgmaker) Esta es una parte de lo generado en el archivo mrtgredservers.cfg tras utilizar el comando cfgmaker. A continuación se incluye una parte del archivo mrtgroutercisco.cfg ### Ultima actualizacion: 26/07/05 # Created by /usr/bin/cfgmaker [email protected] ###################################################################### # System: C1600_CDEA # Description: Cisco Internetwork Operating System Software # IOS (tm) 1600 Software (C1600-Y-M), Version 12.0(12), RELEASE SOFTWARE (fc1) # Copyright (c) 1986-2000 by cisco Systems, Inc. # Compiled Mon 10-Jul-00 19:59 by htseng # Contact: # Location: ###################################################################### ### Interface 1 >> Descr: 'Ethernet0' | '192.16.41.109' | Eth: '00-02-b9-1d-7e-50' ### Name: 'Et0' | Ip: Target[192.16.41.109_1]: 1:[email protected]: SetEnv[192.16.41.109_1]: MRTG_INT_IP="192.16.41.109" MRTG_INT_DESCR="Ethernet0" MaxBytes[192.16.41.109_1]: 1250000 Title[192.16.41.109_1]: Traffic Analysis for 1 -- C1600_CDEA PageTop[192.16.41.109_1]: <H1>Traffic Analysis for 1 -C1600_CDEA</H1> <TABLE> <TR><TD>System:</TD> <TD>C1600_CDEA in </TD></TR> <TR><TD>Maintainer:</TD> <TD></TD></TR> <TR><TD>Description:</TD><TD>Ethernet0 JAC044368PU </TD></TR> <TR><TD>ifType:</TD> <TD>ethernetCsmacd (6)</TD></TR> <TR><TD>ifName:</TD> <TD>Et0</TD></TR> <TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s</TD></TR> <TR><TD>Ip:</TD> <TD>192.16.41.109 ()</TD></TR> </TABLE> ### Interface 2 >> Descr: 'Serial0' | Name: 'Se0' | Ip: '' | Eth: '' ### 51 Target[192.16.41.109_2]: 2:[email protected]: SetEnv[192.16.41.109_2]: MRTG_INT_IP="" MRTG_INT_DESCR="Serial0" MaxBytes[192.16.41.109_2]: 193000 Title[192.16.41.109_2]: Traffic Analysis for 2 -- C1600_CDEA PageTop[192.16.41.109_2]: <H1>Traffic Analysis for 2 C1600_CDEA</H1> <TABLE> <TR><TD>System:</TD> <TD>C1600_CDEA in </TD></TR> <TR><TD>Maintainer:</TD> <TD></TD></TR> <TR><TD>Description:</TD><TD>Serial0 </TD></TR> <TR><TD>ifType:</TD> <TD>frame-relay (32)</TD></TR> <TR><TD>ifName:</TD> <TD>Se0</TD></TR> <TR><TD>Max Speed:</TD> <TD>193.0 kBytes/s</TD></TR> </TABLE> -- (fig. 40, implementación parcial del archivo mrtgroutercisco.cfg creado mediante el comando cfgmaker) En este extracto se ha incluido la configuración de dos de las bocas del router Cisco (Interface1 e Interface2). En todos los archivos de configuración, se tiene indicado que las variables ThreshProgI y ThresProgOKI (y análogamente ThreshProgO y ThreshProgOKO), ejecuten los programas externos galarma y galarmaok respectivamente. galarma se ejecutará cuando se produzca la alarma y galarmaok cuando el valor del parámetro vuelva a ser correcto. Estos dos scripts, básicamente lo que hacen es recoger los datos del MRTG (dispositivo-parametro, valor del umbral y el valor del parámetro actual), y los envía mediante el comando mail a las direcciones de correo que indiquemos (por ejemplo, a todo el departamento informático). En la figura 41 se muestra su código. # Script que recoge los datos del MRTG, y crea la alarma que se envia por correo en un archivo # (que tiene por nombre lo que contenga $1) # Parámetros de entrada: # $1: contiene el nombre del dispositivo gestionado y el parámetro que ha hecho generar la alarma # $2: contiene el valor del umbral del dispositivo y del parámetro indicados anteriormente # $3: contiene el valor actual del parametro del dispositivo gestionado, por el cual ha generado la alarma # # redireccionamos lo que genera la alarma del mrtg a un archivo (de nombre, lo que contenga $1) echo "problema en:" $1 "umbral sobrepasado:" $2 "dato actual:" $3 > /home/raul/mrtg/alarmas/$1 # enviamos el archivo a una direccion de correo electrónico mail -s "Alarma desde MRTG" [email protected] [email protected] < /home/raul/mrtg/alarmas/$1 (fig. 41, implementación del script galarma) El siguiente es el código del archivo galarmaok que funciona de manera similar al anterior: # Script que recoge los datos del MRTG, y crea la alarma de "problema solucionado" que se envia por correo en un archivo 52 # (que tiene por nombre lo que contenga $1) # Parámetros de entrada: # $1: contiene el nombre del dispositivo gestionado y el parámetro para el que se ha solucionado la alarma # $2: contiene el valor del umbral del dispositivo y del parámetro indicados anteriormente # $3: contiene el valor actual del parametro del dispositivo gestionado # # redireccionamos lo que genera la alarma del mrtg a un archivo echo "problema solucionado en:" $1 "umbral:" $2 "dato actual:" $3 > /home/raul/mrtg/alarmas/$1 # enviamos el archivo a una direccion de correo electrónico mail -s "Alarma CORREGIDA desde MRTG" [email protected] /home/raul/mrtg/alarmas < (fig. 42, implementación del script galarmaok) Hasta aquí, se ha conseguido que las alarmas que se generen se envíen por correo electrónico. Otra de las capacidades con las que se quiere dotar al sistema de gestión, es la de que se puedan enviar también mediante SMS a un teléfono móvil. Esto se explicará en el último punto de este capítulo. Una vez que tenemos todos los archivos configurados, lo siguiente es “compilarlos” con el comando mrtg (fig. 5.34). De esta forma, en caso de que hubiese algún error en alguno de los archivos, nos lo mostraría. Si los archivos están correctamente, la primera vez que se haga esto, aparecerán unos cuantos mensajes Warning. Ejecutaremos el mismo comando hasta que no aparezcan. sojos:/etc# mrtg mrtgnumprocses.cfg sojos:/etc# mrtg mrtgroutercisco.cfg sojos:/etc# mrtg mrtgcpu.cfg ... (fig. 43, “compilación” de los archivos de configuración) Y de esta misma manera, realizaríamos la compilación del resto de archivos de configuración. Ahora podemos comprobar que se nos han generado las páginas web, en el directorio indicado en los archivos de configuración (WorkDir: /var/www/mrtg). Se habrán generado archivos html con el nombre que hayamos utilizado en las etiquetas dentro de los archivos de configuración (Ej: ntsql2-cpu.html, ntmail2-cpu.html, ntsql2disco.html, etc.) A partir de ahora el mrtg se ejecutará en cada archivo el tiempo que hayamos indicado en cada variable Interval. Podemos comprobarlo, viendo que se ha añadido en el archivo mrtg dentro de /etc/cron.d. Aquí encontraremos todas aquellas tareas que se ejecuten periódicamente (figura 44). sojos:/etc/cron.d# more mrtg 0-55/5 * * * * mrtg /etc/mrtg.cfg >> /var/log/mrtg/mrtg.log 0-55/5 * * * * mrtg /etc/mrtgdiscos.cfg >> /var/log/mrtg/mrtgdiscos.log 53 0-55/5 0-55/5 0-55/5 0-55/5 0-55/5 0-55/5 * * * * * * * * * * * * * * * * * * * * * * * * mrtg mrtg mrtg mrtg mrtg mrtg /etc/mrtgnumprocses.cfg >> /var/log/mrtg/mrtgnumprocses.log /etc/mrtgredservers.cfg >> /var/log/mrtg/mrtgredservers.log /etc/mrtgroutercisco.cfg >> /var/log/mrtg/mrtgroutercisco.log /etc/mrtgfreemem.cfg >> /var/log/mrtg/mrtgfreemem.log /etc/mrtgcpu.cfg >> /var/log/mrtg/mrtgcpu.log /etc/mrtgonoff.cfg >> /var/log/mrtg/mrtgonoff.log (fig. 44, tareas a realizar de manera periódica) Como se puede observar, cada comando mrtg genera una salida que se redirecciona a unos ficheros de registro (.log). En caso de que sucediera algún problema a la hora de invocar el comando mrtg podremos revisar estos archivos, para detectar más fácilmente los errores. En este proyecto el número de páginas html que se generan es bastante amplio, una por cada dispositivo/parámetro. Mediante el comando indexmaker podemos agrupar todas estas páginas, en una sola. En este caso se han recogido en función del tipo de parámetro, es decir, se mostrará una página web con todos los tráficos de red, otra con los espacios libres de los discos de los servidores, etc. El comando se utiliza como se indica en la figura 45. sojos:/etc# indexmaker mrtgcpu.cfg > /var/www/mrtg/cpu.html (fig. 45, utilización del comando indexmaker) De esta manera, conseguimos agrupar todas las gráficas que se generan a partir de mrtgcpu.cfg en el archivo cpu.html. El resto de páginas creadas, se listan a continuación: • • • • • • discos.html freemem.html numprocses.html onoff.html redservsers.html routercisco.html A su vez, se ha creado otra página web “índice” (en /var/www/mrtg/index.html) para poder acceder a esas 7 páginas web (figura 46). 54 (fig. 46, Menú principal de acceso a las gráficas) Desde este menú podremos acceder de forma cómoda a las gráficas generadas. Pinchando en uno de los enlaces obtendríamos las gráficas, similares a las que se muestran en la figura 47. Pulsando con el ratón sobre cada una de estas gráficas, obtendríamos más detalles, como el histórico semanal, mensual y anual, además de los valores de los datos actuales, medios y máximos de cada gráfica (figura 48). Con todo esto, ya tendríamos funcionando nuestras gráficas monitorizando los dispositivos y parámetros que se han indicado. En este momento, sólo tenemos acceso a las gráficas desde la propia entidad gestora. Se quiere que se puedan acceder también desde otras máquinas, por ejemplo, desde todos los ordenadores del departamento de informática. Esto se detalla en el siguiente punto. 55 (fig. 47, vista global de las gráficas) Numero de procesos y sesiones en NTSQL2 Gráfico diario (5 minutos Máx Procesos 48 Máx Sesiones 25 Gráfico Promedio Procesos 45 Actual Procesos 45 Promedio Sesiones 9 Actual Sesiones 23 semanal (30 minutos Máx Procesos 47 Promedio Procesos 47 Actual Procesos 45 56 : Promedio) : Promedio) Máx Sesiones 26 Gráfico Promedio Sesiones 7 mensual Actual Sesiones 22 (2 horas Máx Procesos 48 Máx Sesiones 24 Gráfico Promedio Procesos 47 Actual Procesos 45 Promedio Sesiones 5 Actual Sesiones 11 anual (1 día Máx Procesos 48 Máx Sesiones 9 Promedio Procesos 45 Promedio Sesiones 4 : : Promedio) Promedio) Actual Procesos 46 Actual Sesiones 8 VERDE ### Numero de procesos AZUL ### Numero de sesiones abiertas (fig. 48, vista detallada de las gráficas) 5.3 Instalación y configuración del servidor HTTP, Apache Para ello, utilizamos el comando apt-get, ya que esta librería se encuentra disponible en la distribución de Debian. apt-get install apache2 (fig. 5.49, instalación del módulo apache2) Una vez instalado el servidor web, se procede a realizar su configuración. Como se ha dicho, para esta versión de Apache, el archivo httpd.conf se ha simplificado bastante. Muchas de las opciones que incluía este archivo, en la nueva versión han pasado a /etc/apache2/sites-available/default. En este archivo introduciremos varias reglas de seguridad: • • acceso a las gráficas restringidas por IP (indicaremos qué máquinas tienen acceso a las gráficas, mediante su dirección IP) acceso restringido por usuario y password (también se deberán de indicar para el acceso un nombre de usuario y un password) Para restringir el acceso por IP, introducimos las siguientes líneas en el archivo de configuración, como se muestra en la siguiente figura. 57 <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from 192.16.41.23 allow from 192.16.41.14 allow from 127.0.0.1 # This directive allows us to have apache2's default start # page # in /apache2-default/, but still have / go to the right # place RedirectMatch ^/$ /mrtg/ </Directory> (fig. 50, configuración de apache2, permisos de acceso por IP) Con la directiva allow from seguida de una dirección IP, damos permiso de acceso a la máquina con esa IP. A continuación, crearemos un usuario y una contraseña para poder acceder a las gráficas, utilizando el comando htpasswd2 (figura 51). sojos:/etc/init.d# htpasswd2 –c /etc/apache2/usuarios adminet New password Re-type new password Adding password for user adminet (fig. 51, utilización del comando htpasswd2) Hay que indicar en el comando, el archivo en el que se guardará el usuario, y su nombre de acceso. Luego se solicitará el password para ese usuario. También añadiremos las siguientes líneas en el archivo de configuración default (figura52). <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from 192.16.41.107 allow from 192.16.41.9 allow from 127.0.0.1 AuthType Basic AuthName adminet AuthUserFile /etc/apache2/usuarios Require valid-user # This directive allows us to have apache2's default start # page # in /apache2-default/, but still have / go to the right # place RedirectMatch ^/$ /mrtg/ </Directory> (fig. 52, configuración de apache2, autorizaciones) Se añade, el tipo de autorización, el usuario y el archivo donde se encuentra ese nombre de usuario (podemos tener también más de un usuario con acceso). 58 De esta forma, cada vez que se quiera acceder a las gráficas desde alguna de las máquinas que hemos señalado en el archivo de configuración, se solicitará también un nombre de usuario y un password (figura 53). (fig. 53, menú de acceso a las gráficas) En este archivo de configuración aparece también otra directiva, DocumentRoot, en la que se debe indicar la raiz de las páginas web a mostrar. Para este proyecto, recordar que se hizo un índice y que se encuentra en /var/www/mrtg. DocumentRoot /var/www/mrtg Con esto, finalizamos la configuración del servidor Apache2. Contiene muchas más opciones, pero para este proyecto nos sirve con las restricciones añadidas. 5.4 Instalación y configuración de Gnokii Llegamos al último paso de este proyecto. Nuestro sistema hasta ahora es capaz de monitorizar los dispositivos y parámetros que ya se han indicado, y de enviar alertas a través del correo electrónico cuando se suceden determinados eventos excepcionales. Se solicitó que el sistema de gestión fuera capaz de enviar estas alertas por medio de un SMS a un teléfono móvil. Veremos como realizar este paso, de una manera muy sencilla. Para ello, necesitaremos un teléfono móvil conectado a nuestra entidad gestora, y un software que sea capaz de comunicarlos: Gnokii. 59 Antes de comenzar con la instalación necesitaremos: un móvil de los soportados y testeados por el proyecto Gnokii (se puede comprobar en la lista que ofrece en su página web, ver Bibliografía). En nuestro caso el móvil utilizado es un Nokia 3310. El tipo de conexión de este móvil con el ordenador, se realiza mediante un cable serie como el de la siguiente figura. (fig. 54, conexión del cable de datos al teléfono móvil) Conectamos el cable al teléfono móvil, y por el otro extremo al puerto serie de la entidad gestora. Como ya se ha dicho, Debian contiene la librería gnokii (0.6.5), por lo tanto utilizaremos de nuevo el comando apt-get para su instalación. sojos:/#apt-get install gnokii (fig. 55, instalación del modulo gnokii) A continuación accedemos al archivo de configuración /etc/gnokiirc y modificamos los parámetros que aparecen en la figura 56. # Modelo del móvil model = 3310 # Tipo de conexión entre ordenador y el móvil conenection = m2bus (fig. 56, configuración de gnokii, modelo de móvil y conexión) 60 Y en el fichero /usr/bin/gnokii, también modificamos el siguiente parámetro: # ya que el cable serie de conexión no es muy rápido, ponemos un # tiempo de espera amplio para la ejecución de los comandos del # progrma gnokii TIMEOUT = 150 (fig. 57, configuración de gnokii, tiempo de espera) Para comprobar que la instalación ha sido correcta ejecutamos el siguiente comando: debian:/etc# gnokii –monitor GNOKII Version 0.6.5 Entering monitor mode… RFLevel 100 Battery: 82 SIM: Used 5, Free 115 Network: vodafone (Spain) (fig. 58, comprobación de la instalación de gnokii mediante el commando gnokii –monitor) Vemos que hay conexión entre el teléfono móvil y el ordenador. Con el siguiente comando podremos enviar nuestro primer mensaje: sojos:/etc# /$echo \”hola mundo\” | gnokii –sendsms $num_telf (fig. 59, enviar sms a través de gnokii) Comprobamos que a través del comando gnokii –sendsms seguido del número de teléfono de envío, se realiza el envío de SMS. Tan sólo queda conseguir que se envíen los mensajes de alarma que se generan a partir del MRTG. Se realiza de una manera muy sencilla. Incluímos el comando gnokii –sendsms en los scripts encargados de enviar las armas por correo (galarma, galarmaok), de tal manera que el mismo mensaje que se envía por correo electrónico se envía también por SMS a través del móvil. A continuación se muestra el script galarma, tras haber realizado las modificaciones: # Script que recoge los datos del MRTG, y crea la alarma que se envia por correo en un archivo # (que tiene por nombre lo que contenga $1) # Parámetros de entrada: # $1: contiene el nombre del dispositivo gestionado y el parámetro que ha hecho generar la alarma # $2: contiene el valor del umbral del dispositivo y del parámetro indicados anteriormente # $3: contiene el valor actual del parametro del dispositivo gestionado, por el cual ha generado la alarma # # redireccionamos lo que genera la alarma del mrtg a un archivo (de nombre, lo que contenga $1) echo "problema en:" $1 "umbral sobrepasado:" $2 "dato actual:" $3 > /home/raul/mrtg/alarmas/$1 61 # enviamos el archivo a una direccion de correo electrónico mail -s "Alarma desde MRTG" [email protected] < /home/raul/mrtg/alarmas/$1 # se envia el contenido del fichero $1 via SMS al # indicado cat /home/rmartin/alarmas/$1 | gnokii --sendsms 123456789 número (fig. 60, script galarma) Con el comando cat, se muestra lo que haya en el archivo indicado en el path; mediante una tubería conseguimos que ese contenido se redireccione al comando gnokii –sendsms encargado de enviar el SMS. El funcionamiento es similar para el script galarmaok: # Script que recoge los datos del MRTG, y crea la alarma de "problema solucionado" que se envia por correo en un archivo # (que tiene por nombre lo que contenga $1) # Parámetros de entrada: # $1: contiene el nombre del dispositivo gestionado y el parámetro para el que se ha solucionado la alarma # $2: contiene el valor del umbral del dispositivo y del parámetro indicados anteriormente # $3: contiene el valor actual del parametro del dispositivo gestionado # # redireccionamos lo que genera la alarma del mrtg a un archivo echo "problema solucionado en:" $1 "umbral:" $2 "dato actual:" $3 > /home/raul/mrtg/alarmas/$1 # enviamos el archivo a una direccion de correo electrónico mail -s "Alarma CORREGIDA dsde MRTG" [email protected] < /home/raul/mrtg/alarmas/$1 (fig. 61, script galarmaok) 62 De esta manera, se consigue tener la información de la gestión de la red en un teléfono móvil, lo cual ayuda al administrador de la red, a estar informado independientemente del lugar donde se encuentre. (fig. 62, recepción de una alerta) 5.5 Conclusiones Partiendo de las decisiones comentadas en el capítulo anterior, se han configurado e implantado todas las herramientas descritas. SNMP y MRTG sumados al ingenio del administrador de red para implementar scripts, forman una herramienta muy interesante capaz de monitorizar la red en tiempo real, comprobando el uso de sus recursos informáticos y detectando sus anomalías. Para dotar de una mayor facilidad de acceso a la información monitorizada, se utiliza un servidor web, que permite visionar la información a través de una página web, y una herramienta de comunicación entre redes IP y GSM, que permite conocer el estado de las anomalías surgidas desde un teléfono móvil.. Por último, hay que resaltar que la solución a los problemas surgidos para implantar dichas herramientas, no debe partir de realizar cambios en la red. Como ya se explicó en el capítulo 3, el impacto que han de sufrir las redes con la introducción de los sistemas de gestión, ha de ser mínimo. El sistema se debe adecuar a la red, y no la red al sistema. 63 CAPÍTULO 6. CONCLUSIONES El sistema de gestión o control de red presentado en este proyecto, se ha basado en el uso del protocolo de gestión SNMP y la herramienta de software libre MRTG. Los elementos software desarrollados, como la configuración del protocolo o la obtención de datos por parte del MRTG, se han implementado mediante lenguaje script, lo cual implica una mayor robustez y fiabilidad en el sistema. Todo el software utilizado, incluso el sistema operativo, es de libre distribución, lo cual demuestra que este tipo de herramientas son tan válidas y funcionales como las que desarrollan y distribuyen las empresas privadas. El uso de SNMP, como protocolo de gestión de red, se debe a su facilidad para poder monitorizar diferentes dispositivos de múltiples fabricantes, gracias a que es el estándar más extendido dentro de los protocolos de gestión de red. A pesar de no poder contar con toda la seguridad que proporciona la última versión de SNMP, realizando una configuración óptima del protocolo (impidiendo la posibilidad de modificar datos en los dispositivos de red y utilizando los nombres de comunidad) y con el uso de otras herramientas de acceso a los datos (Apache), se puede asegurar un gran nivel de seguridad. Fijar este nivel dependerá de la propia constitución y funcionalidad de la red. Para el caso utilizado en este PFC, se considera el óptimo. Algo similar ocurre con la utilización de MRTG como herramienta de monitorización de datos; aunque puedan existir herramientas más complejas y con más funcionalidades en el mercado, se considera que ésta es la adecuada para la red en la que se ha implantado ya que cumple totalmente con los requisitos solicitados. Se integra perfectamente con el protocolo SNMP, permitiendo una representación bastante clara de la información mediante gráficas. Además cuenta con un mecanismo sencillo para generar las alarmas que avisan de determinadas situaciones o anomalías que ocurran en los dispositivos. La posibilidad de que estas alarmas se puedan recibir en un teléfono móvil mediante el uso de mensajes SMS, ofreciendo al administrador de la red una mayor comodidad en su gestión, presenta una característica que no suelen ofrecer este tipo de sistemas. En definitiva, además de cumplir todos los objetivos solicitados al inicio del desarrollo de este proyecto, se ha intentado también implantar, un sistema sencillo de ampliar, tanto a la hora de monitorizar nuevos datos como nuevos dispositivos, y de fácil utilización mediante su acceso a las gráficas vía web. 64 CAPÍTULO 7. BIBLIOGRAFÍA Aldarias Raya, Paco. 2005. Estadísticas de red, router, cpu: MRTG. http://pacodebian.iespana.es/mrtg.html Barrios J. 2005. Linux para todos: Como configurar SNMP. http://www.linuxparatodos.net/geeklog/article.php?story=borrador-como-snmpd-mar-10-2005 Fernández-Sanguino Peña, Javier. 2001. Linux Actual nº 17: Gestión SNMP con Linux. http://es.tldp.org/Articulos-periodisticos/jfs/snmp/snmp.html Garzón Alcalde, Joaquín. 2005. Monitorización gráfica del tráfico de red y otros parámetros del sistema. http://www.diariolinux.com/tiki-read_article.php?articleId=6 JulHer. 2003. Libertonia: Monitorizando sistemas con MRTG y SNMP. http://libertonia.escomposlinux.org/story/2003/1/17/224253/241 Kot, Pawel; Borbely, Zoltan. gnokii.org. http://www.gnokii.org/ Kurose, J. F.; Ross, K. W. 2003. Redes de Computadores (Un enfoque descendente basado en Internet). COMPUTER NETWORKING. A Top-Down Approach Featuring the Internet, Second Edition by Kurose, J. F. and Ross, K. W. (cap. 8, pp 659-678) Mora Porta, Gaspar; García, Ignacio; Benejam Torres, Santiago; 2004. Monitorización del tráfico con MRTG: Apuntes sobre Debian GNU/Linux. http://www.neozero.net/linux/manuales/mrtg/ Oetiker, Tobias; Rand, Dave. MRTG: The Multi Router Traffic Grapher. http://people.ee.ethz.ch/~oetiker/webtools/mrtg/ Sanz, José Manuel. 2005. Envío de mails al móvil mediante gnokii. http://bulma.net/body.phtml?nIdNoticia=2178 Net-SNMP. http://net-snmp.sourceforge.net/ 65 Seco Hernández, Andrés. Alamin GSM SMS Gateway. http://www.alamin.org/ Sobre las Peticiones de Comentarios (RFCs), existen copias de estos archivos en múltiples sitios de Internet. En la siguiente URL, http://www.rfc-es.org/ , se pueden obtener algunos de estos documentos traducidos al castellano. El encargado de publicar y supervisar estos documentos es el Editor de RFCs, http://www.rfc-editor.org/. Una URL completa que se puede utilizar como buscador de RFCs es: http://www.faqs.org/rfcs/ . También se han utilizado los siguientes grupos de noticias para consultar dudas y obtener consejos sobre los diferentes temas que han aparecido en este proyecto: • es.comp.os.linux.redes • es.comp.redes.misc • comp.protocols.snmp 66