PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ FACULTAD DE CIENCIAS E INGENIERÍA IMPLEMENTACIÓN DE UNA APLICACIÓN MOVIL PARA EL MONITOREO DE CONTENIDO Y DISPONIBILIDAD DE SERVICIOS WEB, SERVICIO FTP Y PÁGINAS WEB Tesis para optar por el Título de INGENIERO INFORMÁTICO, que presenta el bachiller: César Augusto Otoya Florián ASESOR: Ing. Corrado Pablo Guillermo Daly Scaletti Lima, febrero de 2015 RESUMEN A lo largo de los años, se ha incrementado la cantidad de caídas de servicios virtuales que funcionan vía internet por diversos motivos, desde problemas en los equipos que los soportan hasta ataques informáticos. Asimismo, se ha incrementado la necesidad de que estos servicios funcionen la mayor cantidad de tiempo posible con el fin de aminorar las pérdidas que generan la caída de los mismos. Por ello, se han implementado soluciones de monitoreo de servicios virtuales con el fin de tener conocimiento respecto al correcto funcionamiento del mismo. Estas soluciones implementadas se dan de forma manual y automatizada, siendo esta última la más eficaz. Además, se verificó que las soluciones automatizadas encontradas son, en su mayoría, soluciones que requieren ser instaladas en el mismo servidor donde se encuentra alojado el servicio virtual; o son soluciones que envían alertas a un correo u otra vía de comunicación; sin embargo, no se han encontrado soluciones móviles que permitan notificar el comportamiento anómalo de servicios al administrador de los mismos. Ante esto, en el presente proyecto de tesis se propone una solución automatizada que permita el monitoreo de los servicios web en formato JSON, servicios ftp y páginas web; que permita alertar al usuario a un dispositivo móvil, con el fin de disminuir el tiempo en el que el usuario - administrador del servicio - tarde en enterarse del comportamiento errado del mismo. Esta solución contará con dos aplicaciones, una aplicación de servidor que realiza el monitoreo y envía información y alertas a una aplicación móvil; y la aplicación móvil, desarrollada para plataforma iOS, que permite visualizar el comportamiento del servicio virtual durante el periodo monitoreado y que, además, alerta al usuario en caso el servicio virtual no trabaje correctamente. Índice de contenido CAPÍTULO 1 _______________________________________________ 1 1.1 PROBLEMÁTICA __________________________________________________________ 1 1.1.1 OBJETIVO GENERAL _____________________________________________________ 3 1.1.2 OBJETIVOS ESPECÍFICOS __________________________________________________ 4 1.1.3 RESULTADOS ESPERADOS _________________________________________________ 4 1.2 HERRAMIENTAS, MÉTODOS, METODOLOGÍAS Y PROCEDIMIENTOS _____________________ 5 A CONTINUACIÓN SE DESCRIBIRÁ LAS HERRAMIENTAS QUE SERÁN UTILIZADAS PARA CADA RESULTADO _________________________________________________________________ 5 1.2.1 HERRAMIENTAS ________________________________________________________ 6 1.2.2 MÉTODOS Y PROCEDIMIENTOS ____________________________________________ 8 1.2.2.1 METODOLOGÍAS ______________________________________________________ 8 1.3 ALCANCE _______________________________________________________________ 8 1.3.1 LIMITACIONES _________________________________________________________ 9 1.3.2 RIESGOS DEL PROYECTO _________________________________________________ 9 1.4 JUSTIFICATIVA Y VIABILIDAD DEL PROYECTO____________________________________ 10 1.4.1 JUSTIFICATIVA ________________________________________________________ 10 1.4.2 VIABILIDAD __________________________________________________________ 10 1.4.2.1 VIABILIDAD TÉCNICA __________________________________________________ 10 1.4.2.1.1 APLICACIÓN WEB __________________________________________________ 10 1.4.2.1.2 APLICACIÓN MÓVIL _________________________________________________ 11 1.4.2.2 VIABILIDAD ECONÓMICA _______________________________________________ 11 1.4.2.3 VIABILIDAD TEMPORAL ________________________________________________ 11 1.4.2.4 ANÁLISIS DE NECESIDADES ____________________________________________ 11 CAPÍTULO 2 ______________________________________________ 12 2.1 MARCO TEÓRICO ________________________________________________________ 12 2.1.1 OBJETIVO DEL MARCO CONCEPTUAL _______________________________________ 12 2.1.2 CONCEPTOS PREVIOS ___________________________________________________ 12 2.1.2.1 SERVICIO ___________________________________________________________ 12 2.1.2.2 MODELO DE CAPAS OSI _______________________________________________ 12 2.1.2.3 PROTOCOLO DE CONTROL DE TRANSMISIÓN (TCP) ________________________ 13 2.1.2.4 DOMAIN NAME SYSTEM (DNS) _________________________________________ 14 2.1.3 CUARTOS DE SERVIDORES _______________________________________________ 14 2.1.4 PROBLEMAS DE SERVIDORES – SOFTWARE __________________________________ 15 2.1.4.1 ATAQUES MALINTENCIONADOS _________________________________________ 15 2.1.4.1.1 ATAQUE DOS ______________________________________________________ 15 2.1.4.1.1.1 ATAQUE DDOS ___________________________________________________ 15 2.1.4.1.1.2 ATAQUE LDOS ___________________________________________________ 15 2.1.4.1.1.3 ATAQUE SYN FLOOD ______________________________________________ 16 2.1.4.1.1.4 SLOW LORIS _____________________________________________________ 16 2.1.4.1.2 WEB DEFACEMENT _________________________________________________ 16 2.1.4.2 PROBLEMAS DE CONFIGURACIÓN _______________________________________ 17 2.1.4.3 BUGS EN LOS SISTEMAS _______________________________________________ 17 2.1.5 PROBLEMAS DE SERVIDORES - HARDWARE __________________________________ 17 2.1.5.1 TEMPERATURA ______________________________________________________ 17 2.1.5.2 HUMEDAD __________________________________________________________ 18 2.1.5.3 CONDENSACIÓN _____________________________________________________ 18 2.1.5.4 DESCARGAS ELECTROSTÁTICAS ________________________________________ 18 2.1.5.5 FUGAS DE AGUA _____________________________________________________ 18 2.1.5.6 ERROR HUMANO _____________________________________________________ 18 2.1.5.7 VIBRACIÓN _________________________________________________________ 19 2.1.5.8 CORTES DE ENERGÍA _________________________________________________ 19 2.1.6 CONCLUSIÓN _________________________________________________________ 19 2.2 ESTADO DEL ARTE ________________________________________________________ 20 2.2.1 INTRODUCCIÓN ________________________________________________________ 20 2.2.2 OBJETIVOS DE LA REVISIÓN DEL ESTADO DEL ARTE ___________________________ 20 2.2.3 MÉTODO USADO EN LA REVISIÓN DEL ESTADO DEL ARTE _______________________ 20 2.2.4 APLICACIONES DE ESCRITORIO Y WEB _____________________________________ 20 2.2.4.1 PRTG NETWORK MONITOR (PAESSLER, 2014)____________________________ 20 2.2.4.2 SITE 24X7 (ZOHO CORP, 2014) _______________________________________ 21 2.2.5 APLICACIONES MÓVILES ________________________________________________ 21 2.2.5.1 FING (GOOGLE PLAY, 2014) ___________________________________________ 21 2.2.5.2 SERVER MONITOR: WEBSITE STATUS (GOOGLE PLAY, 2014) ________________ 22 2.2.5.3 MONYT - SERVER MONITOR (GOOGLE PLAY, 2014) ________________________ 23 2.2.5.4 PAGE MONITOR (GOOGLE PLAY, 2014) __________________________________ 23 2.2.6 CUADRO COMPARATIVO DE LOS PRODUCTOS DE SOLUCIÓN DEL PROBLEMA ________ 24 2.3 CONCLUSIONES SOBRE EL ESTADO DEL ARTE ___________________________________ 25 CAPÍTULO 3 ______________________________________________ 27 3.1 ANÁLISIS DE LA APLICACIÓN ________________________________________________ 27 3.1.1 INTRODUCCIÓN ________________________________________________________ 27 3.1.2 FUNCIONALIDADES_____________________________________________________ 27 3.2 ESTRUCTURA DE LA APLICACIÓN WEB _________________________________________ 27 3.2.1 DIAGRAMA DE RELACIONES______________________________________________ 28 3.3 FUNCIONALIDADES _______________________________________________________ 29 3.3.1 CREACIÓN, MODIFICACIÓN Y ELIMINACIÓN DE SERVICIOS WEB, PÁGINAS WEB Y SERVICIOS FTP ______________________________________________________________ 29 3.3.2 VERIFICACIÓN DE LOS SERVICIOS _________________________________________ 30 3.3.3 PROCEDIMIENTOS DE VERIFICACIÓN _______________________________________ 30 3.3.3.1 VERIFICACIÓN DE DISPONIBILIDAD ______________________________________ 31 3.3.3.2 VERIFICACIÓN DE CONTENIDO __________________________________________ 31 3.3.3.2.1 PÁGINAS WEB _____________________________________________________ 31 3.3.3.2.2 SERVICIO WEB _____________________________________________________ 32 3.3.3.2.3 SERVICIO FTP _____________________________________________________ 33 3.4 PRUEBAS ______________________________________________________________ 33 3.4.1 PRUEBAS DE REGISTRO DE INFORMACIÓN ___________________________________ 34 3.4.2 PRUEBAS DE MONITOREO DE SERVICIO _____________________________________ 35 3.4.2.1 PROCESO DE BÚSQUEDA DE SERVICIOS A MONITOREAR _____________________ 35 3.4.2.2 PROCESO DE MONITOREO DE SERVICIOS _________________________________ 35 3.4.2.2.1 VERIFICACIÓN DE DISPONIBILIDAD _____________________________________ 35 3.4.2.2.2 VERIFICACIÓN DEL CONTENIDO _______________________________________ 35 3.4.2.3 PROCESO DE ENVÍO DE NOTIFICACIÓN ___________________________________ 38 3.4.3 PRUEBAS DE CONFIGURACIÓN ____________________________________________ 38 CAPÍTULO 4 ______________________________________________ 39 4.1 ANÁLISIS DE LA APLICACIÓN ________________________________________________ 39 4.1.1 INTRODUCCIÓN ________________________________________________________ 39 4.1.2 FUNCIONALIDADES_____________________________________________________ 39 4.2 CLASES DE ALMACENAMIENTO DEL SERVICIO ___________________________________ 40 4.3 DISEÑO DE LA APLICACIÓN _________________________________________________ 42 4.3.1 INTRODUCCIÓN ________________________________________________________ 42 4.3.2 ARQUITECTURA DE LA APLICACIÓN ________________________________________ 43 4.3.3 ESTRUCTURA DE LA APLICACIÓN __________________________________________ 43 4.3.3.1 ESPECIFICACIONES GENERALES ________________________________________ 43 4.3.3.2 PESTAÑA “SERVICIOS” ________________________________________________ 44 4.3.3.2.1 BOTÓN AÑADIR (+) _________________________________________________ 45 4.3.3.2.2 BOTÓN EDITAR ____________________________________________________ 47 4.3.3.2.3 FUNCIONALIDAD “ELIMINAR” __________________________________________ 47 4.3.3.2.4 FUNCIONALIDAD “EDITAR” ____________________________________________ 47 4.3.3.2.4.1 SECCIÓN GENERAL _______________________________________________ 48 4.3.3.2.4.2 SECCIÓN ACCESO ________________________________________________ 51 4.3.3.3 PESTAÑA “ESTADÍSTICAS” _____________________________________________ 52 4.3.3.3.1 SECCIÓN IP _______________________________________________________ 53 4.3.3.3.2 SECCIÓN “INFORMACIÓN” ____________________________________________ 54 4.3.3.3.3 SECCIÓN “CONTENIDO” ______________________________________________ 56 4.3.3.4 PESTAÑA “CONFIGURACIÓN” ___________________________________________ 56 4.3.3.4.1 SECCIÓN “OPCIONES GENERALES” ____________________________________ 58 4.3.3.4.1.1 ALERTAS ________________________________________________________ 58 4.3.3.4.2 CONEXIÓN CON EL SERVIDOR _________________________________________ 58 4.3.3.4.3 SECCIÓN “ACERCA DE” ______________________________________________ 58 4.4 PRUEBAS DE LA APLICACIÓN ________________________________________________ 58 4.4.1 INTRODUCCIÓN ________________________________________________________ 58 4.4.2 PLAN DE PRUEBAS _____________________________________________________ 59 CAPÍTULO 5 ______________________________________________ 61 5.1 OBSERVACIONES _________________________________________________________ 61 5.2 CONCLUSIONES _________________________________________________________ 62 5.3 RECOMENDACIONES ______________________________________________________ 63 REFERENCIAS BIBLIOGRÁFICAS _________________________ 64 Índice de Figuras Figura 1.1-1 Gráfico de estadísticas de caída del servidor durante el 2013 Fuente: imagen encontrada de Arbor Networks inc, 2014 ...................................... 2 Figura 1.1-2 Gráfico de tiempo de detección de un Web Defacement según el número de entradas Fuente: imagen encontrada de Bartolli, Davanzo & Medvet, 2009 ................................................................................................................................. 3 Figura 2.1-1Modelo de capas OSI Fuente: imagen encontrada de PARDUE, 1981 ............................................................................................................................... 13 Figura 2.1-2Proceso de inicio de conexión TCP Fuente: elaboración propia basada en Postel, 1981 .............................................................................................. 14 Figura 2.1-3Sensores dentro del cuarto de servidores Fuente: imagen tomada de la página web de SERVERCHECK el 10 de abril de 2014 ................................... 19 Figura 2.2-1Aplicación Fing Fuente: imagen tomada de la página web de Google Play el 13 de abril de 2014 ......................................................................................... 22 Figura 2.2-2Aplicación Server Monitor: Website status Fuente: imagen tomada de la página web de Google Play el 13 de abril de 2014 ...................................... 22 Figura 2.2-3Monyt - Server Monitor Fuente: imagen tomada de la página web de Google Play el 13 de abril de 2014 ........................................................................... 23 Figura 2.2-4Page Monitor Fuente: imagen tomada de la página web de Google Play el 14 de abril de 2014 ......................................................................................... 24 Figura 3.2-1Estructura de la aplicación de servidor ............................................... 28 Figura 3.2-2Diagrama de Relaciones del Servicio ................................................. 28 Figura 3.3-1Estructura de Monitoreo ........................................................................ 31 Figura 3.3-2Ejemplo de verificación de una página web....................................... 32 Figura 3.3-3Ejemplo de almacenamiento de la estructura de un servicio web . 33 Figura 4.3-1Estructura de Capas Fuente: Autoría Propia ..................................... 43 Figura 4.3-2Pestañas de la aplicación Fuente: Autoría Propia ............................ 44 Figura 4.3-3 Sección superior de la aplicación Fuente: Autoría Propia .............. 45 Figura 4.3-4Cabecera de la vista añadir Fuente: Autoría propia ......................... 46 Figura 4.3-5Seleccionar Tipo de Servicio Fuente: Autoría propia ...................... 46 Figura 4.3-6Botón Eliminar Fuente: Autoría Propia ............................................... 47 Figura 4.3-7Cabecera de la vista Editar Fuente: Autoría propia .......................... 48 Figura 4.3-8Secciones de la vista Editar Fuente: Autoría Propia ........................ 48 Figura 4.3-9Pestañas de la aplicación Fuente: Autoría Propia ............................ 52 Figura 4.3-10Cabecera de la pestaña "Estadísticas" ............................................ 52 Figura 4.3-11Tabla de Servicios Agrupados Fuente: Autoría Propia .................. 52 Figura 4.3-12Cabecera de la vista “Ip’s” Fuente: Autoría Propia......................... 53 Figura 4.3-13Celda de la lista IP's ............................................................................ 53 Figura 4.3-14Cabecera de la sección "Información" .............................................. 54 Figura 4.3-15Linea de Tiempo Librería: JBChartView – Jawbone ...................... 55 Figura 4.3-16Porcentaje de Similitud por Monitoreo .............................................. 55 Figura 4.3-17Pestañas de la aplicación Fuente: Autoría Propia .......................... 56 Figura 4.3-18Cabecera de la vista de Opciones Fuente: Autoría Propia ........... 57 Figura 4.3-19Sección de Configuraciones Generales Fuente: Autoría Propia .. 57 Figura 4.3-20Sección de Otros Fuente: Autoría Propia ........................................ 57 Índice de Tablas Tabla 1Herramientas por resultado ............................................................................ 6 Tabla 2Riesgos del Proyecto ....................................................................................... 9 Tabla 3Tabla comparativa de los posibles productos de solución al problema 25 Tabla 4Funcionalidades para el Ingreso de Servicios ........................................... 39 Tabla 5Funcionalidades para notificar el acceso ................................................... 40 Tabla 6Funcionalidades para el monitoreo de servicios ....................................... 40 Tabla 7Íconos de Servicios ........................................................................................ 45 Tabla 8Botones de "Añadir Servicio" ........................................................................ 46 Tabla 9Elementos de edición ..................................................................................... 47 Tabla 10Elementos de la sección general ............................................................... 50 Tabla 11Elementos de "Pägina Web" ...................................................................... 50 Tabla 12Elementos de Servicio Web ....................................................................... 50 Tabla 13Elementos de Servicio FTP ........................................................................ 51 Tabla 14Elementos de la sección acceso ............................................................... 51 Tabla 15Íconos de estados de IP's ........................................................................... 54 Tabla 16Íconos de la sección Contenido ................................................................. 56 Tabla 17Alertas Generales ......................................................................................... 58 Tabla 18Plan de Pruebas por Funcionalidad I ........................................................ 59 Tabla 19Plan de Pruebas por Funcionalidad III ...................................................... 59 Tabla 20Plan de Pruebas por Funcionalidad IV ..................................................... 60 Tabla 21Plan de Pruebas por Funcionalidad V ...................................................... 60 1 CAPÍTULO 1 1.1 Problemática Los servicios web son una herramienta que permite la interoperabilidad entre máquinas de una misma red o a través de internet, y juegan un papel importante en las empresas debido a que permiten brindar valor a los clientes entregando información o permitiendo entregarla hacia los administradores de los mencionados servicios web (Hugo Haas & Allen Brown, 2004; The Cabinet Officer, 2011). La importancia de los servicios web se debe principalmente al crecimiento de internet y al extenso desarrollo de los sitios web diseñados para el uso de diferentes categorías de usuarios (Martinello, Kaâniche, & Kanoun, 2005). Esto se puede observar desde la facilidad de crear un medio de comunicación, como la creación de un blog, hasta la facilidad de transmitir información sin necesidad de que el receptor esté cerca al emisor, mediante e-mail o servicios de mensajería instantánea. Es por ello, que la interrupción o cortes de servicios web son perjudiciales tanto para los usuarios que brindan el servicio como para los usuarios que consumen el servicio. En la actualidad, se ha incrementado la demanda de disponibilidad y confiabilidad de los servicios web 24x7, por lo que representa un desafío para los administradores debido a la amplia escala de los servicios web y por la naturaleza distribuida y heterogénea de la infraestructura que los soporta (Martinello et al., 2005). Por ello, se debe monitorear constantemente la infraestructura de TI (Tecnologías de Información). Sin embargo, el procedimiento de monitoreo de servidores y servicios puede ser tedioso y peligroso (Zhang & Zhang, 2010) El reporte de Arbor Network acerca de la seguridad de infraestructura del mundo, publicado en el 2014, muestra que gran cantidad de las empresas han sufrido interrupciones en sus servicios web por diversos motivos, gran parte de estos son ciberataques (esto se puede apreciar en la Figura 1.1-1 Gráfico de estadísticas de caída del servidor durante el 2013 Fuente: imagen encontrada de Arbor Networks inc, 2014). Además, todos los tipos de ataques informáticos se han incrementado. Symantec, en el 2013, ha bloqueado más de 5500 millones de ataques dañinos, con un incremento del 81% respecto al año anterior (Wegener, 2013). Es por ello que las compañías y organizaciones actualmente en el mundo requieren que sus servicios virtuales sean monitoreados para detectar con mayor rapidez cualquier caída o alteración que estos puedan sufrir (Papazoglou, 2005). 2 Uno de los métodos de alteración total o parcial de servicios web es el ataque denominado “Web Defacement”. Un estudio de tiempo de reacción demuestra que de 60 mil sitios que sufrieron este ataque, el 40% demoró más de una semana en darse cuenta y arreglar el problema y más del 37% demoró más de dos semanas (Bartoli, Davanzo, & Medvet, 2009). Además, este problema aumenta si es que el servicio web está alojado en varios servidores, como se puede observar en la Figura 1.1-2 Gráfico de tiempo de detección de un Web Defacement según el número de entradas Fuente: imagen encontrada de Bartolli, Davanzo & Medvet, 2009 que muestra el tiempo(en horas) que los encargados de páginas web se demoraron en detectar el “web defacement” dependiendo del número de servidores que aloja la página web (Bartoli et al., 2009). Esto ocurre porque existe una dificultad para detectar este ataque debido a que es sigiloso y suele no causar alarmas en los sistemas de monitoreo (Davanzo, Medvet, & Bartoli, 2011). Por ello, el monitorear este problema puede volverse tedioso y, además, debe ser manejado con cautela para no causar falsas alarmas. Figura 1.1-1 Gráfico de estadísticas de caída del servidor durante el 2013 Fuente: imagen encontrada de Arbor Networks inc, 2014 Se realizaron búsquedas de aplicaciones que se encarguen del monitoreo de servicios web, sin embargo, la mayoría de las soluciones encontradas fueron aplicaciones de escritorio que envían mensajes en caso encuentren alguna irregularidad. Uno de los problemas encontrados es que en el caso de que el servidor pierda conectividad con internet, el mensaje no podría ser entregado al administrador del servicio o del servidor. Adicionalmente, se encontraron empresas encargadas de monitorear los servicios web desde sus diferentes servidores, sin embargo, estos servicios eran costosos. 3 Figura 1.1-2 Gráfico de tiempo de detección de un Web Defacement según el número de entradas Fuente: imagen encontrada de Bartolli, Davanzo & Medvet, 2009 Adicionalmente, se realizaron búsquedas de soluciones móviles que permitan monitorear servicios a través de internet. Sin embargo, estas aplicaciones cuentan con funcionalidades puntuales, ya que solo permiten monitorear la disponibilidad o el contenido mas no los dos a la vez, y solo se limitan al monitoreo de servicios y protocolos ya conocidos, como son el SMTP, HTTP, HTTPS, FTP, TELNET, SSH, POP, entre otros; gran parte de estos solo permiten ser instalados en plataformas Android. Para realizar la búsqueda se utilizaron diferentes filtros de búsqueda; estos se describen en la sección estado del arte. También, existen aplicaciones que permiten monitorear servicios creados por los usuarios. Sin embargo, estas aplicaciones funcionan con algún aplicativo instalado en el propio servidor, lo que ocasiona que se deba manipular el servidor para que estas aplicaciones funcionen. Esto no permite que dichas aplicaciones puedan ser utilizadas de forma inmediata a la instalación en el dispositivo móvil. Por este motivo, el presente proyecto propone una solución para el monitoreo de la disponibilidad y contenido de los servicios web en formato JSON, páginas web y servicios FTP, con la finalidad de evitar que los encargados de los servicios se den cuenta de forma tardía que los servicios están fallando, que la tarea de monitoreo sea sencilla y que no se torne trabajosa ni tediosa; dado que no existen herramientas móviles que permitan el monitoreo de tanto disponibilidad como contenido de estos servicios y que, además, brinde información de dónde podría estar la posible falla. 1.1.1 Objetivo general Desarrollar una aplicación móvil que permita monitorear la disponibilidad y el contenido de servicios web. 4 1.1.2 Objetivos específicos 1. Desarrollar una aplicación web que permita el registro y monitoreo de los servicios web, páginas web y servicios FTP y le brinde la información de los servicios monitoreados a la aplicación móvil. 2. Desarrollar una aplicación móvil que reciba los datos de la aplicación web, los muestre y alerte al usuario en el caso de que algún servicio monitoreado cuente con un comportamiento anómalo. 3. Desarrollar un procedimiento que permita verificar la disponibilidad y el contenido de los servicios web, páginas web y servicios FTP de forma periódica. 4. Desarrollar servicios web, páginas web y servicios FTP que permitan ser usados para probar la aplicación. 1.1.3 Resultados esperados Resultado 1 para el Objetivo 1: Base de Datos de la aplicación web. Resultado 2 para el Objetivo 1: Módulo de la aplicación web que permita registrar servicios web asociado un dispositivo móvil para ser monitoreados y enviar información acerca del servicio y del monitoreo del mismo a la aplicación móvil. Resultado 3 para el Objetivo 1: Módulo de la aplicación web que permita enviar notificaciones al dispositivo móvil en el caso de que el servicio monitoreado asociado a ese dispositivo móvil tenga un comportamiento anormal. Resultado 1 para el Objetivo 2: Módulo de la aplicación móvil que permita visualizar, agregar, modificar y eliminar servicios para que sean monitoreados. Resultado 2 para el Objetivo 2: Módulo de la aplicación móvil que permita observar el monitoreo de los servicios configurados. Resultado 3 para el Objetivo 2: Módulo de la aplicación móvil que permita alertar al usuario en caso la aplicación web envíe una notificación. Resultado 1 para el Objetivo 3: Procedimiento que permita verificar que el contenido de servicios FTP o FTPS sea el correcto. Resultado 2 para el Objetivo 3: Procedimiento que permita verificar que el contenido de páginas web en protocolo HTTP o HTTPS sea el correcto. Resultado 3 para el Objetivo 3: Procedimiento que permita verificar que el contenido de servicios web en formato JSON sea el correcto. Resultado 4 para el Objetivo 3: Procedimiento que permita verificar la disponibilidad de servicios web, páginas web y servicio FTP. Resultado 1 para el Objetivo 4: Servicios Web, Páginas Web y Servicios FTP que permitan probar la aplicación. 5 1.2 Herramientas, métodos, metodologías y procedimientos A continuación se describirá las herramientas que serán utilizadas para cada resultado Resultado 1 para el Objetivo 1: Base de Datos de la aplicación web. SQL Server 2014 Resultado 2 para el Objetivo 1: Módulo de la aplicación web que permita registrar servicios web para ser monitoreados asociado un dispositivo móvil y enviar información acerca del servicio y del monitoreo del mismo a la aplicación móvil. Visual Studio 2013 Entity Framework Resultado 3 para el Objetivo 1: Módulo de la aplicación web que permita enviar notificaciones al dispositivo móvil que cuente con la aplicación móvil instalada en el caso de que el servicio monitoreado asociado a ese dispositivo móvil tenga un comportamiento anómalo. Visual Studio 2013 Entity Framework Push Sharp Resultado 1 para el Objetivo 2: Módulo de la aplicación móvil que permita agregar servicio para que sean monitoreados. XCode: Es un IDE creado por Apple para la creación de aplicaciones en iOS. AF Networking Comunication: Es una librería que permite obtener requerimientos usando HTTP y HTTPS. Permite evaluar la confianza del servidor contra “pinned X.509 certificates”. Resultado 2 para el Objetivo 2: Módulo de la aplicación móvil que permita observar el monitoreo de los servicios configurados. XCode. AF Networking Comunication. Resultado 3 para el Objetivo 2: Módulo de la aplicación móvil que permita alertar al usuario en caso la aplicación web encuentre un funcionamiento anómalo de los servicios que el usuario configuró para que sean monitoreados. XCode. AF Networking Comunication. Push Notification Center: Es el centro de notificaciones del sistema operativo iOS. 6 Resultado 1 para el Objetivo 3: Procedimiento que permita verificar que el contenido de servicios FTP o FTPS sea el correcto. Visual Studio 2013 Entity Framework Resultado 2 para el Objetivo 3: Procedimiento que permita verificar que el contenido de páginas web en protocolo HTTP o HTTPS sea el correcto. Visual Studio 2013 Entity Framework Resultado 3 para el Objetivo 3: Procedimiento que permita verificar que el contenido de servicios web en formato JSON sea el correcto. Visual Studio 2013 Entity Framework Resultado 4 para el Objetivo 3: Procedimiento que permita verificar la disponibilidad de servicios web. Visual Studio 2013 Entity Framework Resultado 1 para el Objetivo 4: Servicios Web, Página Web y Servicios FTP que permitan probar la aplicación. APACHE: Es un servidor que permite publicar páginas web y servicios web. IIS: Es un servidor que permite publicar páginas web y servicios web. FILEZILLA: Es un cliente servidor que permite brindar el servicio de FTP. Tabla 1Herramientas por resultado 1.2.1 Herramientas Los resultados esperados que se han planteado son aplicaciones que alimentan a otras aplicaciones para lograr el resultado general; estas aplicaciones se harán utilizando las siguientes herramientas: Sql Server 2014: SQL Server 2014 Standard Edition proporciona la administración básica de bases de datos y base de datos de Business Intelligence para que los departamentos y pequeñas organizaciones ejecuten sus aplicaciones, y admite las herramientas de desarrollo comunes, tanto locales como en la nube, que habilitan la administración eficaz de bases de datos con recursos mínimos de TI. (Microsoft, 2015) Visual Studio 2013: Visual Studio es un conjunto de herramientas de desarrollo basadas en componentes y otras tecnologías para compilar aplicaciones eficaces de alto rendimiento. Además, Visual Studio está optimizado para el diseño, el desarrollo y la implementación de soluciones empresariales. (Microsoft, 2015) 7 Entity Framework: Entity Framework permite a los desarrolladores trabajar con datos en forma de objetos y propiedades específicas del dominio, como clientes y direcciones de cliente, sin tener que preocuparse por las tablas y columnas de la base de datos subyacente donde se almacenan estos datos. (Microsoft, 2015) Push Sharp: Es una librería que permite la creación de Push Notification a varias plataformas incluidas iOS, Android, Blackberry, entre otros. (PushSharp, 2015) Push Notification Center: Es un centro de alertas provisto por iOS para acceder a todas las notificaciones del dispositivo. (Apple inc., 2015) XCode 5: Herramienta creada por Apple para el desarrollo de aplicaciones para sus sistemas operativos. A continuación, se describirán algunas características de esta herramienta(Apple inc., 2014). 1. Editor Asistido: Permite mostrar de manera automática archivos que XCode determina que permiten ayudar en la programación que se realiza. 2. Creador de Interfaces: Permite crear el lienzo o diseño de la aplicación de forma sencilla y amigable. Permite la creación de la comunicación entre interfaces, con los sliders, botones y capas respectivas. Permite unir la interface con el código creado en XCode. 3. Versionador: Permite la comparación de las versiones del código creado. 4. Aplicación de Testeo. AF Networking Comunication: Es una librería para iOS construida en lo más alto de la “Fundación de Cargas de Sistemas URL”, extendiendo un poderoso alto nivel de abstracción de redes. Esta librería posee una estructura modular que permite su fácil uso. Permite realizar “request” a los protocolos HTTP y HTTPs enviando parámetros de consulta a algún servicio que utilice estos protocolos (Scott & Thompson, 2014). Para las pruebas se usarán los siguientes servicios web: APACHE: Es un servidor que permite publicar páginas web y servicios web. Las plataformas que se evaluarán y será soportadas por este servidor son HTML, PHP, JAVA y en servicios web REST (Apache, 2014). IIS: Es un servidor que permite publicar páginas web y servicios web. Las plataformas que se evaluarán y será soportadas por este servidor son HTML, ASP, JAVA y en servicios web REST (IIS, 2014). FILEZILLA: Es un cliente servidor que permite brindar el servicio de FTP (FileZilla, 2014). 8 Páginas web independientes: La página de movistar: www.facebook.com Servicios web independientes: Servicio de búsqueda de patentes (EPO): http://www.epo.org/searching/free/ops.html 1.2.2 Métodos y Procedimientos 1.2.2.1 Metodologías Para la realización del producto no se utilizará una metodología establecida, sin embargo, se utilizarán algunas herramientas que permitirán organizar y establece los lineamientos del proyecto. Las herramientas utilizadas se describirán a continuación: I. UML a. Lista de requisitos: Se usó con el fin de documentar el alcance del proyecto. b. Diagrama de Clases: Se usó con el fin de documentar y definir las estructuras del proyecto. c. Diagrama de secuencia II. Otras Herramientas a. Mockups de la aplicación: Se usó con el fin de tener la secuencia de pasos que el usuario tendrá que seguir con el fin de obtener la funcionalidad deseada. b. Diagrama de Relaciones: Se usó con el fin de organizar la construcción de la base de datos. Adicionalmente, se describieron las siguientes áreas del conocimiento de PMI: I. Gestión del Alcance: Se usó con el fin de documentar y definir el alcance del proyecto. II. Gestión del Tiempo: Se usó con el fin de planificar las fases del proyecto 1.3 Alcance El proyecto se centrará en el monitoreo de servicios web, páginas web y servicios ftp basada en una aplicación cliente servidor. La plataforma web será desarrollada en .Net y soportada por una base de datos en el motor SQL Server y permitirá el registro de servicios asociados al dispositivo móvil que lo creó, el monitoreo de los mismos, y enviar una notificación al dispositivo del usuario en caso se encuentre algún comportamiento anormal en el servicio monitoreado. 9 Asimismo, la plataforma web permitirá configurar la distribución de trabajo debido a que la verificación de los servicios se realizará mediante el uso de hilos. La plataforma móvil será desarrollada en plataforma iOS 7 o superior para iPhone 5 o superior y permitirá la interacción de la aplicación con el usuario mediante una interfaz que permitirá visualizar, registrar, modificar y eliminar servicios. Asimismo, la plataforma móvil permitirá visualizar al usuario la información del monitoreo realizada por la plataforma web y permitirá alertar al usuario en caso la plataforma web encuentre algún comportamiento anormal del servicio. 1.3.1 Limitaciones La aplicación móvil no recibirá notificaciones de los servicios registrados o información del monitoreo de los mismos si no existe una conexión a internet continua. La aplicación no permitirá el monitoreo de servicios en formato XML. La aplicación no identificará el tipo de ataque DoS que pudieran estar sufriendo los equipos que soportan el servicio. La aplicación no permitirá el monitoreo de servicios web y páginas web mediante el acceso a través de la IP del servidor en caso el servidor aloje más de un servicio. La aplicación no permitirá navegar entre las carpetas de los servicios FTP para elegir la carpeta a monitorear. 1.3.2 Riesgos del proyecto Riesgo identificado Impacto en el proyecto Medidas correctivas para mitigar Acciones tomadas No se conoce el lenguaje de programación de iOS Retraso en los entregables del proyecto Empezar el proyecto 2 meses antes al curso de Tesis 2 Se empezó el proyecto antes de iniciar el curso. No tener la licencia de desarrollador para probar la aplicación en el dispositivo móvil. Retraso en los entregables del proyecto. Confirmación previa de las licencias de la universidad. En caso no se encuentren disponibles, adquirir alguna. Se procedió a adquirir una licencia de desarrollador de Apple. Tabla 2Riesgos del Proyecto 10 1.4 Justificativa y viabilidad del proyecto 1.4.1 Justificativa El monitoreo de los servicios es necesario para conocer el estado de los servicios web, debido a que en caso estos sufran problemas, según el tiempo que el servicio se encuentre fuera de línea, la institución encargada podría tener pérdidas económicas. Por lo tanto, los administradores de servicios deben estar al tanto de los servicios durante todo el tiempo posible, por lo que, su monitoreo debe ser constante. Sin embargo, el monitoreo de servidores requiere de conocimientos técnicos, por ello, la aplicación pretende ayudar al monitoreo a personas cuyos conocimientos no van más allá de lo básico. Además, realizar un monitoreo correctamente disminuirá el tiempo que toma el saber que el servicio está fallando o ha sido modificado y el tiempo que toma encontrar el lugar de la falla o el servidor que ha sido manipulado. Con ello, el restablecimiento del servicio tomará menos tiempo y los afectados tendrán menos contratiempos. Finalmente, la importancia de hacer la aplicación para dispositivos móviles es que permitirá que el administrador del servicio pueda tener monitoreado el servidor de forma continua desde cualquier lugar donde él se encuentre. Además, permitirá el monitoreo de servicios web cuyos servidores no se encuentren disponibles para su verificación, por ejemplo, para servicios web alojados en soluciones Cloud que puedan ser accedidos mediante una dirección URL. Esto permitirá que, en caso el servicio que administre falle, tome medidas pertinentes para disminuir el impacto que la caída o adulteración del servicio pueda ocasionar. 1.4.2 Viabilidad 1.4.2.1 Viabilidad técnica 1.4.2.1.1 Aplicación Web La aplicación Web será desarrollada en Visual Studio 2013 usando el lenguaje de programación C# y utilizando la base de datos SQL Server, debido a la buena integración entre ambas herramientas fabricadas por Microsoft mediante el uso de la herramienta Entity Framework. La aplicación será desarrollada bajo el esquema web y su comunicación con la aplicación móvil se dará a través de servicios web del tipo JSON. Asimismo, el monitoreo de servicio se dará a través de un conjunto de hilos destinados a realizar actividades específicas. Los manuales y tutoriales de cada una de las 11 herramientas utilizadas para desarrollar la aplicación móvil se encuentra en la página web de Microsoft. 1.4.2.1.2 Aplicación Móvil La aplicación móvil será desarrollado para iOS 7 en adelante, con el lenguaje de programación Objective-C. Este lenguaje permite realizar las funciones y algoritmos necesarios para el desarrollo del proyecto. Esto implica que permitirá la comunicación con la aplicación web mediante el consumo de los servicios web que la aplicación web proporciona. Asimismo, se utilizará la herramienta Notification Center del sistema operativo iOS con el fin de poder activar las alertas que la aplicación web enviará cuando encuentre alguna anomalía en los servicios monitoreados. La documentación de estas herramientas se encuentra en la página web de Apple en inglés. 1.4.2.2 Viabilidad económica El proyecto necesitará de la compra de licencias de desarrollo para iOS cuyo costo son de 100 dólares. Asimismo, las licencias de Microsoft son proporcionadas de forma gratuita por la universidad mediante el servicio Dreamspark. 1.4.2.3 Viabilidad temporal El proyecto será desarrollado con un modelo iterativo, que permitirá el avance de los hitos de forma paulatina de tal manera que durante el desarrollo se puedan realizar modificaciones al alcance de ser necesario y, también, permitirá la entrega de avances medibles en cada exposición del curso de Tesis 2. 1.4.2.4 Análisis de necesidades El proyecto deberá ser desarrollado en una MAC y deberá ser probado en un iPhone 5 o superior. La computadora MAC y el iPhone estarán disponibles durante el proyecto. Se usarán las computadoras de los laboratorios del pabellón V de la PUCP. Asimismo, se necesitará un servidor que tenga instalado el servidor IIS con el fin de poder colocar el servidor de la aplicación web. Se utilizará una laptop para instalar el servidor IIS. 12 CAPÍTULO 2 2.1 Marco teórico 2.1.1 Objetivo del marco conceptual El objetivo del presente marco conceptual es dar a conocer algunos conceptos básicos de problemas que podrían ocasionar fallas en los servicios. Estos conceptos rondarán en base a los problemas que se pueden dar tanto a nivel de software como a nivel de hardware. 2.1.2 Conceptos Previos En este apartado se darán a conocer algunos conceptos básicos que permitirá comprender mejor los apartados siguientes. Estos conceptos están enfocados en la comunicación entre varios nodos en la red, su estructura y algunos protocolos utilizados. 2.1.2.1 Servicio Según ITIL V3, un servicio es un medio de entregar valor a los clientes facilitando los resultados que los clientes desean lograr sin que la empresa incurra en costos específicos y riesgos (The Cabinet Officer, 2011). Un Servicio de TI es un servicio provisto por un proveedor de servicios de IT. Este tipo de servicio es realizado de la combinación de las tecnologías de información, gente y procesos (The Cabinet Officer, 2011). Un Servicio Web es un sistema diseñado para soportar la interoperabilidad entre máquinas a través de una red. Esta tiene un interface descrita en un formato que puede ser procesado por una máquina (Hugo Haas & Allen Brown, 2004). 2.1.2.2 Modelo de capas OSI Open System Interconnection (OSI) fue desarrollada en 1979 para ayudar en el esfuerzo de estandarización de comunicación de los datos; es un framework arquitectónico extremadamente útil para desarrollar comunicación de datos de forma estándar (PARDUE, 1987). En la Figura 2.1-1 se muestra cómo está estructurado el modelo OSI con las 7 capas que posee. 13 Figura 2.1-1Modelo de capas OSI Fuente: imagen encontrada de PARDUE, 1981 2.1.2.3 Protocolo de Control de Transmisión (TCP) Es un método estandarizado en la industria de interconexión de nodos, redes y el internet. Es el motor detrás de la Internet y de las redes del mundo. El objetivo de este protocolo es construir una conexión limpia y segura entre las redes (Britt & Matthews, 2006). Este protocolo es usado por la mayoría de servicios debido a que brinda seguridad e integridad en la información. Dentro de las diversas aplicaciones que tiene este protocolo se encuentran los protocolos y aplicaciones que se describirán a continuación: a) HTTP: Protocolo que permite la descarga e interacción con páginas web en formato HTML. Posee una versión más segura llamada HTTPS (Britt & Matthews, 2006). b) FTP: Protocolo que provee la habilidad de transferir archivos entre equipos remotos (Britt & Matthews, 2006). c) SMTP: Provee el sistema de correo electrónico ya que permite el intercambio de mensajes entre equipos remotos (Britt & Matthews, 2006). d) Servicios Web: Es una aplicación del protocolo HTTP, ya que la máquina cliente envía una sentencia de solicitud; esta sentencia se analiza en el servidor del servicio web y luego, el resultado es devuelto al cliente para que pueda ser utilizado por el navegador o la aplicación que solicita el servicio (Britt & Matthews, 2006). Además, con este protocolo funcionan gran parte de las aplicaciones que se conocen, por ejemplo: el correo electrónico, las páginas web, la reproducción de videos por 14 internet en plataformas del tipo “Youtube”, la descarga de archivos como instaladores, o documentos, entre otros. 2.1.2.4 Domain Name System (DNS) Es un sistema jerárquico de nomenclaturas que se encarga de asignar un nombre de dominio a ciertas computadoras para que su identificación sea de mayor facilidad. Este sistema permite que la red pueda encontrar direcciones del tipo www.midominio.com y las convierta en una dirección del tipo IP (por ejemplo IPV4: ./200.300.100.600), en otras palabras, permite que el cliente pueda resolver el dominio del servidor al que intenta acceder (Radha & Selvakumar, 2011). Es una aplicación del protocolo TCP. 2.1.3 Cuartos de Servidores Un cuarto de servidores contiene equipos que podrían permitir brindar servicios web, en la Figura 2.1-2Proceso de inicio de conexión TCP se muestra un diagrama con una red de servicios básicos diseñado por Cedeño y Robalino para el uso en un ISP; para este caso el cuarto de servidores contó con switches, routers, servidores de servicios (Radios, Web, DNS, Correo, Web Caché), repetidores, entre otros (Mendoza & López, 2008)(Alvarenga Sandoval, 2008). Sin embargo, los servicios web podrían no funcionar correctamente por diversos motivos, entre ellos se podría encontrar alguna falla en algún punto de la topología como también podría haber fallas de software o hardware. En los siguientes apartados se revisarán una serie de conceptos asociado a fallas de servicios web alojados en servidores. Figura 2.1-2Proceso de inicio de conexión TCP Fuente: elaboración propia basada en Postel, 1981 15 2.1.4 Problemas de servidores – Software Los problemas en los servicios se pueden dar por fallas en las aplicaciones o por malas configuraciones, por lo que se debe monitorear el funcionamiento de las aplicaciones constantemente. A continuación se describirán algunas circunstancias que podrían causar la caída o falla de un servicio. 2.1.4.1 Ataques Malintencionados 2.1.4.1.1 Ataque DoS “Denial of Service” (DoS por sus siglas en Ingles) es un término genérico de un tipo de ataque que puede tomar cualquier forma. Este puede ser caracterizado por un intento explícito de impedir que usuarios legítimos de un servicio usen el mismo. Existen tres tipos de ataques DoS; estos son la destrucción o alteración de la configuración de información, destrucción o alteración de los componentes de red físicos y, finalmente, el consumo de recursos escasos, limitados o no renovables (Sandström, 2001). Esta última categoría es la de mayor incidencia, por lo que a continuación se describirán los tipos más conocidos. 2.1.4.1.1.1 Ataque DDoS Un ataque “Distribute Denial of Service” (DDoS por sus siglas en Ingles), también conocido como “SMURF”, es una evolución del DoS que tiene como objetivo eliminar la conexión entre los usuarios legítimos y un servicio. Su funcionamiento se basa en un grupo de computadoras que envían flujos de paquetes al servicio, esto ocasiona que el servicio consuma recursos clave. Cuando el ataque se realiza satisfactoriamente ocasiona que los usuarios que deberían utilizar el servicio queden inhabilitados de hacerlo o que el atacante pueda ingresar al computador de la víctima pudiendo hacer daños arbitrarios (Mirkovic, Martin, & Reiher, 2004). 2.1.4.1.1.2 Ataque LDoS Un ataque “Low-Rate Denial of Service” (LDoS por sus siglas en Ingles) es un tipo de ataque DoS que intenta vulnerar los mecanismos de adaptación de redes. El caso más común es el que intenta atacar el control de congestión de TCP. El ataque funciona utilizando la forma en el que el algoritmo de control de congestión funciona, ya que este algoritmo varía el ratio de transmisión de los paquetes de transmisión según el grado de congestión del enlace con el fin de reducir la congestión del enlace. Este algoritmo permite mejorar la eficiencia de los sistemas, sin embargo, brinda una oportunidad al atacante de vulnerar el sistema. Esto se da, cuando el sistema disminuye el ratio de paquetes transmitidos debido a la congestión del enlace y el atacante envía una ráfaga 16 a gran velocidad de paquetes de corto tiempo con el fin de engañar al sistema de que el enlace de la red se encuentra ocupado. Esto ocasiona que los usuarios que necesitan usar el sistema reciban con menos velocidad los paquetes, ocasionando que el performance del sistema disminuya (Zhu, Yizhi, & Chuiyi, 2011). 2.1.4.1.1.3 Ataque SYN Flood Este ataque utiliza la forma de conexión del TCP, de tal forma que sí el cliente envía un paquete SYN, el objetivo responde pero no recibe confirmación por parte del cliente, el objetivo guardará la conexión en memoria. De este modo, el objetivo va almacenando en memoria las conexiones que se van generando hasta llegar al límite establecido y ya no pueda recibir más conexiones entrantes, haciendo que los demás usuarios no puedan acceder al servicio. Además, el cliente maligno utilizaría menos tiempo para generar la solicitud de conexión y no gastaría recursos de memoria para almacenar la conexión generada (Bo & Xueyuan, 2011; Heron, 2010; Rana, 2012). 2.1.4.1.1.4 Slow Loris Este ataque mantiene abierto las 7 capas OSI, haciendo el ataque más difícil de controlar. El ataque es similar al SYN Flood, sin embargo, se realiza en la 7ma capa, la capa de aplicaciones. En este caso, el servidor abrirá la conexión al cliente y esperará recibir una cabecera completa, sentencia que el cliente no enviará, por lo que el servidor quedará en modo de espera a que el cliente termine de enviar la sentencia. Además, seguirá enviando cabeceras falsas que permitirán que la conexión no se cierre en caso el servicio tenga un time-out para la conexión (Heron, 2010). 2.1.4.1.2 Web Defacement Un “Web Defacement” puede clasificarse en 2 ramas: la primera es la “substitutive defacement”, cuyo objetivo es reemplazar el contenido legítimo por otra página web; y la segunda es la “additive defacement”, cuyo objetivo es colocar una página web en un URL donde no debería haber nada, más común en el caso de phishing (Bartoli et al., 2009). Este tipo de ataque cambia la apariencia visual de las páginas web. Para realizar esta modificación, los atacantes suelen utilizar vulnerabilidades en los servidores para ingresar y modificar de forma parcial o total la página. (Kanti, 2011) Las modificaciones parciales pueden ser simples cambios de imágenes, modificación de texto e incluso hasta el ingreso de librerías que podrían ocasionar que los usuarios que ingresen a la página web puedan infectarse con algún código maligno que pudieran contener esas librerías. 17 2.1.4.2 Problemas de Configuración La caída de un servicio se puede dar, también, por la mala configuración que se ingresa en los equipos y se puede dar desde colocar mal el IP del servidor o/y colocar mal el DNS en el servidor hasta la inhabilitación de los puertos que redireccionan el sistema. 2.1.4.3 Bugs en los sistemas La caída de un servicio no implica que necesariamente existan problemas externos a la aplicación; en caso exista algún problema en el software, el servicio podría dejar de funcionar o funcionar de forma incorrecta. 2.1.5 Problemas de Servidores - Hardware Los problemas de los servicios pueden deberse, también, a fallas en los equipos que los soportan, por lo que estos deben ser monitoreados. NTI ha listado un grupo de características que si no se toman en cuenta podrían representar un problema para los equipos y por ende al servicio, por lo que deben estar en constante monitoreo (La Figura 2.1-3Sensores dentro del cuarto de servidores Fuente: imagen tomada de la página web de SERVERCHECK el 10 de abril de 2014 muestra una imagen de algunos sensores que se deben ubicar dentro del cuarto de servidores). Estas características son indicadores ambientales del cuarto donde los servidores se encuentran, las cuales se describirán a continuación: 2.1.5.1 Temperatura La temperatura es un factor importante para el rendimiento de los servidores, por lo que deberían estar siempre en una temperatura constante ideal entre 20 y 24 grados centígrados. La temperatura aumenta con respecto al uso del servidor, por ello, se debe monitorear que los ventiladores de los mismos no fallen, ya que en caso de que la temperatura se incremente lo suficiente el servidor se apagará para evitar daños permanentes ocasionando la caída del servicio que se encuentra alojado en el servidor. Sin embargo, al apagarse de golpe, la información que se encuentre en la memoria volátil y que no ha sido copiada al disco duro podría perderse. A su vez, si la temperatura del ambiente no se encuentra controlada el servidor podría no aprovechar la velocidad máxima de los procesadores, haciendo que los servicios tengan cierta lentitud o se cuelguen(NTI, 2006). 18 2.1.5.2 Humedad La humedad relativa del cuarto de servidores debería estar controlada entre los 40 y 50 por ciento. En caso este factor no esté controlado se podrían tener las siguientes consecuencias: 2.1.5.3 Condensación Esto ocurre cuando el índice de humedad es muy alto o cuando la temperatura cae rápidamente. Esto podría ocasionar que la condensación ocurra dentro de los equipos haciendo que los circuitos sufran corto circuito, que los equipos se oxiden, o que depósitos de sales y minerales corroan al equipo, haciendo que el aire no fluya por los mismos y que el calor se almacene en esos depósitos; la humedad también ocasiona que los circuitos se expandan y se contraigan con los cambios del índice de humedad relativa haciendo que estos se quiebren. Todo ello conlleva al corte del servicio en caso de algún problema eléctrico o a la disminución de rendimiento en caso los depósitos de sales almacenen el calor (NTI, 2006). 2.1.5.4 Descargas electrostáticas Si la humedad relativa está por debajo del porcentaje ideal podría ocasionar descargas electrostáticas. El porcentaje de humedad dentro del cuarto ayuda a neutralizar la acumulación de carga electrostática. Estas descargas podrían dañar algunos equipos dejándolos inservibles o haciendo que funcionen mal. Si esto ocurre, el servicio que se encuentra alojado en el cuarto de servidores podría dejar de funcionar (NTI, 2006). 2.1.5.5 Fugas de agua Esto podría ser un gran problema debido a que, en un cuarto de servidores, los cables y aparatos electrónicos se encuentran dispersos por el lugar y el agua podría ocasionar corto circuito en alguno de estos. Esto ocasionaría que el servicio alojado en el cuarto de servidores deje de funcionar (NTI, 2006). 2.1.5.6 Error Humano Personal y administradores del cuarto de servidores podrían equivocarse al configurar algunas máquinas como el aire acondicionado o la velocidad de algunos servidores, ocasionando que el cuarto pueda estar en condiciones no deseadas. Además, podrían colocar objetos en los ductos de ventilación ocasionando que el aire caliente no salga del cuarto, aumentando su temperatura. Esto podría ocasionar que los equipos se sobrecalienten y fallen, haciendo que los servicios alojados en el cuarto del servidor dejen de funcionar de forma correcta (NTI, 2006). 19 2.1.5.7 Vibración La vibración también podría ocasionar daños en los equipos ya que podría averiar discos duros, los cuales rotan a alta velocidad y que ante cualquier vibración podrían rayarse con la aguja lectora; y soltar circuitos y chips. Esto podría ocasionar que los servicios queden fuera de servicio o dejen de funcionar de forma correcta (NTI, 2006). 2.1.5.8 Cortes de Energía Los cortes de energía y picos eléctricos podrían causar grandes daños en equipos tecnológicos. Un simple pico eléctrico podría ocasionar que el servidor falle haciendo que, en el mejor de los casos, se tenga que reiniciar el equipo; y en el peor de los casos podría dañar el equipo de forma irreversible, dejando fuera de servicio a la aplicación alojada en el equipo (NTI, 2006). Figura 2.1-3Sensores dentro del cuarto de servidores Fuente: imagen tomada de la página web de SERVERCHECK el 10 de abril de 2014 2.1.6 Conclusión Los servicios web, y toda la infraestructura que los soporta, se han convertido en importantes herramientas para generar valor a las empresas. Sin embargo, pueden fallar. La causa de estas fallas podría deberse a problemas tanto técnicos a nivel de software y hardware, como a nivel de descuidos del día a día. Estos problemas o errores podrían ocasionar que los servicios fallen o dejen de funcionar, ocasionando que las personas que necesiten del servicio no puedan acceder y dejen de utilizarlo. 20 2.2 Estado del arte 2.2.1 Introducción Actualmente, existen herramientas que permiten el monitoreo de servicios y contribuyen a la solución planteada; estas herramientas pueden instalarse en el servidor web o pueden monitorear el servicio desde fuera de la red. Estas soluciones ofrecen servicios como el registro, monitoreo y control de incidencias de manera automatizada, además de una gran cantidad de funcionalidades extras. Estas serán descritas en el presente apartado y se dividirán en aplicaciones de escritorio y aplicaciones móviles. Finalmente, se mostrará un cuadro de características y desventajas con respecto a la solución que se desea plantear de las soluciones móviles encontradas. 2.2.2 Objetivos de la revisión del estado del arte El objetivo del estado del arte es dar a conocer algunas aplicaciones que podrían cubrir, hasta cierto punto, la problemática propuesta, sin importar la plataforma sobre la cual se deban ejecutar. Describirán las aplicaciones más completas encontradas por el autor y se comparará con la solución que se propone para evaluar las diferencias. 2.2.3 Método usado en la revisión del estado del arte El método utilizado para la revisión del estado del arte fue buscar lugares de discusión de personas con problemas de monitoreo de servidores y ver sus recomendaciones; adicionalmente, visitar páginas de las aplicaciones más completas de escritorio. Para la búsqueda de aplicaciones móviles, se utilizaron las páginas respectivas de cada sistema, Google Play y AppStore. Se utilizaron las palabras clave “Monitor”, “Server” y “Datacenter”, “Web Services”, “Available” y sus traducciones al español. Se seleccionaron las aplicaciones cuya descripción mencionaba lo que se buscaba y cuyas calificaciones eran superiores a tres estrellas. 2.2.4 Aplicaciones de Escritorio y Web En este apartado se describirán aplicaciones de escritorio que permiten el monitoreo de los servidores y de los servicios que estos alojan. 2.2.4.1 PRTG Network Monitor (Paessler, 2014) Esta aplicación es de paga, aunque cuenta con una versión gratuita, y se encarga de monitorear tanto los servicios como la infraestructura de los servidores. Permite avisar a la persona encargada de los servidores mediante correo electrónico, SMS/pager, syslog y SNMP Trap, HTTP request, event log entry, reproducir archivos de audio, 21 Amazon SNS y cualquier tecnología externa que pueda ser ejecutada por un fichero EXE o batch. Esta aplicación se debe instalar en el servidor, haciendo que se puedan activar más de 190 sensores en la versión de paga (10 en la versión gratuita), que monitorearán los servicios del servidor, redes a la cuales el servidor está conectado, ancho de banda, ambiente, SLA’s, entre otros. Además, permite establecer valores límites, umbrales de tiempo y alertas según diferentes condiciones que encuentren los sensores. También, permite el monitoreo de redes de diferentes lugares con sondas remotas. Finalmente, cuenta con más de 30 plantillas para informes detallados del funcionamiento de los servidores, las redes, y la infraestructura en general. 2.2.4.2 Site 24x7 (ZOHO Corp, 2014) Esta aplicación es de paga y se encarga de monitorear servicios web en general; funciona en una plataforma web y desempeña una función que permite verificar el estado de los servicios y páginas web monitoreadas y además, de una aplicación que detalle el análisis de cada servicio según los gustos del cliente y desde diferentes ubicaciones de prueba. Esta aplicación permite monitorear los servidores, la disponibilidad y rendimiento de sitios web, la monitorización de aplicaciones web, la monitorización de servidores de correo, la monitorización de DNS y la monitorización de las modificaciones de páginas web. Toda esta información es entregada al usuario en forma de informes que permite saber el estado, el tiempo de actividad y el tiempo de respuesta en periodos del día. 2.2.5 Aplicaciones Móviles En este apartado se describirán aplicaciones móviles que permiten el monitoreo de los servidores y de los servicios que estos alojan. 2.2.5.1 Fing (Google Play, 2014) Esta aplicación es nativa de Android y permite escanear servicios TCP de una IP en particular, verificar su conectividad, enviar PING’s a los servicios y resolver DNS. Sin embargo, esta misma no permite monitorear servicios periódicamente. Una funcionalidad adicional es poder buscar servicios en una misma red y poder comunicarse con los servicios encontrados. Además uno de los problemas de esta aplicación es que para poder utilizar “traceroute” hacia páginas web o servicios, el sistema operativo debe estar “rooteado”. 22 Figura 2.2-1Aplicación Fing Fuente: imagen tomada de la página web de Google Play el 13 de abril de 2014 2.2.5.2 Server Monitor: Website status (Google Play, 2014) Esta aplicación es nativa de Android y permite monitorear diferentes servicios a la vez; su alcance abarca el monitoreo de HTTP, HTTPS, Ping, SMTP, FTP, MySql, Proxy 8080 y Subversion. Además, permite ajustar la periodicidad de revisión en 1, 5, 10, 30 y 60 minutos. En caso se coloque una dirección URL asociada a varias IP’s, la aplicación agrega cada IP por separado para el monitoreo de cada una de ellas. Durante el monitoreo del servicio, la aplicación muestra con un indicador rojo o verde si el estado está disponible o no para cada servicio monitoreado; y con un indicador rojo, verde o amarillo en caso la IP cuente con todos, algunos o ningún servicio funcionando (en ambos casos, mostrará negro si es que el servicio o la IP no está siendo monitoreado); además, permite saber el tiempo de respuesta del servicio, el estado del servicio en los últimos 15 intentos y el tiempo en el cual el servicio se encontró caído. Este servicio requiere de la creación de un usuario y una contraseña, lo que permite transferir la información registrada de un dispositivo a otro. Figura 2.2-2Aplicación Server Monitor: Website status Fuente: imagen tomada de la página web de Google Play el 13 de abril de 2014 23 2.2.5.3 Monyt - Server Monitor (Google Play, 2014) Esta aplicación es nativa de Android y permite monitorear varios servidores a la vez en intervalos de tiempo de 5, 15, 30, 60, 180 y 480 minutos. Esta aplicación permite monitorear el servidor en la cual se aloja el servicio; brinda información acerca del SO del servidor, el modelo del CPU y la versión del Kernel. Además, permite saber el tiempo que la aplicación viene monitoreando el servicio, el promedio del uso del servidor en 1, 5 y 10 minutos, el total de memoria RAM usada, así como también el uso del Disco Duro. Una de sus particularidades es la posibilidad de ver en un gráfico de tiempo con el comportamiento del servidor (Uso del CPU, Uso de la RAM); y el uso del ancho de banda. Sin embargo, para hacer uso de esta aplicación, el servidor debe poder ejecutar un comando en PHP que es brindado por los desarrolladores de esta app, si es que no se ejecuta el script brindado, la aplicación no podrá ser utilizada. Figura 2.2-3Monyt - Server Monitor Fuente: imagen tomada de la página web de Google Play el 13 de abril de 2014 2.2.5.4 Page Monitor (Google Play, 2014) Esta aplicación es nativa de Android y permite monitorear el contenido de las páginas web periódicamente en un intervalo configurable en minutos. Permite realizar un aviso si es que la página encuentra menos de un porcentaje establecido de similitud; también, permite configurar las horas en las cuales el sonido de deshabilitaría. Esta aplicación solo permite verificar el contenido de una página web mas no de servicios como FTP o SMTP. 24 Figura 2.2-4Page Monitor Fuente: imagen tomada de la página web de Google Play el 14 de abril de 2014 2.2.6 Cuadro comparativo de los productos de solución del problema Producto Características que satisfacen lo requerido Desventajas Fing 1. Permite monitorear servicios. 2. Permite ver ruta de los paquetes hacia los servicios. 3. Ofrece una solución Móvil. 4. Permite escanear todos los servicios asociados a una misma IP/URL. Su principal desventaja es que no permite programar revisiones periódicas, el dispositivo movil debe estar “rooteado” para que algunas funcionalidades puedan ejecutarse y, además, no da seguimiento del contenido del servicio. Solo ofrece una solución en plataforma Android. Server Monitor: Website Status 1. Permite el monitoreo de servicios en todos los IP’s asociados a una URL. 2. Permite la programación periódica de revisiones. 3. Ofrece una solución Móvil. 4. Muestra indicadores del estado del servicio. 5. Muestra información relevante del servicio como el tiempo de respuesta y el Esta aplicación no permite ver cuadros estadísticos de la información obtenida. Tampoco permite verificar que el contenido del servicio que se verifica sea el correcto. Solo ofrece una solución en plataforma Android. 25 tiempo que se registró fuera de servicio. 6. Permite separar los servicios que se monitorean de una misma IP. Monyt – Server Monitor 1. Permite el monitoreo de servicios en todos los IP’s asociados a una URL. 2. Permite la programación periódica de las revisiones. 3. Permite ver información del servidor. 4. Permite ver cuadros estadísticos de lo que la aplicación ha registrado en el tiempo. La desventaja se centra en que esta aplicación se encarga del monitoreo del servidor mas no del servicio; adicionalmente, se debe agregar un script PHP en el servidor. Solo ofrece una solución en plataforma Android. Page Monitor 1. Permite el monitoreo periódico de páginas web. 2. Permite configurar el porcentaje de similitud de la página web. La desventaja de esta aplicación es que solo permite el monitoreo de páginas web, mas no de otro tipo de servicios. Además, solo dice si la página ha cambiado o no, no muestra el tiempo de respuesta o el tiempo que la página se encuentra fuera de servicio. Solo ofrece una solución en plataforma Android Tabla 3Tabla comparativa de los posibles productos de solución al problema 2.3 Conclusiones sobre el estado del arte En conclusión, si bien existen una variedad de productos que permiten analizar el estado de servicios y de servidores, no hay un producto que se acomode exactamente a la solución que realmente se requiere, que es el monitoreo de disponibilidad y contenido de servicios web. Esto se debe a que la mayoría de las soluciones se preocupan de que el servicio esté disponible pero no de que el servicio brinde la información correcta; las que se preocupan del contenido del servicio son muy básicas. De esta mantera, lo que se plantea es una aplicación que permita cubrir las desventajas de estas aplicaciones. 26 Del mismo modo se propone enfocarse no solo en la verificación de que el servicio responda y esté activo, sino también en el contenido de la misma para ayudar a los administradores de servicios y servidores a monitorear los mismos desde cualquier ubicación con acceso a internet. 27 CAPÍTULO 3 3.1 Análisis de la aplicación 3.1.1 Introducción En el presente capítulo se cubrirán funcionalidades relacionadas a la plataforma web, es decir, las funcionalidades relacionados al registro de servicios web, páginas web y servicios ftp; monitoreo de los mismos y sistema de alertas de la aplicación. Para ello, este capítulo describirá la forma en la cual el servidor de aplicaciones está estructurado, la forma en la cual monitorea los servicios web, páginas web y la forma en la cual el servidor de aplicaciones envía las alertas al cliente, es decir, a la aplicación móvil. 3.1.2 Funcionalidades Las funcionalidades que se desarrollarán para el funcionamiento de la plataforma web son las siguientes: N° Funcionalidad 1 La plataforma web permitirá la creación, modificación y eliminación de servicios web, páginas web y servicios ftp. 2 La plataforma web permitirá el monitoreo de servicios web, páginas web y servidor ftp. 3 La plataforma web permitirá la comunicación con la aplicación cliente mediante servicios web en formato JSON. 4 La plataforma web permitirá distribuir la carga de monitoreo mediante el uso de hilos y configurar la cantidad de los mismos. 5 La plataforma web permitirá enviar una alerta a la aplicación cliente mediante un “push notification”. 3.2 Estructura de la aplicación web La aplicación del servidor cuenta con una estructura Modelo-Controlador. La persistencia ha sido desarrollada en el motor de base de datos Microsoft SQL Server. Asimismo, el modelo utiliza la herramienta Microsoft Entity Framework para conectar la aplicación a la base de datos. También cuenta con un módulo de monitoreo que se ejecuta paralelamente a la aplicación y realiza el monitoreo de los servicios web, páginas web y servicios ftp registrados por los usuarios mediante la aplicación cliente o plataforma móvil. Finalmente, cuenta con una interfaz que permite la interacción con el cliente móvil mediante servicios web en formato JSON. La estructura descrita se puede observar en la figura 3.2.-1 y se describirá en los siguientes apartados. 28 Figura 3.2-1Estructura de la aplicación de servidor 3.2.1 Diagrama de Relaciones Figura 3.2-2Diagrama de Relaciones del Servicio En el anexo 1 se encontrará el idef1x con todos los atributos de cada tabla. 29 3.3 Funcionalidades 3.3.1 Creación, Modificación y Eliminación de Servicios Web, Páginas Web y Servicios FTP Para la creación, modificación y eliminación de servicios web, páginas web y servicios FTP, la plataforma web cuenta con servicios web (la lista de servicios web se detallan en el anexo 2) que permiten la interacción con la aplicación cliente móvil. En cada llamada al servicio web, la aplicación del servidor llama al modelo con el fin de obtener la información solamente del dispositivo que solicitó la información; asimismo, para poder identificar cuáles son los servicios que pertenecen a cierto dispositivo se utilizará el ID del dispositivo. La información almacenada de cada servicio web, página web y servicio ftp será descrita a continuación: Nombre del atributo Descripción Servicio Nombre Nombre del servicio Tipo Tipo del servicio (Servicio Web, Página web o Servicio FTP) Periodicidad Cada cuánto tiempo será evaluado el servicio. Porcentaje de similitud Cuánto es el mínimo porcentaje de similitud que un servicio puede tener antes de que la aplicación cliente envíe una alerta al usuario. Modo de servicio web Habilita la verificación o de la estructura del servicio web o de la estructura y contenido. Directorio del servicio FTP Configura el directorio raíz que será monitoreado. Recursividad del servicio FTP Habilita la verificación del contenido de las carpetas que se encuentren en la carpeta raíz configurada. Acceso al Servicio Dirección URL Dirección URL del servicio. 30 Puerto Puerto en el cual se encuentra alojado el servicio. Seguridad Especifica si el servicio FTP cuenta con configuración de seguridad. Usuario Usuario de acceso al servicio FTP. Contraseña Contraseña de acceso al servicio FTP. Dirección del Servicio Dirección IP Dirección IP del servicio. 3.3.2 Verificación de los servicios La aplicación de servidor cuenta con un módulo de verificación de servicios que se encarga de buscar servicios que deben ser verificados, realizar las verificaciones correspondientes y alertar al usuario en el caso de que este no haya pasado los estándares mínimos establecidos por el usuario. Para realizar esta labor, se cuenta con una central de verificación que maneja un grupo de hilos que se encargan del procedimiento; asimismo, se optó utilizar esta forma de monitoreo con el fin de controlar la carga de trabajo por parte del servidor, debido a que la cantidad de hilos para cada labor es configurable. Los pasos para el monitoreo son los siguientes (Se puede observar en la figura 3.1-1): a) En el primer paso, un grupo de hilos se encargan de buscar cuáles son los servicios que deben ser verificados en el instante dado; estos servicios se colocan en una cola de monitoreo para su verificación. b) Asimismo, otro grupo de hilos se encargan del monitoreo de servicios; este grupo de hilos busca en la cola de monitoreo para ver si es que se debe verificar algún servicio y en caso lo encuentre, proceda a la verificación; en caso, el proceso de verificación encuentre que el servicio no cumple con un comportamiento normal, el procedimiento colocará al servicio en una cola de alertas. c) Finalmente, un grupo de hilos buscará en la cola de alertas para verificar si existen servicios que deben ser reportados a los usuarios y en caso encuentre alguno, el procedimiento enviará una notificación al usuario correspondiente. 3.3.3 Procedimientos de Verificación La aplicación de servidor monitorea los servicios web, páginas web y servicios FTP de forma periódica utilizando 2 pasos; estos pasos se describirán a continuación. 31 Figura 3.3-1Estructura de Monitoreo 3.3.3.1 Verificación de Disponibilidad Para la verificación de disponibilidad, la aplicación de servidor realizará tres ping al servicio y obtendrá un tiempo de respuesta. El tiempo de respuesta será promediado y comparado contra los 3 últimos tiempos promedio; en caso sea mayor a un 50% más que el promedio máximo, se enviará una alerta al usuario. 3.3.3.2 Verificación de Contenido Para la verificación de contenido, al momento de registrar el servicio, la aplicación lo descargará, le dará un formato establecido, lo guardará en una estructura similar a un diccionario y se lo mostrará al usuario para que sea validado y sea utilizado como el servicio base, es decir, será utilizado como el modelo que debería tener la servicio al momento de ser descargado para la verificación. Durante la verificación, la aplicación de servidor descargará el servicio nuevamente. Le dará el mismo formato que al servicio base y lo almacenará en una estructura similar a la del servicio base; finalmente, empezará a comparar las llaves y valores de la estructura; los componentes que no fueron encontrados al momento de la comparación se almacenarán en una lista el contenido que fue descargado y no fue encontrado en el servicio base con el fin de calcular el porcentaje de similitud y también de mostrar al usuario cuál fue la diferencia encontrada. El formato que se le dará a cada servicio se detallará a continuación: 3.3.3.2.1 Páginas Web Para las páginas web, se descargará el archivo fuente, de tal modo que el monitoreo no se afecte en caso la página muestre información de forma dinámica y cada componente se guardará en una lista. Cada componente será dividido en una llave, que será el tipo 32 de estructura que se está almacenando, por ejemplo, “Table” para una tabla, “Div” para una división o “Script” para una sentencia en el lenguaje javascript. El objetivo de guardar la información de la página web de esta forma es que en el caso que un componente dentro del otro se encuentre diferente, solo afecte a ese componente y a los componentes que lo contienen mas no a los otros componentes, por ejemplo, según la imagen 3.3-2, si cuento con una menú de 5 botones y en la comparación se encontró que una botón ha cambiado de link, entonces, el algoritmo de comparación solo registrará que 2 componentes han cambiado: el menú y uno de los botones. Según el ejemplo mencionado, se cuenta con 8 componentes y 2 de ellos han cambiado respecto a la página web base, por lo tanto, el porcentaje de similitud es de 0.75. Esta forma de almacenamiento permite que el algoritmo verifique todos los componentes de la página web. Asimismo, con el fin de no almacenar todo el código de la página web en una sola estructura, no se almacenarán los tipos de estructura “Title” y “Html”. Figura 3.3-2Ejemplo de verificación de una página web 3.3.3.2.2 Servicio Web Para los servicios web, la aplicación almacenará cada servicio en una estructura similar a un diccionario, en donde la llave será el nombre del atributo y el valor, el valor del atributo. Asimismo, para almacenar la dependencia de un atributo, el nombre del atributo almacenará la ruta en la cual fue obtenido, según lo que se puede apreciar en la figura 3.3-3. El objetivo de guardar cada atributo de esta forma es para verificar no solo el contenido sino también la estructura del servicio, debido a que permite dar seguimiento que objeto contiene a qué objeto. 33 Figura 3.3-3Ejemplo de almacenamiento de la estructura de un servicio web 3.3.3.2.3 Servicio FTP Para los servicios FTP, la aplicación almacenará la información de cada archivo en un archivo similar a un diccionario, en donde la llave será el nombre del archivo, incluyendo la ruta si este se encontrara dentro de una carpeta del directorio raíz; y el valor de la llave será una concatenación de la fecha de modificación y el tamaño. De esta forma, la aplicación no solo verificará que algún archivo haya sido eliminado, sino también que un archivo haya cambiado. 3.4 Pruebas Para las pruebas de monitoreo del servicio se procedió a monitorear 5 servicios en paralelo pertenecientes a 2 dispositivos diferentes. Los servicios a monitorear fueron los siguientes: a) Dispositivo 1: a. Facebook (www.facebook.com): Verificación: Monitoreo de Disponibilidad. Periodicidad: 2 minutos b. Servicio Web creado para el monitores Verificación: Monitoreo de Contenido y Disponibilidad. Periodicidad: 3 minutos 34 b) Dispositivo 2: a. Página web creada para el monitoreo Verificación: Monitoreo de Contenido y Disponibilidad. Modo: Verificación de Estructura y Contenido. Periodicidad: 5 minutos b. Open Patent Service (http://ops.epo.org/rest-services/published- data/publication/epodoc/EP1000000.A1/biblio.json) Verificación: Monitoreo de Contenido y Disponibilidad. Modo: Verificación de Estructura. Periodicidad: 5 minutos c. Servicio FTP creado para el monitoreo Verificación: Monitoreo de Contenido y Disponibilidad. Modo: Verificación Recursiva. Periodicidad: 5 minutos Asimismo, la plataforma web fue configurada con 1 hilo para la búsqueda de servicios, 2 hilos para el monitoreo y 1 hilo para enviar notificaciones a los dispositivos móviles. 3.4.1 Pruebas de registro de información N° Funcionalidad Resultado 1 La aplicación de servidor permitirá crear un usuario en la primera ejecución de la aplicación móvil. Exitoso 2 La aplicación de servidor permitirá añadir servicios asociados al usuario de la aplicación. Exitoso 3 La aplicación de servidor permitirá modificar servicios asociados al usuario de la aplicación. Exitoso 4 La aplicación de servidor permitirá mostrar todos los servicios asociados al usuario de la aplicación. Exitoso 5 La aplicación de servidor permitirá eliminar servicios asociados al usuario de la aplicación. Exitoso 6 La aplicación de servidor descargará el primer servicio base al registrar el servicio. Exitoso 7 La aplicación de servidor permitirá actualizar el servicio base según la necesidad del usuario. Exitoso 35 3.4.2 Pruebas de monitoreo de servicio 3.4.2.1 Proceso de búsqueda de servicios a monitorear N° Funcionalidad Resultado 1 El procedimiento de búsqueda puso en cola de monitoreo a los servicios que debían ser monitoreados en ese momento. Exitoso 2 El procedimiento de búsqueda puso en cola de monitoreo a todos los servicios que debían ser monitoreados durante el periodo en el cual no puso monitorear los servicios. Exitoso 3.4.2.2 Proceso de monitoreo de servicios Las pruebas del proceso de monitoreo de servicio se realizará en 2 etapas; la prueba del procedimiento de verificación disponibilidad y la prueba del procedimiento de verificación del contenido. 3.4.2.2.1 Verificación de disponibilidad Para la verificación de disponibilidad se obtuvieron los siguientes resultados: N° Servicio Resultado 1 www.facebook.com # Verificaciones: 103 Tiempo Mínimo: 24.33 Tiempo Máximo: 259.33 # Alertas: 4 2 Servicio Web creado para el monitoreo. # Verificaciones: 68 Tiempo Mínimo: 73 Tiempo Máximo: 163 # Alertas: 1 3 Página Web creada para el monitoreo. # Verificaciones: 40 Tiempo Mínimo: 91 Tiempo Máximo: 238.67 # Alertas: 2 4 http://ops.epo.org/rest-services/published- data/publication/epodoc/EP1000000.A1/biblio.json # Verificaciones: 38 Tiempo Mínimo: 149.67 Tiempo Máximo: 150.33 # Alertas: 0 5 Servicio FTP creado para el monitoreo. # Verificaciones: 41 Tiempo Mínimo: 90.33 Tiempo Máximo: 135.69 # Alertas: 0 3.4.2.2.2 Verificación del contenido Para la verificación de contenido, los servicios creados para las pruebas sufrieron modificaciones durante el monitoreo con el fin de probar el cálculo del porcentaje de similitud. A cada servicio se le hicieron 2 modificaciones y serán descritas a continuación. 36 Página Web: En la primera modificación cambia un link; en la segunda, se agrega una librería. Servicio Web: En la primera modificación cambia solo el contenido de un atributo; en la segunda, varia el nombre del atributo. Nombre del atributo Contenido del atributo Nombre César Apellido Otoya DNI 019483129 Sexo Masculino Domicilio/Avenida Av Cordialidad Domicilio/Numero 1020 Domicilio/Distrito San Borja Modificación 1: Se cambia el contenido del atributo Nombre por Augusto. Modificación 2: Se cambia el atributo Nombre por Primer Nombre. Servicio FTP: En la primera modificación cambia solo el nombre de un archivo; en la segunda, varia el peso de un archivo. Nombre del archivo Tipo del archivo Peso del archivo Tesis Word 2.5 Mb Tesis_requisitos Excel 200 Kb Horario Excel 300 Kb Office_2013 Ejecutable 101 Mb Fotos Carpeta - Fotos/1.jpg Imágen 100 Kb Fotos/2.jpg Imágen 100 Kb Fotos/3.jpg Imágen 100 Kb Fotos/4.jpg Imágen 100 Kb Fotos/5.jpg Imágen 100 Kb CppApplication_2 Carpeta - CppApplication_2/nbproject Carpeta - CppApplication_2/dist Carpeta - 37 CppApplication_2/build Carpeta - CppApplication_2/output Archivo de texto CppApplication_2/Makefile Archivo CppApplication_2/main.c Archivo C CppApplication_2/.dep.inc Archivo inc CppApplication_2/nbproject/private Carpeta CppApplication_2/nbproject/Project Archivo CppApplication_2/nbproject/Package- Release.bash Archivo bash 2 Kb CppApplication_2/nbproject/Package-Debug.bash Archivo bash 1 Kb CppApplication_2/nbproject/Makefile-variables.mk Archivo mk 3 Kb CppApplication_2/nbproject/Makefile-Release.mk Archivo mk 2 Kb CppApplication_2/nbproject/Makefile-impl.mk Archivo mk 5 Kb CppApplication_2/nbproject/Makefile-Debug.mk Archivo mk 2 Kb CppApplication_2/nbproject/configurations Archivo 3 Kb CppApplication_2/dist Carpeta - CppApplication_2/dist/Debug Carpeta - CppApplication_2/dist/Debug/MinGW-Windows Carpeta - CppApplication_2/dist/Debug/MinGW- Windows/cpp_aplication_2 Ejecutable 31 kb CppApplication_2/build Carpeta - CppApplication_2/ build /Debug Carpeta - CppApplication_2/ build /Debug/MinGW-Windows Carpeta - CppApplication_2/build/Debug/MinGW- Windows/main.o.d Archivo .d 1 Kb CppApplication_2/build/Debug/MinGW- Windows/main.o Archivo .o 7 Kb Modificación 1: Se cambia el nombre del archivo cpp_aplication_2 por cpp_aplication Modificación 2: Se cambia el contenido del archivo Tesis. Resultado del monitoreo: N° Servicio Resultado 1 www.facebook.com No se monitoreo contenido. 2 Servicio Web creado para el monitoreo. Cambio 1: 0.86 % Cambio 2: 0.86 % 3 Página Web creada para el monitoreo. Cambio 1: 0.95 % 38 Cambio 2: 0.95 % En el cambio 2, se envía una alerta al usuario sin importar el porcentaje de similitud. 4 http://ops.epo.org/rest-services/published- data/publication/epodoc/EP1000000.A1/biblio.json Resultado: 100 % 5 Servicio FTP creado para el monitoreo. Cambio 1: 0.97 % Cambio 2: 0.97 % 3.4.2.3 Proceso de envío de notificación N° Funcionalidad Resultado 1 La aplicación de servidor permitirá enviar una notificación en caso algún servicio se encuentre Exitoso 2 La aplicación de servidor permitirá configurar la cantidad de hilos utilizada para el monitoreo de servicios. Exitoso 3 La aplicación de servidor permitirá configurar la cantidad de hilos utilizada para el envío de notificaciones. Exitoso 3.4.3 Pruebas de configuración N° Funcionalidad Resultado 1 La aplicación de servidor permitirá configurar la cantidad de hilos utilizada para la búsqueda de servicios que serán monitoreados. Exitoso 2 La aplicación de servidor permitirá configurar la cantidad de hilos utilizada para el monitoreo de servicios. Exitoso 3 La aplicación de servidor permitirá configurar la cantidad de hilos utilizada para el envío de notificaciones. Exitoso 39 CAPÍTULO 4 4.1 Análisis de la aplicación 4.1.1 Introducción En el presente capítulo se cubrirán funcionalidades relacionadas a la plataforma móvil, es decir, las funcionalidades relacionadas al ingreso de parámetros y visualización del monitoreo. Para ello, este capítulo describirá las formas de ingreso de información, la información que el usuario podrá observar como producto del monitoreo de los servicios y cómo acceder a ella; y qué alertas enviará la aplicación con el fin de avisar al usuario que la plataforma web detectó algún problema durante el monitoreo. Finalmente, se describirán las opciones de configuración de la aplicación. 4.1.2 Funcionalidades Para el ingreso de información de los servicios se desarrollarán las siguientes funcionalidades: N° Funcionalidad 1 La aplicación permitirá añadir servicios web 2 La aplicación permitirá modificar servicios web 3 La aplicación permitirá eliminar servicios web 4 La aplicación permitirá añadir páginas web 5 La aplicación permitirá modificar páginas web 6 La aplicación permitirá eliminar páginas web 7 La aplicación permitirá añadir servicios FTP 8 La aplicación permitirá editar servicios FTP 9 La aplicación permitirá eliminar servicios FTP 10 La aplicación mostrará los servicios agrupados por su tipo. Tabla 4Funcionalidades para el Ingreso de Servicios Para las alertas de la aplicación que se mostrarán en caso se deba notificar al usuario de la ocurrencia de algún evento se desarrollarán las siguientes funcionalidades: N° Funcionalidad 1 La aplicación mostrará una notificación en la barra de alertas del sistema operativo. 2 La aplicación mostrará la cantidad de errores encontrados en el logo de la aplicación hasta que los errores hayan sido vistos por el usuario. 40 3 La aplicación emitirá una alerta cuando la plataforma web envíe alguna notificación. 4 La aplicación permitirá configurar el sonido de la alerta. Tabla 5Funcionalidades para notificar el acceso Para la información que la aplicación mostrará en base al monitoreo de los servicios web se desarrollarán las siguientes funcionalidades: N° Funcionalidad 1 La aplicación mostrará un gráfico con los tiempos de respuesta del servicio monitoreado en una línea de tiempo. 2 La aplicación mostrará el contenido del servicio monitoreado por cada vez que el servicio fue monitoreado. 3 La aplicación mostrará el grado de similitud por cada vez que el servicio fue monitoreado. 4 La aplicación mostrará una lista con los servicios que está monitoreando mostrando la información del promedio de tiempo de respuesta en la última revisión de disponibilidad, el grado de similitud de la última revisión de contenido y un indicador con el estado del servicio. 5 La aplicación mostrará la lista de alertas que fueron lanzadas por cada uno de los servicios. Tabla 6Funcionalidades para el monitoreo de servicios 4.2 Clases de almacenamiento del servicio Clase Atributo Descripción Servicio idServicio Identificador del servicio nombre Nombre del servicio tipo Tipo de servicio periodicidad Período de tiempo que el servicio será monitoreado activo Estado de verficación del servicio estadoDisponible Estado de disponibilidad del servicio estadoContenido Estado del contenido del servicio similitud Porcentaje de similitud mínima de la comparación del contenido 41 permitido por el usuario y el servicio base pwLibrerias Permite verificar si las librerías de la página web se están monitoreando swModo Modo de verificación del servicio web(estructura o estructura y contenido) sfRecursivo Permite saber si se verificará el contenido de las carpetas hijas ubicadas en la carpeta padre del servicio FTP avgTiempoRespuesta Tiempo promedio de respuesta del último monitoreo de disponibilidad gradoSimilitud Grado de similitud de la comparación del contenido en el último monitoreo tipoAlerta Tipo de alerta del servicio ServicioAcceso url URL del servicio puerto Puerto del servicio modoSeguro Si el serivicio requiere una contraseña o no usuario Usuario de seguridad del servicio password Contraseña del servicio ServicioBase fechaActualizacion Última fecha de actualización del servicio servicioBase Contenido del servicio descargado que servirá para verificar si se ha modificado en un momento dado. ServicioDisponibilidad fechaMonitoreo Fecha de monitoreo del servicio avgPingConexion1 Tiempo promedio de respuesta del servicio de referencia 1 avgPingConexion2 Tiempo promedio de respuesta del servicio de referencia 2 42 avgPingConexion3 Tiempo promedio de respuesta del servicio de referencia 3 avgPingServicio Promedio de tiempo de respuesta del servicio ServicioContenido fechaMonitoreo Fecha de monitoreo del contenido del servicio Diferencias Diferencias entre el servicio descargado y el servicio base gradoSimilitud Grado de similitud entre el servicio descargado y el servicio base ServicioAlerta alertaNoDisponible Sonido reproducido en caso el servicio monitoreado no se encuentre disponible alertaDiferete Sonido que se reproducirá en caso el servicio tenga un porcentaje de similitud menor al mínimo establecido por el usuario. fechaCreacion Fecha de creación del servicio de prueba AlertaSonora idAlerta Identificador de la alerta sonora sonido Sonido que se reproducirá cuando ocurra la alerta sonora fechaCreacion Fecha de creación de la alerta sonora 4.3 Diseño de la aplicación 4.3.1 Introducción El presente capítulo pretende cubrir funcionalidades relacionadas a la plataforma móvil de la aplicación, que será el medio de comunicación de la aplicación con el usuario. Por ello, la aplicación debe permitir al usuario ingresar información de los servicios que desea monitorear y obtener información acerca del mismo. Este apartado contiene información acerca de la estructura general de la plataforma móvil y el motivo de la existencia de cada uno de sus componentes. Esta información será descrita de forma general en el siguiente punto y se irá profundizando a lo largo del apartado. 43 4.3.2 Arquitectura de la aplicación La aplicación desarrollada se realizará bajo los siguientes estilos arquitectónicos: a) Modelo Vista Controlador (MVC): La plataforma móvil será desarrollada bajo el patrón del MVC. Este patrón es impuesto por Apple para la construcción de aplicaciones en la plataforma iOS. Se utilizará un nivel multicapas interconectadas que permitirán el funcionamiento eficiente de la aplicación. b) Orientada a Objetos: La plataforma móvil será desarrollada bajo la arquitectura orientada a objetos para salvaguardar la data y protegerla con los beneficios de este tipo de programación (encapsulamiento). Las clases mantendrán un orden y se dividirán en diversas capas, propuestas por MVC. La arquitectura se centrará en 3 capas: a) Capa Vista: Mostrará la lógica de la interfaz de la aplicación. b) Capa Controlador: Será la capa donde estará la lógica del negocio. Esta capa será llamada por la capa vista y esta capa realizará peticiones a la capa Modelo para enviarla a la capa Vista. c) Capa Modelo: Será la capa donde se manejará la persistencia, esta será la encargada de la comunicación con la plataforma web. A continuación, se mostrará un diagrama que mostrará cómo será la interacción entre las 3 capas mencionadas, asimismo, en el anexo 3 se mostrará el diagrama de secuencia de algunas transacciones: Figura 4.3-1Estructura de Capas Fuente: Autoría Propia 4.3.3 Estructura de la aplicación 4.3.3.1 Especificaciones Generales La aplicación desarrollada cuenta con tres vistas principales donde cada una de ellas puede ser accedida desde las pestañas (Figura 4.3-2Pestañas de la aplicación) 44 ubicadas en la parte inferior de la aplicación; los nombres de las pestañas son “Servicios”, “Estadísticas” y “Configuración”. Cada una de estas pestañas tiene como objetivo mostrar una interfaz en la cual el usuario pueda registrar información de los servicios a monitorear, mostrar información relevante acerca del monitoreo de los servicios registrados y permitir al usuario ingresar o modificar parámetros necesarios para el funcionamiento de la aplicación. A continuación, se detallará información específica relacionada a cada pestaña. Figura 4.3-2Pestañas de la aplicación Fuente: Autoría Propia 4.3.3.2 Pestaña “Servicios” La pestaña “Servicios” tiene como objetivo el registro de los servicios que el usuario desea monitorear. Es la primera pestaña que se muestra en la aplicación debido a que permite saber al usuario los servicios registrados y, además, cuáles de los servicios registrados se encuentran activos, es decir, permite saber cuáles están siendo monitoreados y cuáles no. A continuación, se describirán los elementos que aparecen en esta vista. La cabecera: En la parte superior de la vista se muestran dos botones que permitirán editar los componentes de la tabla (Figura 4.3-3 Sección superior de la aplicación). El botón ubicado en la zona superior derecha y cuyo símbolo es un más (+) permite acceder a una vista en la cual el usuario podrá registrar un nuevo servicio a monitorear. El botón ubicado en la zona superior izquierda y cuyo nombre es “Editar” permite acceder a una vista en la cual el usuario podrá eliminar el servicio o acceder a la vista de edición del servicio. A continuación, se detallarán las funcionalidades dadas por los botones descritos. 45 Figura 4.3-3 Sección superior de la aplicación Fuente: Autoría Propia El cuerpo: La pestaña muestra una lista de servicios registrados, agrupados por tipo de servicio (FTP, Página Web, Servicios Web). Además, cada celda de la tabla muestra el nombre del servicio, un interruptor que permite activar o desactivar el servicio y un indicador que permite saber si es seguro. A continuación, se describirán los íconos que podrían aparecer en las celdas de los servicios: Símbolo Identificador Definición Candado Permite saber si el servicio se encuentra en su versión segura: HTTPS, FTPS, Servicio web restringido. Encendido Permite saber si el monitoreo del servicio se encuentra activo. Para desactivarlo basta con deslizar el interruptor. Apagado Permite saber si el monitoreo del servicio se encuentra inactivo. Para activarlo basta con deslizar el interruptor. Tabla 7Íconos de Servicios 4.3.3.2.1 Botón Añadir (+) Este botón permite acceder a una vista en la cual el usuario deberá colocar la dirección del servicio (URL, por sus siglas en inglés.) que desea monitorear sin el protocolo de comunicación (http, https, ftp) ni el puerto de destino. Además, el usuario deberá seleccionar el tipo de servicio que se desea monitorear. Finalmente, deberá seleccionar las direcciones IP, asociadas a la dirección ingresada que desea monitorear. A continuación, se describirán los elementos que aparecen en esta vista. La cabecera: La cabecera (Figura 4.3-4Cabecera de la vista añadir) muestra el nombre de la funcionalidad y 2 botones. El botón ubicado en la zona izquierda de la cabecera permite 46 cerrar la vista sin guardar ningún servicio. El botón ubicado en la zona derecha permite guardar la vista, en caso se hayan seleccionado las direcciones IP, o, en caso contrario, abrirá la lista de direcciones IP para luego proceder a guardar el servicio. Una vez guardado el servicio, la aplicación mostrará la vista de edición de servicios. Figura 4.3-4Cabecera de la vista añadir Fuente: Autoría propia El cuerpo: El cuerpo muestra 2 campos que permitirán ingresar la información descrita. Sin embargo, muestran, también, otros elementos que serán descritos a continuación: Botones: Estos elementos se muestran al costado de los campos de texto. Botón Identificador Definición IP’s Permite acceder a la lista de direcciones IP asociadas a la dirección URL colocada. Al presionar el botón, se abrirá un elemento emergente que permitirá seleccionar las IP’s que se deseen monitorear. Ayuda Permite acceder un elemento emergente que explicará el funcionamiento de la ventana. Tabla 8Botones de "Añadir Servicio" Selector: Este elemento se mostrará al situarse sobre el campo que permite especificar el tipo del servicio que se desea monitorear y permitirá seleccionar el tipo deseado de una lista de tres elementos (Página Web, Servicio Web y Servicio FTP). Figura 4.3-5Seleccionar Tipo de Servicio Fuente: Autoría propia 47 4.3.3.2.2 Botón Editar Este botón permite acceder a una versión modificada de la vista principal que permitirá al usuario eliminar o editar algunos de los servicios agregados. Al presionar el botón editar aparecerán los siguientes elementos: Botón Identificador Definición Mostrar Eliminar Permite acceder al botón “Eliminar” de la celda del servicio. Se puede lograr la misma funcionalidad deslizando la celda hacia el lado izquierdo. Acceder Permite acceder a la pantalla de edición del servicio seleccionado. Este símbolo aparecerá en todas las filas de la tabla de servicios de esta vista en modo Editar. Tabla 9Elementos de edición A continuación, se describirán las características visibles al presionar los botones descritos. 4.3.3.2.3 Funcionalidad “Eliminar” Según lo descrito en la sección superior, existen 2 maneras de ver el botón eliminar de algún servicio registrado en la aplicación. Una de ellas es presionando el botón “Mostrar Eliminar” ubicado en la vista de edición. La otra forma de acceder al botón “Eliminar” es deslizar la celda del servicio suavemente hacia la izquierda en la vista principal. En cualquiera de los casos la celda mostrará el botón eliminar (Figura 4.3-6Botón Eliminar). Este botón permite eliminar definitivamente el servicio junto con toda la información obtenida del servicio. Figura 4.3-6Botón Eliminar Fuente: Autoría Propia 4.3.3.2.4 Funcionalidad “Editar” Según lo descrito en una sección superior, la forma de acceder a esta vista, de forma manual, es seleccionando la celda del servicio que se desea editar con la vista en modo de edición. Sin embargo, al momento de registrar un nuevo servicio, la aplicación mostrará automáticamente esta vista con el fin de que el usuario pueda ingresar los 48 datos de la aplicación que está registrando. Los elementos de esta vista serán descritos a continuación. La cabecera: La cabecera (Figura 4.3-7Cabecera de la vista Editar) muestra el nombre de la funcionalidad y 2 botones. El botón ubicado en la zona izquierda de la cabecera permite regresar a la pantalla principal sin guardar ninguna modificación. El botón ubicado en la zona derecha permite guardar los cambios realizados en la vista. Antes de proceder a guardar la información la aplicación mostrará una alerta de confirmación. Figura 4.3-7Cabecera de la vista Editar Fuente: Autoría propia El cuerpo: Al ingresar a esta vista se mostrarán 2 secciones (Figura 4.3-8Secciones de la vista Editar): “General” y “Acceso”. Estas secciones variarán dependiendo del tipo de servicio seleccionado y serán descritas a continuación. Figura 4.3-8Secciones de la vista Editar Fuente: Autoría Propia 4.3.3.2.4.1 Sección General Esta sección contiene campos que permite al usuario ingresar información descriptiva del servicio que desea monitorear. De todos los campos que se encuentran en la vista, 5 de ellos son campos de información general que se visualizarán para los 3 tipos de servicios que la aplicación permite monitorear. Estos campos son descritos en la siguiente tabla. 49 Campo Descripción Nombre Permite ingresar el nombre descriptivo que se le desea dar al servicio que se desea monitorear. (Hasta 100 Caracteres). Tipo Permite visualizar el tipo de servicio que se seleccionó en la vista de adición. Los tipos son: “Servicio web”, “Página web” y “Servicio FTP”. Este campo no es modificable. Estado del servicio (Inactivo) (Activo) Permite activar o desactivar el servicio, es decir, en caso se encuentre activado, la aplicación lo monitoreará periódicamente, en caso no se encuentre activado, la aplicación no monitoreará el servicio, sin embargo, las estadísticas recogidas anteriormente podrán ser vistas en la pestaña “Estadísticas”. Tipo de Monitoreo Permite seleccionar qué tipo de monitoreo se desea realizar al servicio. Los tipos de monitoreo son: “Disponibilidad” y “Contenido”. El tipo “Contenido” incluye, de por sí, el monitoreo de la disponibilidad. Similitud Permite ingresar el porcentaje de similitud mínimo que debe tener el servicio monitoreado al momento de la verificación del contenido respecto a la información base obtenida al momento del registro del servicio. Solo permitirá ser llenado en caso el tipo de Monitoreo sea “Contenido”. Tiempo de Respuesta Base Permite ingresar el tiempo de respuesta base del servicio a monitorear. Si no se colocar, el sistema lo calculará automáticamente en base al tiempo de respuesta promedio obtenido al registrar el servicio. Periodicidad Permite ingresar la periodicidad en la cual la aplicación monitoreará el servicio, es decir, cada cuánto tiempo realizará la verificación de disponibilidad y/o de contenido. En esta sección, el primer campo permite colocar valores numéricos y se refiere a la cantidad de espacio de tiempo basado en el segundo campo. El segundo campo permite seleccionar la base de tiempo de la periodicidad. Al ubicarse sobre este campo, la aplicación desplegará una lista que permitirá seleccionar cualquiera de los siguientes valores: Segundos, Minutos, Horas, Días. 50 Tipo de Alerta Permite seleccionar el tipo de alerta con la que se alertará en caso la aplicación encuentre algún comportamiento anormal en el servicio monitoreado. Tabla 10Elementos de la sección general Sin embargo, los otros campos variarán según el tipo de servicio que se haya seleccionado al momento de registrar la aplicación. La relación de campos, según el tipo de servicio, serán descritos a continuación. a) Página Web: En caso el servicio a monitorear sea “Página Web”, la aplicación mostrará los siguientes campos: Campo Descripción Librerías (Inactivo) (Activo) Permite habilitar o deshabilitar la opción de monitoreo de librerías descargadas en la página web. Tabla 11Elementos de "Pägina Web" b) Servicio Web: En caso el servicio a monitorear sea “Servicio Web”, la aplicación mostrará los siguientes campos: Campo Descripción Modo Permite seleccionar el modo de monitoreo de contenido, es decir, si se monitoreará solo la estructura o se monitoreará la estructura y el contenido. Tabla 12Elementos de Servicio Web c) Servicio Ftp: En caso el servicio a monitorear sea “Servicio Ftp”, la aplicación mostrará los siguientes campos: Campo Descripción Recursivo (Inactivo) Permite activar o desactivar la funcionalidad de recursividad, es decir, al monitorear el contenido de los servicios FTP, permite decirle a la aplicación si va a monitorear solo la carpeta asignada 51 (Activo) (raíz) o si, también, monitoreará los archivos que se encuentren contenidos en las carpetas contenidas en la raíz. Directorio Permite especificar el directorio raíz que será monitoreado. Tabla 13Elementos de Servicio FTP 4.3.3.2.4.2 Sección Acceso Esta opción contiene campos que permiten ingresar al usuario información acerca del acceso a los servicios descritos en la pestaña “General”. La información se dividirá en información de acceso (URL y Puerto) e información de seguridad (Usuario y Clave). Los campos serán descritos a continuación. Campo Descripción URL Permite ingresar la dirección URL o dirección IP del servicio que se desea monitorear. En caso se ingrese la dirección URL, la aplicación mostrará la lista de direcciones IP asociadas a la dirección URL ingresada; el usuario podrá elegir qué dirección IP monitorear. Permite abrir un cuadro emergente que muestras las direcciones IP asociadas al servicio. Puerto Permite ingresar el puerto donde se encuentra el servicio. En caso el tipo de servicio sea “Página Web” se colocará por defecto el puerto 80, en caso sea “FTP” se colocará por defecto el puerto 22. TiempoRespuesta Tiempo de respuesta base del servicio. Este tiempo es calculado al registrar el servicio, sin embargo, puede ser modificada por el usuario. Seguridad (Inactivo) (Activo) Permite activar o desactivar el acceso seguro al servicio registrado. Al activar el acceso seguro se mostrarán los campos “Usuario” y “Clave”. Los servicios que cuenten con esta opción activada mostrarán un ícono en forma de candado en la celda que contiene el servicio. (Ver la sección “Cuerpo” en el apartado 2.3.1). Usuario Permite ingresar el usuario del acceso seguro del servicio. Clave Permite ingresar la clave del acceso seguro del servicio. Tabla 14Elementos de la sección acceso 52 4.3.3.3 Pestaña “Estadísticas” La pestaña Estadísticas tiene como objetivo mostrar información relacionada con el monitoreo de los servicios. Es la segunda pestaña en la barra de pestañas (Figura 4.3-9Pestañas de la aplicación) debida a que permite mostrar directamente la información de respuesta del servicio. Figura 4.3-9Pestañas de la aplicación Fuente: Autoría Propia La cabecera: La cabecera (Figura 4.3-10Cabecera de la pestaña "Estadísticas") muestra el nombre de la pestaña. Figura 4.3-10Cabecera de la pestaña "Estadísticas" El cuerpo: Al ingresar a esta vista se muestra una lista con los servicios registrados (Figura 4.3-11Tabla de Servicios Agrupados) en la sección “Servicios”, agrupados por tipo de servicio (FTP, Página Web, Servicio Web). Además, esta lista mostrará un indicador que permitirá saber el estado del servicio (Estos indicadores se detallarán más adelante). Cada celda de esta lista permitirá acceder a otra vista que mostrará todas las direcciones IP asociadas al servicio seleccionado. Figura 4.3-11Tabla de Servicios Agrupados Fuente: Autoría Propia 53 4.3.3.3.1 Sección IP Esta vista muestra las IP’s asociadas al servicio seleccionado. Cuenta con un indicador que permite saber el estado del servicio en esa dirección IP. La Cabecera: La cabecera (Figura 4.3-12Cabecera de la vista “Ip’s”) muestra el nombre del servicio seleccionado y un botón que permite regresar a la lista de servicios registrados en la aplicación. Figura 4.3-12Cabecera de la vista “Ip’s” Fuente: Autoría Propia El Cuerpo: El cuerpo de esta vista muestra una lista con las direcciones IP asociadas al servicio seleccionado. Cada celda (Figura 4.3-13Celda de la lista IP's) mostrará un ícono que indicará el estado del servicio en esa IP. Adicionalmente, cada celda mostrará el tiempo promedio de respuesta del último monitoreo en la sección superior derecha y, si se encuentra activado el monitoreo de contenido, mostrará el porcentaje de similitud en la sección inferior derecha. Figura 4.3-13Celda de la lista IP's A continuación, se detallarán los íconos que se podrían mostrar en las celdas. Símbolo Identificador Definición Apagado Este ícono se mostrará en caso el servicio se encuentre desactivado. No Disponible Este ícono se mostrará en caso el servicio monitoreado se encuentre fuera de servicio. Correcto Este ícono se mostrará en caso el servicio monitoreado se encuentre con un porcentaje de similitud igual a 100% 54 o que el tiempo de respuesta promedio esté por debajo al establecido por el usuario. Problemas de Contenido Leve Este ícono se mostrará en caso un servicio del tipo FTP se encuentre con un porcentaje de similitud diferente a 100%, pero dentro del porcentaje establecido por el usuario. Problemas de Contenido Leve Este ícono se mostrará en caso un servicio del tipo Página Web o Servicio Web se encuentre con un porcentaje de similitud diferente a 100%, pero dentro del porcentaje establecido por el usuario. Problemas de Contenido Grave Este ícono se mostrará en caso un servicio se encuentre con un porcentaje de similitud por debajo al establecido por el usuario. Tabla 15Íconos de estados de IP's Al seleccionar un servicio, la aplicación mostrará una vista que permitirá observar información relacionada al servicio. 4.3.3.3.2 Sección “Información” Esta ventana mostrará la información obtenida del monitoreo del servicio, tanto para disponibilidad, como para contenido; por lo tanto, esta ventana estará dividida en 2 secciones: “Disponibilidad” y “Contenido”. La Cabecera: La cabecera (Figura 4.3-14Cabecera de la sección "Información") mostrará la IP de cual se muestra la información, un botón que permite regresar a la lista de IP’s asociadas a la dirección seleccionada en la vista de “Estadísticas” y un control que permite seleccionar el tipo de monitoreo de donde se desea obtener información. Figura 4.3-14Cabecera de la sección "Información" 55 El Cuerpo: El contenido del cuerpo varía en función a la opción seleccionada en el control ubicado en la cabecera; sin embargo, la estructura de la vista es similar en cualquiera de los dos casos. La estructura consta de 2 bloques: el primer bloque muestra una línea de tiempo (Figura 4.3-15Linea de Tiemp) y el segundo bloque muestra una lista. El contenido de cada uno de estos bloques se describirá a continuación. Figura 4.3-15Linea de Tiempo Librería: JBChartView – Jawbone La primera sección (“Disponibilidad”) mostrará información acerca del monitoreo de la disponibilidad. Esta vista mostrará la línea de tiempo con el tiempo promedio de respuesta del servicio de las últimas 7 revisiones. Además del tiempo promedio de respuesta por cada una de las revisiones. Al presionar la celda, permitirá acceder a la información detallada del monitoreo, es decir, mostrará una vista con el tiempo de respuesta de cada vez que se monitoreo el servicio. La segunda sección (“Contenido”) tendrá información acerca del monitoreo del contenido y estará habilitada solo en caso este tipo de monitoreo se encuentre habilitado. Esta sección mostrará una línea de tiempo con el grado de similitud obtenido en las últimas 7 revisiones. Además, mostrará una lista con las revisiones realizadas. Cada celda de la lista permitirá acceder a una nueva vista (“Sección Contenido”) que mostrará información a detalle de los cambios encontrados en el monitoreo correspondiente a esa celda. Esta vista permitirá observar las diferencias encontradas. Figura 4.3-16Porcentaje de Similitud por Monitoreo 56 4.3.3.3.3 Sección “Contenido” Esta sección permite observar una lista con el contenido descargado. Cada fila de la lista mostrará el nombre del archivo, el porcentaje de similitud y el peso del archivo. Además, se mostrará, según sea el caso, un ícono que describirá el estado del archivo. La descripción de los íconos que podrían aparecer se describirá a continuación. Símbolo Identificador Definición Perfecto Este ícono se mostrará en caso un archivo se encuentre con un porcentaje de similitud igual al de 100%. Archivo Agregado. Este ícono se mostrará en caso un archivo haya sido incluido por primera vez en el servicio monitoreado. Esto enviará una alerta de “Problema de contenido grave” al servicio. Problemas de contenido leve Este ícono se mostrará en caso un archivo se encuentre con un porcentaje de similitud diferente a 100% por encima del límite establecido por el usuario Problemas de contenido grave Este ícono se mostrará en caso un servicio se encuentre con un porcentaje de similitud por debajo al establecido por el usuario. Tabla 16Íconos de la sección Contenido 4.3.3.4 Pestaña “Configuración” La pestaña configuración tiene como objetivo el ingreso de parámetros de configuración de la aplicación. Es la tercera pestaña de la barra de pestañas (Figura 4.3-17Pestañas de la aplicación) debido a que la información ingresada aquí es vital para el funcionamiento de la aplicación. Figura 4.3-17Pestañas de la aplicación Fuente: Autoría Propia La Cabecera: La cabecera (Figura 4.3-18Cabecera de la vista de Opciones) mostrará el nombre de la sección. 57 Figura 4.3-18Cabecera de la vista de Opciones Fuente: Autoría Propia El Cuerpo: El cuerpo contiene una lista de opciones divididas en dos secciones. La primera sección (Figura 4.3-19Sección de Configuraciones Generales) contiene las opciones de Configuraciones Generales, es decir, las configuraciones necesarias para el funcionamiento de la aplicación. Las opciones de esta sección son “Generales” y “Conexión con el servidor” Figura 4.3-19Sección de Configuraciones Generales Fuente: Autoría Propia La segunda sección (Figura 4.3-20Sección de Otros) contiene la sección de otros, es decir, una lista con opciones informativas. Esta sección contiene la opción de “Acerca de”. Figura 4.3-20Sección de Otros Fuente: Autoría Propia 58 4.3.3.4.1 Sección “Opciones Generales” La vista de Opciones Generales permite al usuario configurar parámetros asociados a las alertas visuales y auditivas y al tiempo de sincronización de la aplicación con iCloud. A continuación se describirán la lista de parámetros que, esta vista, permite configurar. 4.3.3.4.1.1 Alertas Esta sección permite agregar tipos de alerta. Estos tipos de alerta aparecerán en la vista de edición de servicio de modo que cada servicio tenga un tipo de alerta definido. Los tipos de alertas deben tener los siguientes datos registrados: Nombre Descripción No Disponible Sonido que se reproducirá en caso el servicio no se encuentre disponible. Diferente Sonido que se reproducirá en caso el porcentaje de similitud hallado por la plataforma web sea menor al establecido por el usuario Sin Internet Sonido que se reproducirá en caso la aplicación verifique que no cuenta con una conexión a internet y que, por lo tanto, no pueda verificar los servicios. Tabla 17Alertas Generales 4.3.3.4.2 Conexión con el servidor La celda conexión con el servidor mostrará un estado que permitirá saber si es que la aplicación se encuentra sincronizada con el servidor correctamente. 4.3.3.4.3 Sección “Acerca de” El menú “Acerca de la aplicación” contendrá información de la aplicación, es decir, de la versión y del proyecto. Además, contendrá información de las herramientas usadas en la elaboración de la aplicación. 4.4 Pruebas de la aplicación 4.4.1 Introducción Para el plan de pruebas de este capítulo se realizará cada acción ubicado en los requisitos de modo que se verifique que la aplicación cumpla con cada uno de los requisitos propuestos. 59 4.4.2 Plan de Pruebas N° Funcionalidad Resultado 1 La aplicación permitirá añadir servicios web Exitoso 2 La aplicación permitirá modificar servicios web Exitoso 3 La aplicación permitirá eliminar servicios web Exitoso 4 La aplicación permitirá añadir páginas web Exitoso 5 La aplicación permitirá modificar páginas web Exitoso 6 La aplicación permitirá eliminar páginas web Exitoso 7 La aplicación permitirá añadir servicios FTP Exitoso 8 La aplicación permitirá editar servicios FTP Exitoso 9 La aplicación permitirá eliminar servicios FTP Exitoso 10 La aplicación mostrará los servicios agrupados por su tipo. Exitoso Tabla 18Plan de Pruebas por Funcionalidad I N° Funcionalidad Resultado 1 La aplicación mostrará una notificación en la barra de alertas del sistema operativo. Exitoso 2 La aplicación mostrará la cantidad de errores encontrados en el logo de la aplicación hasta que los errores hayan sido vistos por el usuario. Exitoso 3 La aplicación emitirá una alerta cuando encuentre algún error en alguno de los servicios. Exitoso 4 La aplicación permitirá configurar sonidos diferentes para cada servicio. Exitoso 5 La aplicación permitirá configurar sonidos diferentes para cada tipo de error. Exitoso Tabla 19Plan de Pruebas por Funcionalidad III N° Funcionalidad Resultado 1 La aplicación mostrará una notificación en la barra de alertas del sistema operativo. Exitoso 2 La aplicación mostrará la cantidad de errores encontrados en el logo de la aplicación hasta que los errores hayan sido vistos por el usuario. Exitoso 3 La aplicación emitirá una alerta cuando encuentre algún error en alguno de los servicios. Exitoso 4 La aplicación permitirá configurar sonidos diferentes para cada servicio. Exitoso 60 5 La aplicación permitirá configurar sonidos diferentes para cada tipo de error. Exitoso Tabla 20Plan de Pruebas por Funcionalidad IV N° Funcionalidad Resultado 1 La aplicación vendrá pre-configurada con servicios que sean de utilidad para verificar la calidad de conexión. Estos servicios serán Google DNS, Open DNS, Telefónica DNS. Exitoso 2 La aplicación permitirá modificar los servicios que serán de utilidad para verificar la calidad de conexión. Exitoso Tabla 21Plan de Pruebas por Funcionalidad V 61 CAPÍTULO 5 5.1 Observaciones Durante el desarrollo de la aplicación se identificaron las siguientes observaciones  El monitoreo de páginas web se dará con el código fuente del archivo; esto permite monitorear páginas dinámicas sin ningún problema.  La carga de trabajo la realizará la aplicación del servidor, por lo tanto, el consumo de batería y de internet utilizada por la aplicación será en función del acceso a la misma, es decir, no se consumirán datos mientras la aplicación no se encuentre abierta.  La aplicación de servidores monitoreará a todos los servicios a la vez, sin identificar el usuario al que pertenece el servicio con el fin de reutilizar los hilos que realizan la verificación.  La cantidad de usuarios y de servicios que la aplicación puede monitorear dependerá exclusivamente de la potencia de servidor donde se ejecute la aplicación web. 62 5.2 Conclusiones A partir de los resultados obtenidos luego del diseño de la aplicación se obtienen las siguientes conclusiones: Se logró desarrollar una aplicación móvil que permita monitorear servicios de forma dinámica. La estructura utilizada permite que el usuario pueda en cada pestaña desarrollar una actividad específica, donde la primera pestaña “Servicios” permite agregar, eliminar y editar servicios web, páginas web y servicios ftp; la pestaña “Estadísticas” permite al usuario verificar la información que ha sido obtenida producto del monitoreo del servicio tanto en disponibilidad como en contenido; finalmente, la pestaña Se logró desarrollar una aplicación web que permita alimentar la aplicación móvil y que pueda monitorear los servicios web en paralelo. Asimismo, se logró que la aplicación web permita controlar los recursos utilizados del servidor debido a que permite modificar la cantidad de hilos utilizada para cada tarea de monitoreo. Finalmente, se logró desarrollar una aplicación web que permita alimentar aplicaciones en distintas plataformas (Web, Android, iOS, etc) debido a la universalidad de los servicios web y al dinamismo de las herramientas utilizadas. Se logró implementar una aplicación móvil intuitiva, de tal modo que pueda ser utilizado por cualquier persona con conocimientos básicos de informática. 63 5.3 Recomendaciones Las recomendaciones dadas son: - El monitor de servicios desarrollado permite el monitoreo de servicios web en formato JSON, sin embargo, aún existen muchas aplicaciones que utilizan el formato XML. Se recomienda ampliar el alcance para que la aplicación permita monitorear los servicios web en este formato. - La aplicación móvil desarrollada está disponible solo para dispositivos en iOS, sin embargo, existen otras plataformas como Android o Windows en donde la aplicación podría ser desarrollada con el fin de ampliar el público objetivo. Se recomienda desarrollar la aplicación móvil en otras plataformas. - Registrar la aplicación en la tienda de Apple con el fin de que la herramienta pueda ser disponible para la libre descarga. - Habilitar la aplicación para que soporte el monitoreo de servicios por IP en servidores que alojan más de un servicio. - Habilitar la migración del usuario de un dispositivo a otro. 64 Referencias bibliográficas Alvarenga Sandoval, R. A. (2008). Guia de Referencia Técnica para la Implementación de un cuarto de equipos y servidor Web basado en plataforma Microsoft Windows, orientado a impartir cursos virtuales en la Web, facultad de ingeniería de la universidad de Don Bosco. Apache. (2014). Apache. Retrieved July 03, 2014, from http://www.apache.org/ Apple inc. (2014). Apple Developer. Retrieved from https://developer.apple.com Bartoli, a., Davanzo, G., & Medvet, E. (2009). The Reaction Time to Web Site Defacements. IEEE Internet Computing, 13(4). Bo, Y., & Xueyuan, W. (2011). Selection of parameter for SYN flood source-end detection. Proceedings of 2011 International Conference on Electronic & Mechanical Engineering and Information Technology, 1, 106–109. Britt, D. T., & Matthews, C. (2006). TCP / IP Tutorial and Technical Overview. IBM, 1(December 2006), 1004. Retrieved from http://pages.cpsc.ucalgary.ca/~ijirasek/courses/cpsc441/tcpip_2001.ps Chilkat Software, I. (2014a). Chilkat FTP. Retrieved June 25, 2014, from http://www.chilkatsoft.com/ftp-objc.asp Chilkat Software, I. (2014b). Chilkat HTML Conversion. Retrieved June 25, 2014, from http://www.chilkatsoft.com/html-objc.asp Davanzo, G., Medvet, E., & Bartoli, a. (2011). Anomaly detection techniques for a web defacement monitoring service. Expert Systems with Applications, 38(10), 12521– 12530. doi:10.1016/j.eswa.2011.04.038 FileZilla. (2014). FileZilla. Retrieved July 02, 2014, from https://filezilla-project.org/ Google. (2014). DNS Google Server. Retrieved June 25, 2014, from https://developers.google.com/speed/public-dns/ Heron, S. (2010). Denial of service: Motivations and trends. Network Security, 2010(5), 10–12. doi:10.1016/S1353-4858(10)70056-8 65 Hugo Haas, W., & Allen Brown, M. (until J. 2002). (2004). Web Services Glossary. Retrieved from http://www.w3.org/TR/2004/NOTE-ws-gloss- 20040211/#webservice IIS. (2014). IIS. Retrieved July 03, 2014, from http://www.iis.net/ Kanti, T. (2011). Implementing a Web Browser with Web Defacement Detection Techniques, 1(7), 307–310. Martinello, M., Kaâniche, M., & Kanoun, K. (2005). Web service availability—impact of error recovery and traffic model. Reliability Engineering & System Safety, 89(1), 6–16. doi:10.1016/j.ress.2004.08.003 Mendoza, S. C., & López, J. R. (2008). Rediseño de la infraestructura del proveedor de servicios de internet ONNET SA para la optimización del servicio en el Distrito Metropolitano de Quito. Retrieved from http://bibdigital.epn.edu.ec/handle/15000/4230 Mirkovic, J., Martin, J., & Reiher, P. (2004). A Taxonomy of DDoS Attacks and DDoS Defense Mechanisms 3 . Taxonomy of DDoS Attacks, 1–12. Movistar, T. (2014). DNS Movistar Perú. Retrieved June 25, 2014, from http://www.movistar.com.pe/internet/servicios-adicionales/dominios NTI. (2006). Protecting Your Server Room from Environmental Threats. OpenDNS. (2014). Open DNS. Retrieved July 03, 2014, from https://www.opendns.com Papazoglou, M. P. (2005). Web Services Management : A Survey, (December), 58–64. Radha, B., & Selvakumar, S. (2011). DEEPAV2: A DNS monitor tool for prevention of public IP DNS rebinding attack. Advances in Recent Technologies in …. Retrieved from http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=6193543 Rana, D. S. (2012). A Study and Detection of TCP SYN Flood Attacks with IP spoofing and its Mitigations, 3(August), 1476–1480. Sandström, H. (2001). A survey of the denial of service problem. Retrieved from http://www.sm.luth.se/gradschool/pdf/Papers/p03.pdf 66 Scott, R., & Thompson, M. (2014). AFNetworking Documentation. Retrieved June 26, 2014, from http://cocoadocs.org/docsets/AFNetworking/2.3.1/ The Cabinet Officer, I. (2011). ITIL Service Operation 2011 (2011th ed., pp. 13–14). United Kingdom: The Stationery Office. TouchCode. (2014). Touch JSON. Retrieved June 25, 2014, from https://github.com/TouchCode/TouchJSON/blob/master/README.markdown Zhang, X., & Zhang, Z. (2010). Data center integrated monitoring based on performance monitoring of server and application system. 2010 International Conference on Computer and Communication Technologies in Agriculture Engineering, 491–493. doi:10.1109/CCTAE.2010.5544335 Zhu, Q., Yizhi, Z., & Chuiyi, X. I. E. (2011). Research and Survey of Low-rate Denial of Service Attacks, 1195–1198.