Visualizar peticiones a Apache/NGINX en RealTime

[notice]Desde que este post fue creado han pasado 8 años así que puede que hayan cambiado cosas.[/notice]

Cuando tenemos una o varias paginas alojadas en un servidor web a veces nos puede interesar visualizar las peticiones que este recibe, ya sea para ver las peticiones, para ver a que páginas se accede. Esto normalmente lo podemos ver con herramientas como Google Analytics, que ademas nos suele dar bastante informacion sobre el dispositivo, el pais, etc…

 

Visualizando logs desde la terminal de Linux

Si lo que nos interesa es ver las peticiones a nuestro servidor apache podemos usar el log generado por Apache. Para ello usaremos el comando (suponemos que el log se llama other_vhosts_access.log)

cat /var/log/apache2/other_vhosts_access.log

cat_logapache

 

Con este comando podremos ver las peticiones que han llegado a nuestro servidor apache (en este caso al virtualhost driverlandia.com), pero se hace dificil agrupar o ver la informacion que nos interesa. Por ejemplo si queremos las peticiones 403 podriamos hacer

cat /var/log/apache2/other_vhosts_access.log | grep 403

 

Ahora ya tenemos las peticiones 403 filtradas, si queremos filtrar mas cosas, basta con mirar el man del comando grep y ver que nos permite realizar. Pero y si las queremos ver en tiempo real, poder verlas tal y como se realiza la peticion y se registra en el log generado por apache? Cambiaremos el comando cat por el comando tail -f (seguiremos aplicando el filtro)

tail -f /var/log/apache2/other_vhosts_access.log | grep 403

 

Si os interesa sin filtro, tan solo quitar el grep

tail -f /var/log/apache2/other_vhosts_access.log

log_filtergrep

Si queremos verlo de un servidor remoto, pues bastará con conectarnos por SSH / Telnet al servidor y ejecutar el mismo comando.

Pero y si nos interesa ver el log del apache de forma grafica?

 

Logstalgia – O como convertir el log de Apache en un video de Pong

Pues podemos usar una herramienta llamada Logstalgia.

 

Para instalar logstalgia, tanto en Debian 8 como en Ubuntu 15.10 ha sido tan solo necesario los siguientes comandos (también esta disponible para Windows, desde su página web.)

sudo apt-get update
sudo apt-get install logstalgia

 

Cada petición es representada por una pelotita, si la petición es respondida por nuestro servidor web, veremos como la pelotita rebota. Si la petición no ha sido tratada o ha sido erronea no las respondera. Tal y como se puede ver en el video por un lado vemos la IP o dominio origen que ha realizado la petición. En el otro lado vemos los recursos que han sido solicitados. De una forma facil podemos ver si una IP nos realiza muchas peticiones por ejemplo al formulario de login de nuestra web.

 

Cuando iniciamos Logstalgia nos pide que le pasemos un archivo de log, una vez lo hayamos hecho, entonces comenzará a mostrarse la partida de pong.

logstalgia /var/log/apache2/other_vhosts_access.log

 

El problema es que este log son acciones ya pasadas, una vez haya terminado de leer el log, logstalgia se cerrará. Si queremos verlo en tiempo real? Pues podemos hacerlo con

tail -f /var/log/apache2/other_vhosts_access.log | logstalgia --sync

 

Con tail -f mostramos peticiones en tiempo real tal y como lo hemos explicado antes. Al pasarselo mediante pipe a logstalgia y usar el parametro –sync, le estamos diciendo a logstalgia que lea de lo que le pasa tail y con –sync le decimos que ignore las entradas anteriores. Al no cerrarse el tail -f , logstalgia no se cerrará por lo que podremos ver en tiempo real y graficamente las peticiones a nuestro servidor web.

Ahora ya podemos poner la pantalla de nuestro servidor web en una zona visible de nuestra oficina y visualizar de forma rapida y en tiempo real si estamos recibiendo un ataque o demasiadas peticiones a un recurso. Pero que pasa si el servidor web, esta contratado en una empresa externa y por lo tanto no tenemos acceso fisico a la maquina, estando esta muy lejos de nosotros.

 

Pues podemos añadir un poco mas a nuestro comando y obtendremos el resultado esperado.

ssh usuario@ipnuestroservidor tail -f /var/log/apache2/other_vhosts_access.log | logstalgia --sync

 

Ahora ya vemos en tiempo real en nuestro ordenador local las peticiones que se realizan a nuestro servidor web.

logstalgia_realtime

 

 

Aquí os dejo un video de un ataque DDoS a el foro de elhacker.net

 

 

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.