ATA 735 ¿Quien Visita Tu Servidor? Descubre BOTS y HACKERS que Te Roban Recursos
Si tienes un servidor Linux expuesto a Internet, ya sea un VPS o una Raspberry Pi alojando tus servicios Docker, este es un episodio que no te puedes saltar. Detrás de ese proxy inverso (Traefik es mi elección), se esconde un tráfico que rara vez revisamos, y te aseguro que no todo el mundo tiene buenas intenciones.Tras un incidente reciente que me obligó a abrir mi servidor al mundo (y no solo a España, como lo tenía restringido inicialmente), la cantidad de visitantes desconocidos y peticiones curiosas que encontré me hizo poner manos a la obra. No es solo un tema de seguridad; es de recursos.Cada visita cuesta. Sí, has oído bien. Cada interacción con tu servidor requiere un gasto de CPU y memoria RAM. Los bots y scanners que buscan vulnerabilidades o hacen peticiones inútiles están consumiendo silenciosamente la capacidad de tu sistema, dejando menos para tus visitas de calidad (las que realmente quieres). Es esencial saber quién te visita, dónde va, y con qué intenciones, para poder actuar y liberar esos recursos.Mi objetivo, como siempre en atareao con Linux, era encontrar una solución de código abierto que fuera sencilla de implementar y, crucialmente, que no se llevara por delante todos los recursos de mi propio servidor.El punto de partida de la investigación es siempre el access.log de Traefik, que es el registro fundamental de todas las peticiones.Estuve probando distintas combinaciones, incluyendo algunas pesadas y complejas, como:Vector, Prometheus, Grafana y Loki.Vector, Victorialogs, Grafana y Loki.Si bien estas son soluciones potentes, su complejidad y el alto consumo de recursos me hicieron descartarlas. La solución no debe ser un problema de rendimiento en sí misma.Finalmente, di con la combinación que es simple, eficiente y con la que estoy realmente enamorado por su facilidad de uso e implementación.Vector es la herramienta clave para recopilar, transformar y enrutar todos tus logs, métricas y trazas. Es de código abierto, hasta 10 veces más rápido que cualquier alternativa y es lo que me permite un enriquecimiento de datos sin precedentes.En este episodio aprenderás cómo:Configurar el compose.yml de Vector en tu entorno Docker.Utilizar las Transforms de Vector para parsear los logs de Traefik.Integrar la base de datos GeoIP (GeoLite2-City.mmdb) para geolocalizar la IP de procedencia de cada petición.Enrutar los logs enriquecidos a la base de datos de destino.OpenObserve (O2) es la plataforma de observabilidad nativa de la nube que unifica logs, métricas y trazas en una única interfaz. Es la alternativa que he adoptado a soluciones como ElasticSearch y se ha convertido en una herramienta imprescindible en mi día a día.Es increíblemente sencillo de instalar y configurar (lo tienes funcionando en minutos).Es el lugar donde guardo y analizo toda la información de tráfico y rendimiento de mi infraestructura Docker y Traefik.Te proporciono el código compose.yml para que puedas desplegar esta base de datos en cuestión de minutos y empezar a interactuar con los datos geolocalizados que envía Vector.Además de la solución Vector/OpenObserve, te presento un interesante descubrimiento: el Traefik Log Dashboard. Este proyecto de código abierto (backend en Go, frontend en React) te permite tener información en tiempo real de los logs de Traefik con geolocalización incluida.Monitorización en tiempo real vía WebSocket.Soporte para trazas en tiempo real (OpenTelemetry OTLP).Analíticas completas de tiempos de respuesta, códigos de estado y tasas de solicitud.Más información y enlaces en las notas del episodio🌐 Aquí lo puedes encontrar todo 👉 https://atareao.es✈️ Telegram (el grupo) 👉 https://t.me/atareao_con_linux✈️ Telegram (el canal) 👉 https://t.me/canal_atareao🦣 Mastodon 👉 https://mastodon.social/@atareao🐦 Twitter 👉 https://twitter.com/atareao🐙 GitHub 👉 https://github.com/atareao