Blog

Centralizado de eventos de Windows con NXLog

nxlog.png

En artículos anteriores tratamos el tema de cómo auditar eventos en diferentes sistemas, y en el caso de Windows explicamos cómo hacer que estos quedasen reflejados en el Visor de Eventos. Ahora bien, como también hemos comentado en otras ocasiones, lo ideal es que todo log se envíe a un sistema centralizado para el visionado de los mismos en un único lugar, y para ello hay que hacer uso de un software específico para este fin.

En entornos Windows tenemos multitud de posibilidades, una de ellas es el uso del software NXLog, que es el que vamos a tratar en el artículo de hoy y cuyo funcionamiento veremos con un pequeño ejemplo.

¿Qué es NXLog?

NXLog es una herramienta de recolección y centralizado de logs que permite además tratar la información recogida para poder aplicar sobre ella diferentes filtros o conversiones.

Cabe destacar que, pese a que nosotros nos vamos a centrar en su uso en Windows, es una herramienta multiplataforma que también funciona en sistemas Linux y macOS.

Cuenta con una edición Enterprise y una edición Community, cuyas diferencias quedan explicadas en esta tabla comparativa en su web oficial.

NXLog puede recoger logs de diversas fuentes como puede ser desde ficheros, bases de datos, o el Visor de eventos de Windows, el cual es el punto que vamos a cubrir en este artículo.

Instalación y funcionamiento básico

Independientemente de que utilicéis la edición Enterprise o la Community, la instalación es bien sencilla, pues solamente tenéis que ejecutar el archivo .msi e ir siguiendo los pasos.
Una vez instalado, el agente se encontrará corriendo como un servicio de Windows:

administrador_tareas_nxlog.png

Por defecto y si no lo habéis cambiado durante la instalación, la herramienta se instalará en C:\Archivos de programa\nxlog. En este directorio encontraremos una serie de subdirectorios, de entre los cuales destacamos: 

  • cert : Aquí depositaremos los certificados que sean requeridos cuando el envío de los logs se haga a un host mediante SSL.
  • conf : Como su nombre indica, aquí se encuentra el fichero de configuración, el cual veremos más en profundidad un poco más adelante.
  • modules : En este directorio es donde podemos instalar diferentes módulos para añadir más funcionalidades a la herramienta. Por defecto ya trae algunos preinstalados, y de hecho son suficientes para lo que queremos cubrir en este artículo.

Vamos a lo que nos interesa y es cómo configurar el servicio.

Para ello nos tenemos que desplazar al subdirectorio “conf” antes mencionado y editar el fichero nxlog.conf. Este fichero se estructura en tres bloques principales (Input, Output y Route), cuyo funcionamiento os resultará familiar si ya habéis trabajado con Logstash u otras herramientas similares. Cada uno de estos bloques se puede nombrar para tenerlo identificado y referenciarlo en el bloque final Route.

Por tanto la estructura de un fichero de configuración de NXLog podría ser algo como la siguiente:

estructura_fichero_configuracion_nxlog_0.png

En el bloque Input es donde indicaremos todo aquello referente a dónde y cómo se obtienen los logs (si se recogen de un fichero o de una base de datos, si hay que transformarlos o filtrarlos antes de ser enviados, etc).

En el bloque Output es donde se indica el destino al cual queremos enviar aquello que hemos recogido.

Pero para que se produzca este flujo envío-recogida tiene que haber un enlace entre Inputs y Outputs, es decir, algo que le diga a la herramienta: “lo que recojas en el Input 1 envíalo al Output 3, lo que recojas del Input 2 envíalo al Output 1, etc.”. Y esta es la finalidad del último bloque Route.

Pero como mejor se entiende todo esto es con un ejemplo práctico, así que vamos con ello en el siguiente apartado.

Cómo enviar logs del Visor de Eventos con NXLog

Para este ejemplo vamos a suponer que queremos recoger aquellas trazas del Visor de eventos que se correspondan con inicios y cierres de sesión de usuarios, por ejemplo, esta sería la de un inicio de sesión:

trazas_visor_eventos.png

Estos eventos se almacenan en el registro “Seguridad” y tienen los IDs 4624 y 4634 respectivamente, por lo que tendremos que indicar a NXLog que filtre únicamente esos eventos.

Este sería el aspecto del bloque Input del fichero nxlog.conf para este caso, al cual le hemos dado el nombre “eventviewer”:

bloque_input_fichero_nxlog.conf.png

A destacar:

  • Module im_msvistalog : indicamos que se haga uso del “input module” (im) llamado “msvistalog”, que es un módulo que viene preinstalado y que sirve para leer del Visor de eventos.
  • Select Path=”Security” : indicamos que tiene que leer concretamente del registro “Security” dentro del Visor de eventos.
  • System[(EventID=’4624’ or EventID=’4634’’)] : filtramos para que únicamente recoja los eventos con ID 4624 o 4634 (inicios y cierres de sesión).

Ahora tenemos que definir el bloque Output. Para este ejemplo vamos a suponer que las trazas las queremos enviar a un host remoto que requiere SSL. Este sería el aspecto del bloque, al cual le hemos dado el nombre “midestino”:

bloque_output_fichero_nxlog.conf.png

A destacar:

  • Module om_ssl : indicamos que se haga uso del “output module” (om) llamado “ssl”, que es un módulo que viene preinstalado y permite el envío de trazas usando este protocolo.
  • ‘Host midestino.com’ y ‘Port 443’ : el host remoto al que enviaremos los logs y el puerto indicado.
  • ‘CAFile’, ‘CertFile’ y ‘CertKeyFile’ : los certificados necesarios a utilizar en la conexión. En este caso usamos el directorio por defecto “cert”, pero es configurable.

Y finalmente tenemos que hacer la asociación entre la recogida y el envío, es decir, tenemos que indicarle a NXLog que lo que recoja gracias al bloque Input “eventviewer” lo envíe al destino indicado en el bloque Output “midestino”. Sencillamente añadimos lo siguiente en el bloque Route:

bloque_route_fichero_nxlog.conf.png

Y con esto en un principio es suficiente para lograr nuestro objetivo.

Recordad que las posibilidades son muchas y para cada una, la solución planteada será diferente. Por ejemplo, para recoger las trazas de un fichero en lugar de recogerlas del Visor de Eventos, se hará uso del módulo im_file en lugar del im_msvistalog. Así mismo también puede que queramos enviar las trazas a un bucket de Amazon S3, para lo cual existe el módulo om_amazons3.

Desde aquí os invitamos a explorar la documentación para hallar la solución y el módulo a usar para vuestro caso concreto, y esperamos que todo lo explicado anteriormente os sirva como pincelada para entender el funcionamiento de esta útil herramienta.

 

Newsletter de STR Sistemas

Suscríbete a nuestra newsletter para recibir contenido interesante del mundo DevOps y artículos escritos por nuestros técnicos

¡Usamos cookies propias y de terceros para mejorar tu experiencia en esta web! Si sigues navegando, consientes y aceptas estas cookies en tu ordenador, móvil o tablet.

Más información sobre las cookies y cómo cambiar su configuración en tu navegador aquí.

x