Análisis del tráfico en servidor web

16 de Diciembre de 2022 - ed. hace: 11 meses, 3 semanas


Gestión de logs Nginx archivados, para análisis del tráfico en servidor.


Al momento de implementar Nginx para servir mi propio respositorio Git, usando Gitea como frontend, noté que la mayoría de las "visitas" eran intentos de inicio de sesión en el servidor ssh, y a un inexistente panel de administración de Wordpress o Php, además de búsquedas de vulnerabilidades.

Esto me llevó a mejorar la seguridad del servidor, ajustar las reglas del firewall Ufw, e implementar un sistema de baneos con Fail2Ban, entre otras mitigaciones.

Luego de estas mejoras, la cantidad de amenazas disminuyó considerablemente, pero aún quedaba trabajo por hacer, ya que los "ataques" continuaban en cierta medida y en ocaciones afectaban la velocidad de respuesta del servidor.

La tediosa tarea de filtrar datos de los registros de Nginx me llevó a crear un script de Bash (buscalog.sh) para simplificar esta tarea y analizar otros registros del servidor. Durante un tiempo, esto me permitió identificar rápidamente los comportamientos no deseados y aplicar baneos, pero aún necesitaba más información para identificar y mitigar los ataques restantes. Además de incluir cualquier otro log para su análisis.


Iplocate

Fue entonces cuando nació la idea Iplocate, una aplicación en Python que procesa los registros de Nginx y guarda los datos de las consultas en una base de datos SQLite3, consulta una API de geolocalización y registra la actividad del servidor. Con esta información, pude detectar los países con más visitas infructuosas y filtrarlos. Configuré Nginx para procesar la mayoría de estas solicitudes con el código 444, lo que permite al servidor cerrar la comunicación sin enviar una respuesta al cliente, lo que es comúnmente utilizado para denegar solicitudes maliciosas o malformadas.

La imagen del encabezado muestra una representación real del tráfico del servidor al momento de editar esta entrada. Las marcas verdes representan una respuesta 200 del servidor, y las marcas rojas 404 o 444, entre otras.

En este video puedes ver una demostración de algunas opciones de la aplicación, paso a paso. En la práctica, solo es necesario ejecutar iploc --all para procesar los registros, poblar la base de datos, consultar API y generar los mapas de visita.





  • Categoría(s):
  • Desarrollo

  • Volver al blog