Una de las informaciones menos apreciadas de las que el desarrollador web tiene a la mano, son los archivos de registro de sucesos del servicio HTTP. Estos normalmente eran considerados la única fuente de información estadística a mano. En ellos los usuarios van dejando su huella cada vez que solicitan un recurso en nuestro servidor, bien sea Apache, IIS, WebSphere o cualquier otro.
La razón por la que han sido dejando algo de lado, es que si bien su información es valiosa, ya no son tan útiles para fines estadísticos debido al gran éxito de Google Analytics el cual permite hacer seguimiento de todos los movimientos de páginas en las que se haya agregado un pequeño "script" al final de las mismas, y para ser realmente honesto sus reportes y estadísticas son impresionantes.
Pero a nivel de seguridad Google Analytics nos sirve de poco o casi nada, ya que no lleva control más que de las páginas en las que se agrega el script y no así de los recursos como imágenes, archivos de flash y archivos de código Javascript. Además si la página en ejecución genera un error 500 de ejecución en el servidor y no se completa, tampoco será de utilidad ya que el servidor no habrá entregado la parte final de la página (desde el error en adelante) y el archivo de control de Google Analytics se encuentra siempre al final del código de la página. Tampoco detectará un escaneo de vulnerabilidades no autorizado, debido a que las maquinarias de escaneo no ejecutan los scripts de las páginas que escanean...
Sin embargo dejando esta maravillosa solución estadística para el equipo de mercadeo, por efectos de seguridad es necesario retomar el control de los archivos de sucesos del servidor HTTP. El mejor lugar para detectar un intento de escaneo de vulnerabilidades no autorizado es precisamente allí. Sin embargo, hallar la información en estos enormes archivos de texto, no es simple debido a que cada solicitud hecha al servidor HTTP generará una línea, y una página junto con sus diferentes componentes podría generar hasta 80 líneas diferentes por lo que si la página es solicitada 1000 veces, estaríamos hablando de 80.000 líneas o "hits". En un ataque de DoS (Denial of Service) comunmente podemos llegar a recibir esa cantidad de solicitudes por minuto, por lo que capturar las direcciones IP de los equipos atacantes puede ser un trabajo bastante duro.
Escarbar en un archivo de estas magnitudes sin una herramienta apropiada es difícil. Pero no hay que alarmarse, probablemente usted ya haya oido hablar de AWstats 6.95 en su última versión estable en el momento de escribir este artículo. AWstats es una solución Open Source, y por tanto la mayoría de los proveedores de alojamiento compartido la ofrecen en sus soluciones en sus paneles de control. Es 100% configurable al tipo de servidor HTTP que se esté manejando y permite obtener una serie de reportes muy importantes acerca de las peticiones recibidas.
Existen soluciones mucho más sofisticadas como Urchin 7.0. Esta solución es la matriz de código sobre la que se basa Google Analytics y al estar instalado en un servidor y analizar los archivos de registro de sucesos (a los que no puede acceder Analytics) podrá reportar muchos más detalles. En realidad es una herramienta impresionante, pero no es gratis.
Sin embargo, ni AWstats ni URCHIN 7 ni siquiera los archivos de registro HTTP pueden servirnos para rastrear los errores de ejecución en nuestra aplicación, ya que si bien los registros de sucesos HTTP pueden decirnos en qué página y que IP generó el error, no pueden darnos detalle del error en sí y datos como el número de línea, descripción del error y otros detalles muy importantes para corregir el problema.
Para poder manejar este problema Apache tiene un registro independiente que se encuentra en /var/log/apache2/error_log (o error.log) en donde podremos detectar los errores que produce la aplicación sin necesidad de esperar a que algún usuario los reporte. En el caso de IIS también existe una solución, pero los errores 500 del servidor HTTP son considerados errores de sistema y es necesario recurrir al visor de sucesos (Herramientas Administrativas/Administración de Equipos/Visor de sucesos).
En IIS el manejo del error 500 depende de la capacidad de poder acceder a los archivos de registros de error, por lo que la mejor solución para evitar problemas especialmente en entornos de alojamiento compartido, es generar nuestra propia página de error 500, con la que primordialmente ocultaremos la información que no deseamos ofrecer al visitante, y la registraremos a gusto en un archivo de sucesos propio.
En este artículo muy interesante explica el tratamiento de los errores 500 de diferentes formas para aplicaciones en ASP.NET. Para aquellos que trabajen sobre Apache este otro artículo puede explicarles detalladamente el proceso de manejo de páginas de error personalizadas.
Por otro lado siempre es importante aclarar que el uso de páginas de error personalizadas es muy importante, inclusive para el manejo de otro tipo de errores. Por ejemplo: Los atacantes pueden obtener mucha información detectando errores 404 y 403, con la mezcla de los cuales y una buena dosis de ingenio acerca de los nombres comúnmente utilizados para nombrar directorios y páginas, logran obtener una visión bastante acertada del arbol de directorios de nuestra aplicación.
Hasta la próxima.
Este blog está dirigido a todos los programadores y desarrolladores en general, en él encontrarán consejos útiles en las respectivas áreas del desarrollo de aplicaciones, especialmente de Aplicaciones y Soluciones Web sobre diferentes entornos y plataformas móviles como Windows Phone y Android.
23 de noviembre de 2010
La importancia de manejar los archivos de registro de sucesos HTTP
Suscribirse a:
Comentarios de la entrada (Atom)
Entradas populares
-
Es imposible pensar que Google podía faltar a la cita que tiene con todos los programadores a nivel mundial en lo referente a publicar algún...
-
Es importante cuando se habla de amenazas en aplicaciones web y otras, establecer un sistema de cálculo estándar que permita a los interesad...
-
Volvemos a mencionar en este artículo la importancia del OWASP (Open Web Application Security Project) y en especial esta vez mencionaremos...
-
Una de las amenazas más peligrosas del primer tipo de los OWASP top 10 de 2010, es decir de las amenazas que se refieren a inyecciones de có...
-
Estuve probando la herramienta que desarrolló Google con el fin de realizar escaneos de seguridad a nuestras aplicaciones web. Su nombre es ...
-
Uno de los errores más comunes de seguridad de los programadores de Asp.NET que utilizan "web forms" en sus aplicaciones, es cree...
-
¿Que te parecería cargar solamente código javascript en una página para aquellas funciones que un usuario decida realizar y no para todas la...
-
Recientemente llegó a mis manos un libro muy interesante llamado " Beginnig ASP.NET Security " de la serie de libros de WROX P...
-
Si bien las inyecciones LDAP no son muy comunes, pueden ser una de las más peligrosas vulnerabilidades en la web. Para empezar necesitamos...
-
Anteriormente hemos mencionado la importancia de la desinfección de parámetros como herramienta fundamental en el combate de las vulnerabi...
No hay comentarios.:
Publicar un comentario