Trabajo de monitoreoPor: Carolina Guzmán Rodríguez Wilinton Acevedo Rueda Yessenia Duque Instructor: Camilo Andrés Zapata Torres Servicio Nacional de Aprendizaje (SENA) Medellín - Colombia Año 2011 Introducción Hoy día con la creación de software de monitoreo hacen más factible y fácil la función de un administrador de redes en cuanto al visualizar el comportamiento de todos los dispositivos, equipos y servicios que se encuentran pegados a la red; con este trabajo se quiere dar a conocer la forma como se instala y configura un servidor de monitoreo que se lleva a cabo en una máquina virtual bajo la plataforma de Fedora 14, utilizando así Zabbix que es un software libre bajo los términos de GNU, está diseñado para monitorear y rastrear posibles fallos en la red, utiliza bases de datos como mysql para almacenar todos los datos necesarios. Palabras claves 1. Monitoreo: es un término que describe el uso de un sistema que constantemente monitoriza (visualiza y está al tanto) una red de computadoras, dispositivos y servicios que corren por la red, se encarga de buscar componentes defectuosos o lentos, para luego informar a los administradores de redes mediante correo electrónico, de lo que está pasando en la red. 2. Base de datos: También conocida como Database, la base de datos es un conjunto de información que está almacenada en forma sistemática, de manera tal que los datos que la conforman puedan ser utilizados en forma fragmentada cuando sea necesario. Los datos almacenados pueden ser muy diversos: nombres, números telefónicos, direcciones, años, etc. Todo depende de la finalidad para la que sea armada la base. 3. Esquema de base de datos: Para crear el modelo de objetos de datos se debe traducir el modelo relacional de la base de datos a un modelo de objetos de datos. Para realizar ese mapeo o traducción, el ORM necesita una descripción del modelo relacional, que se llama "esquema" (schema). En el esquema se definen las tablas, sus relaciones y las características de sus columnas. 4. Script: es un programa usualmente simple, que por lo regular se almacena en un archivo de texto plano. Los script son casi siempre interpretados, pero no todo programa interpretado es considerado un script. Los scripts son un conjunto de instrucciones generalmente almacenadas en un archivo de texto que deben ser interpretados línea a línea en tiempo real para su ejecución, se distinguen de los programas, pues deben ser convertidos a un archivo binario ejecutable para correrlos. Los scripts pueden estar embebidos en otro lenguaje para aumentar las funcionalidades de este, como es el caso los scripts PHP o Javascript en código HTML. 5. Mysql: (My Structured Query Language o Lenguaje de Consulta Estructurado) es un sistema de gestión de base de datos relacional, multihilo y multiusuario, que se ejecuta como un servidor. El SQL frase significa Lenguaje de consulta estructurado. Una de las características más interesantes de MySQL es que permite recurrir a bases de datos multiusuario a través de la web y en diferentes lenguajes de programación que se adaptan a diferentes necesidades y requerimientos. 6. Php: (PHP Hypertext Pre-processor). Lenguaje de programación usado generalmente en la creación de contenidos para sitios web. Es un lenguaje interpretado especialmente usado para crear contenido dinámico web y aplicaciones para servidores ya que suele utilizarse en interpretación del lado del servidor aunque también puede usarse desde una interfaz de línea de comandos y para la creación de otros tipos de programa. 7. Httpd (servidor Apache): Servidor web de distribución libre y de código abierto, el servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd) de la Apache Software Foundation. (HTTP daemon). Programa que corre de fondo en un servidor web y espera peticiones de entrada para responderles. 8. SNMP: (Simple Network Management Protocol - Protocolo simple de administración de red). Protocolo que permite supervisar, analizar y comunicar información de estado entre una gran variedad de hosts, pudiendo detectar problemas y proporcionar mensajes de estados. Forma parte de una suite de protocolos de internet definidos por la IETF. Se utiliza para monitorear los dispositivos adjuntados a una red, supervisando el desempeño de la red, y buscar y resolver problemas. SNMP consiste de un conjunto de estándares para la administración de redes, incluyendo un protocolo de capa de aplicación, un esquema de base de datos y un conjunto de objetos de datos. Las versiones más utilizadas son SNMPv1 y SNMPv2. La versión 3 (SNMPv3) posee cambios importantes con respecto a sus predecesoras, especialmente en la seguridad. 9. Zabbix: es un sistema de gestión de red creado por Alexei Vladishev. Está diseñado para monitorear y rastrear el estado de varios servicios de red , servidores y otros equipos de red . Utiliza MySQL , PostgreSQL , SQLite , Oracle o IBM DB2 para almacenar datos. Su servidor está escrito en C y la interfaz web está escrito en PHP . Zabbix ofrece varias opciones de monitoreo. controles simples pueden comprobar la disponibilidad y capacidad de respuesta de los servicios estándar, como SMTP o HTTP sin necesidad de instalar ningún software en el host monitoreado. Un Zabbix agente también se puede instalar en UNIX y Windows hosts para supervisar las estadísticas, tales como carga de la CPU, utilización de la red, espacio en disco, etc. Distribuido bajo los términos de la versión 2 de la GNU General Public License , Zabbix es software libre . 10.Código fuente: (Source code, code base). Texto escrito en un lenguaje de programación específico y que puede ser leído por un programador. Debe traducirse a lenguaje máquina para que pueda ser ejecutado por la computadora o a bytecode para que pueda ser ejecutado por un intérprete. Este proceso se denomina compilación. Acceder al código fuente de un programa significa acceder a los algoritmos desarrollados por sus creadores. Es la única manera de modificar eficaz y eficientemente un programa. Liberar un código fuente significa compartir ese texto con cualquier persona que lo desee, esto implica que cualquiera puede analizarlo, copiarlo o modificarlo. Las aplicaciones que liberan sus códigos suelen ser gratuitas bajo licencia GNU. La liberación de un código de un programa implica ciertos riesgos en cuando a la seguridad del mismo, pues su funcionamiento exacto queda expuesto. El código fuente no suele liberarse para las aplicaciones comerciales y no puede obtenerse el código fuente original a través de los programas ya compilados. 11.DBName: nombre de la base de datos 12.DBUser: usuario de la base de datos. 13.DBPassword: contraseña para acceder a la base de datos. 14.Protocolo: un protocolo es un conjunto de reglas usadas por computadoras para comunicarse unas con otras a través de una red. Un protocolo es una regla o estándar que controla o permite la comunicación en su forma más simple, un protocolo puede ser definido como las reglas que dominan la sintaxis, semántica y sincronización de la comunicación. 15.Puerto de red: Interfaz para comunicar programa a través de una red. 16.Puerto de datos: interfaz por la cual pueden enviarse o recibirse datos. Esa interfaz puede ser física o de software (puerto de navegación http, puerto de IRC, etc.). En tanto, los puertos físicos pueden ser: puerto serial, puerto paralelo, puerto USB, puerto AGP, puerto PS/2, puerto ISA, puerto PCI, puerto de memoria, slot, etc. 17.Firewall: (contrafuego) es una parte de un sistema o una red que está diseñada para bloquear el acceso no autorizado, permitiendo al mismo tiempo comunicaciones autorizadas. Se trata de un dispositivo o conjunto de dispositivos configurados para permitir, limitar, cifrar, descifrar, el tráfico entre los diferentes ámbitos sobre la base de un conjunto de normas y otros criterios. Los cortafuegos pueden ser implementados en hardware o software, o una combinación de ambos. Los cortafuegos se utilizan con frecuencia para evitar que los usuarios de Internet no autorizados tengan acceso a redes privadas conectadas a Internet, especialmente intranets. 18.SElinux: (Seguridad Enhanced LINUX - Seguridad Mejorada de Linux)) Una versión segura de Linux originalmente especificado por la Agencia de Seguridad Nacional (NSA) y que se convirtió en norma desde la versión 2.6 del kernel de Linux en 2003. SELinux utiliza Linux Security Modules (LSM), que permite a Linux para facilitar el acceso controles obligatorios. Ver control de acceso obligatorio y Linux. Es una característica de seguridad de Linux que provee una variedad de políticas de seguridad, incluyendo el estilo de acceso a los controles del Departamento de Defensa de Estados Unidos, a través del uso de módulos de Seguridad en el núcleo Linux. No es una distribución de Linux, sino un set de modificaciones que puede ser aplicado a un sistema Tipo-Unix como Linux y BSD. 19.NMS: Un NMS ejecuta aplicaciones que supervisan y controlan a los dispositivos administrados. Los NMS’s proporcionan el volumen de recursos de procesamiento y memoria requeridos para la administración de la red. Uno o más NMS’s deben existir en cualquier red administrada. 20.MIB: Una Base de Información de Administración (MIB) es una colección de información que está organizada jerárquicamente. Las MIB’s son accedidas usando un protocolo de administración de red, como por ejemplo, SNMP. INSTALACION Y CONFIGURACION PLATAFORMA DE MONITOREO ZABBIX Antes de todo debemos descargar el paquete que contiene el código fuente de la plataforma, este lo descargamos del siguiente URL http://linux.software.hispavista.com/n58212-zabbix-1-8-4-1-9-3-alpha/, la versión de zabbix que utilizamos es zabbix 1.8.4 / 1.9.3 Alpha. 1. Procedemos a instalar un servidor LAMP para que nuestra aplicación que nos ayudara a monitorear este instalada. Los paquetes que debemos instalar para eso son. • El siguiente paso a seguir es instalar las librerías del snmp y los compiladores necesarios. • Todo lo vamos hacer vía consola con el fin de que si lo hacemos gráficamente habrían muchos huecos en el aprendizaje de este método de monitoreo, bueno sin salirnos del tema lo que vamos hacer es crear la base de datos para eso entramos a MySQL , en la siguiente ruta. NOTA: MySQL por el momento no tiene contraseña de administrador o “root”, para que le puedas colocar la contraseña debes reiniciarlo y después de esto te dice la opción de cómo lo debes hacer, en la siguiente imagen te mostrara como. • Listo lo que vamos hacer es crearle la base de datos a nuestra herramienta que nos ayudara a monitoreo desde el interprete de comandos de mysql, para esto debemos entrar a mysql de la siguiente forma. ➢ Entramos a la base de datos primero. • Bueno ahora con el siguiente comando creamos la base datos para nuestra herramienta Zabbix. • Ahora vamos a descargar y descomprimir nuestra aplicación. Esta ya la he descargado lo me falta hacer es descomprimirla. • El paso siguiente es agregar el “esquema” o la aplicación en mysql para poder agregar a la base de datos la información de la herramienta a tal base. Para esto nos debemos ubicar en la carpeta create/schema del archivo que descomprimimos. • Importamos el archivo mysql.sql que lo necesita mysql. • También el archivo data.sql • El archivo images_my sql-sql. • Ejecutamos el scrpt de configuración e instalamos el servidor zambbix con su agente. • Ejecutamos el scrip de instalación con el siguiente comando. • Lo que vamos hacer es crear el directorio principal de zabbix y un usuario en el sistema ➢ Mkdir: este comando se utiliza para crear un directorio ➢ Useradd: lo utilizamos para crear un usuario en la maquina local • Con el comando less /etc/passwd lo que hacemos es mirar los usuarios del sistema y verificamos que nuestro usuario si fue creado con éxito, nos salimos de esta apretando Q • Luego copiamos los archivos de configuración de zabbix ubicados en el directorio /etc/zabbix/ • Luego con un editor de textos en este caso vim abrimos el archivo zabbix_server.conf • En este archivo vamos a verificar si el nombre de nuestra base de datos creada en el paso anterior es zabbix • También verificamos la línea DBUser para el usuario de mysql • Y por ultimo verificamos que la línea DBPassword contenga el password que le asignamos en un paso anterior al mysql. • Otro paso que hay que hacer es copiar el directorio php que contiene los archivos propios de la interfaz web de la plataforma de monitoreo zabbix, con el siguiente comando. • En el archivo /etc/services verificamos si las siguientes líneas de zabbix están agregadas, sino lo están dentro de todo el archivo procedemos a agregarlas, en mi caso ya estaban agregadas. #vim /etc/services • Editamos el archivo del agente de monitoreo que se encuentra en la siguiente ruta /etc/zabbix/zabbix_agentd.conf #vim /etc/zabbix/zabbix_agentd.conf Buscamos la línea server en donde establece la dirección IP del servidor donde está corriendo zabbix, colocamos ahí la dirección IP de la interfaz de red o también se puede colocar la dirección de loopback • Pasamos a la configuración de los scrips de inicio del servidor zabbix y el agente zabbix, para ello copiamos los ficheros zabbix_server y zabbix_agentd que se encuentran en misc/init.d/fedora/core5/, los copiamos al directorio /etc/init.d/ Copiamos los archivos de el zabbix a la ruta /etc/init.d. • • Editamos el fichero tanto del /etc/init.d/zabbix_agentd, como /etc/init.d/zabbix_server y buscamos la línea ZABBIX_BIN, indicamos la ruta correcta /usr/local/zabbix_agentd • Ahora si reiniciamos nuestro servidor y agente zabbix. • Si al ejecutar los scrips de inicio del servidor y el agente nos muestra algún error podemos verificar los logs que están ubicados en el directorio /tmp/zabbix_server.log y /tmp/zabbix_agentd.log Reiniciamos nuestro apache. • Bueno ahora lo que vamos hacer es configurar la seguridad de nuestra maquina, ósea que estamos hablando de nuestro firewall, esto en este caso lo haremos gráficamente porque si lo hacemos por comandos nos desviariaríamos del tema y te confundirías un poco, es solo para que el firewall nos permita las capturas snmp. NOTA: Estamos en una práctica de laboratorio así que por buena comodidad es mejor configurar bien los métodos de seguridad en vez de desahablitarlo. Escribiendo el comando system-config-firewall, nos abrirá una consola grafica fácil de manejar para la configuración rápida del firewall. • Nuestro paso a seguir es ya después de estar en la consola grafica de administración del firewall, daremos click en el botón disable para desactivar el firewall y poder así realizar nuestros cambios. • Luego en aplicar nos debe salir esta notificación que dice que si queremos continuar para así modificar la forma de nuestro firewall, le damos click en yes para continuar. • Ahora como el selinux en algunos casos nos pone problema para las configuraciones que realicemos también lo apagaremos. Con la siguiente ruta y con el editor de texto que prefieras /etc/selinux/config/ buscaremos la línea SELINUX=, para desactivar nuestro selinux escribimos disabled. • Debemos comentar la función bcscale que se encuentra en el fichero que se encuentra en /var/www/html/zabbix/include/defines.inc.php, para evitar errores en el servidor apache • Reiniciamos nuestro apache y efectivamente nuestros cambios están bien. • Necesitamos instalar la plataforma de monitoreo de zabbix, para ello necesitamos abrir el navegador web y editamos la URL: http://localhost/zabbix y automáticamente nos debe de abrir el asistente de instalación de la plataforma, le damos Next> • Luego aceptamos los acuerdos de la licencia y siguiente • En el siguiente paso el asistente chequea de que todos los requisitos para la instalación se cumplan correctamente, en la siguiente imagen vemos que no todos cumplen por ello toca solucionarlo antes de pasar el siguiente paso. • Para ello vamos l archivo de configuración del PHP que se encuentra en la siguiente ruta, lo abrimos con un editor de texto en este caso será vim. • Vamos al la línea Memory_limit (limite de memoria) en donde le indicamos que va a tener un valor de 256 M • En la línea post_max_size (tamaño máximo de POST) le indicamos 32 M • En la linea upload_max_filesize (tamaño maximo de archivos de descarga) especificamos que tiene un valor de 32 M • En la línea ejecución) max_execution_time (tiempo máximo de • En la linea max_input_time (tiempo máximo de entrada) • La línea date.timezone (especifica la zona horaria) Guardamos los cambios con ESC:wq! o también ESC:X • Tambien nos falta instalar unos paquetes requridos por Zabbix, los cuales son • Después de instalar los paquetes reiniciamos el servidor WEB • Actualizamos nuestro navegador para que tome los cambios realizados de lo que faltaba, vemos que casi todo está ok, excepto el PHP MB string • Entonces para solucionar este problema lo que hacemos es buscar la versión de este paquete utilizando yum search, luego instalamos la versión correspondiente • Volvemos a actualizar la página y vemos que todo está bien, le damos Next> • Nos aparece que no tiene conexión con el mysql y nos dice fail • Por ello necesitamos reiniciar el servicio de mysql con el siguiente comando • Volvemos a el navegador web y nos muestra que el error ya a sigo corregido en OK, luego nos indica que ingresemos la configuración para la configuración de la base de datos. – Qué tipo de base de datos estamos utilizando – La ubicación de la base de datos – El puerto de la base de datos – El usuario administrador – Y el password que le asignamos Luego de agregar todos estos datos le damos click en el botón Test Connection para verificar que la configuración es correcta, si este muestra un error toca organizarlo antes de pasar a la otra fase. • Después configuramos los detalles del servidor Zabbix, – El Host indicamos la dirección del servidor o el nombre – El Port indica el número del puerto por donde va a correr el servidor Zabbix. – El Name indicamos el nombre • En la siguiente imagen nos muestra un resumen de lo que configuramos, esta pantalla solo es de información para verificar los parámetros que le asignamos, luego click en Next. • Ya para finalizar el proceso de instalación debemos descargar y guardar el archivo de configuración y la tenemos que almacenar en el directorio /var/www/html/conf/, reemplazándolo por el existente, para guardarlo le damos click en Save configuration file • Le damos en save file y luego en ok para guardarlo • Nos paramos en el lugar en donde quedo la descarga del archivo y hacemos una copia de este al directorio establecido. • Luego volvemos al navegador y le damos click en cargar la configuración Retry para • Nos carga la configuración correcta y le damos en Next • Ya hemos terminado y completado la instalación de la plataforma de Zabbix y para terminar solo le damos click en Finish • Probando a Zabbix lo que debemos hacer es abril el navegador de internet y editamos la URL: http://localhost/zabbix, automáticamente nos debe pedir el usuario y contraseña para logiarnos. • Ya después de loguearnos y entrar en la plataforma como tal, existe una opción Profile, ubicada en la parte superior derecha de la pantalla en donde podemos cambiar la configuración (Idioma, tema). Vamos a configurar la plataforma de modo que monitoree el servidor zabbix, para ello le damos click en la pestaña configuración y luego en Equipos, en esta parte podemos ver los equipos que tenemos agregados a la plataforma, hasta el momento solo vemos uno que es el servidor zabbix, el estado del servidor es No monitorizado, luego hacemos click en este mensaje y automáticamente nos aparece una venta emergente preguntando si queremos habilitarlo, solo debemos hacer click en OK y automáticamente estará habilitado el servidor para su monitoreo. • Para continuar lo que necesitamos hacer es agregar un nuevo equipo a Zabbix, en este caso agregamos el servidor que está bajo la plataforma de Centos en donde se monitoreara el servidor de correo, para ello nos ubicamos en la pestaña Configuración - Equipos y le damos click en el botón Crear equipo, ubicado en la parte superior de la ventana como lo muestra la imagen. • Debemos configurar los parámetros necesarios para que se pueda dar la conexión entre el servidor Zabbix y el agente instalado en cada uno de los equipos que se necesite monitorear. Parámetros como: – Nombre: Nombre del equipo – Grupos: grupo al cual pertenecerá el equipo – Nuevo Grupo: En caso de que desee crear un nuevo grupo – Nombre DNS: FQDN del equipo (opcional) – Dirección IP: Dirección ip del equipo – Conectado a: Esta opción debe de estar en Dirección IP – Zabbix Agent port: Puerto de comunicación del agente (10050) – Monitored by proxy: En caso de que se monitoree atreves de servidor proxy – Estado: Estado del equipo (Monitorizado) • Luego lo que debemos hacer es elegir la plantilla que vamos a utilizar para monitorear nuestro equipo, recordemos que la plantilla varía según el tipo de sistema operativo o del tipo de dispositivo que se va a monitorear. Para elegir la plantilla le damos click en el botón Añadir • Automáticamente se nos abre una ventana en la cual podemos elegir la plantilla a utilizar, le damos click en la pestaña Grupo – Templates, para que nos muestre las plantillas. • Buscamos la plantilla Linux (Template Linux), la chuleamos y le damos click en seleccionar • Después de haber agregado la plantilla lo que debemos hacer es guardarla para ya tener agregada la maquina en Centos • También debemos de agregar otro equipo a la plataforma de monitoreo, este equipo es un servidor DNS que implementa Windows Server 2008 nos ubicamos en configuración - equipos y crear equipo, repetimos el mismo proceso hasta llegar a la plantilla en donde escogemos Template Windows y para ello también debemos de configurar los parámetro necesarios para que exista una conexión con el zabbix lo que hacemos es hacer el mismo paso para agregar la plantilla. • Ya por ultimo guardamos y verificamos que toda la información que agregamos este de forma correcta.