Auditoría de logon de los usuarios del Directorio Activo con Elasticsearch y Grafana

Algo muy común que nos suelen pedir es la posibilidad de conocer los logons y demás información interesante que pueda generar un usuario. En este post veremos cómo visualizar datos tan interesantes como: cuándo se han logueado, cuándo han cerrado la sesión, intentos de inicio de sesión incorrectos, cuándo se ha bloqueado un equipo, o desbloqueado, o cuándo le ha saltado el salvapantallas o lo han desactivado…

 

Realmente este tipo de información como sabemos queda registrada en el Visor de Sucesos de los equipos, algunos registros nos los podrá proporcionar los controladores de dominio, y otros registros los propios equipos donde trabajan los usuarios.

El ejemplo que haremos en este post será lo dicho, recopilar los eventos de los equipos, de manera centralizada los almacenaremos en Elasticsearch y luego con Grafana haremos las consultas que más nos interesen basándonos en algún ID de evento. Podremos ver los datos en tiempo real, o directamente buscar en un periodo de tiempo, o directamente preguntar por un usuario en particular. Luego ya los visualizamos en gráfica, tabla, quesito o como nos de la gana, y si queremos generamos informes en PDF y los mandamos vía mail a quién le interese.

Así que obviamente primero necesitaremos una máquina con Elasticsearch funcionando, y luego instalaremos Winlogbeat en los controladores de dominio. En el visor de sucesos de los DCs quedaría registrado cuando un usuario se loguea y los inicios de sesión incorrectos. Y si queremos datos de cuándo han cerrado sesión, o lo que comentábamos al inicio de cuando un equipo se bloquea por un timeout, o cuándo se desbloquea, lo mismo con el salvapantallas, que si cuándo salta el screensaver o cuando se desactiva. Ahí si necesitaríamos instalar Winlogbeat en el equipo cliente.

Al final como vamos entendiendo, se recopilan los eventos del visor de sucesos en Elasticsearch y luego consultaremos por los idenficadores que sea, en este post veremos únicamente estos ejemplos, ¡pero hay muchas otras posibilidades más!

Por resumir, la parte de configuración de cada Winlogbeat, recordar que podremos filtrar desde ahí directamente para traer todos los tipos de registros o sólo los que nos interesen, en este caso, lo que estamos hablando quedaría registrado en los eventos de ‘Seguridad’, así que nos quedaría nuestro winlogbeat.yaml más o menos así:

winlogbeat.event_logs:
- name: Security
  ignore_older: 72h
setup.kibana:
  host: "https://DIRECCION_IP_KIBANA:5601"
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["https://DIRECCION_IP_ELASTICSEARCH:9200"]
  username: "USUARIO"
  password: "CONTRASEÑA"

 

Una vez tengamos Elasticsearch alimentado y hayamos creado el DataSource desde Grafana contra este índice podremos comenzar a poder hacer las visualizaciones que nos interesen. Yo haré lo más básico de todo, una Tabla, una tabla donde veremos en formato listado los campos que nos interesen y filtrando por el ID de algún ID de Evento o Event ID.

 

Por ejemplo, para ver los cierres de sesión (cuándo alguién cierra la sesión de su usuario), haremos una query de tipo Lucene bien sencilla, con poner «event.code: 4647» nos basta. Para saber qué ID hace qué, dejaré abajo del post un listado de los ID’s más interesantes con respecto este tema. Y lo mejor como siempre, será jugar desde Kibana a descubrir otro tipo de queries.

Total, que con un panel de tipo de Tabla, con la query, indicando que queremos en formato Raw el resultado, transformamos a formato JSON y seleccionamos los campos que queremos visualizar, además podremos renombrarlos o cambiar su formato. Fijaros en la imagen para resolver cualquier duda.

 

Entonces podremos crear tantos paneles como distinta información queramos visualizar, para ver los inicios de sesión con el ID 4624 lo tendremos o puede que con el 4768, depende de qué tipo de logon nos interese. Para los cierres de sesión podremos buscar por el ID 4647.

 

Si queremos ver los inicios de sesión incorrectos nos bastará con buscar el ID 4625.

 

Si queremos buscar los equipos cuando se bloquean, cuando se bloquea una sesión de usuario tendremos el ID de evento 4800 y para los desbloqueos filtraremos por el ID 4801.

 

Y lo mismo para el salvapantallas, si queremos saber cuándo ha saltado en un equipo, buscaremos el ID 4802 y en el caso de saber cuándo han desactivado el salvapantallas tendremos el ID 4803.

 

Por último pero no por ello menos importante, deberemos crear una GPO para poder habilitar 3 directivas, que permitan recopilar este tipo de información en los visores de eventos de los equipos, desde Configuración del equipo > Directivas > Configuración de Windows > Configuración de seguridad > Configuración de auditoría avanzada > Inicio y cierre de sesión:

  • Auditar cierre de sesión: Aciertos y errores
  • Auditar inicio de sesión: Aciertos y errores
  • Auditar otros eventos de inicio y cierre de sesión: Aciertos y errores

 

Os dejo un listado de eventos que quizá os puedan ser de utilidad:

Cambio en políticas de auditoría:
4719: Se ha cambiado la política de Auditoría del sistema.
4908: Se ha modificado la tabla de inicio de sesión de los grupos especiales.

Cambios en políticas de autenticación de auditoría
4706: Se ha creado una nueva confianza en un dominio.
4707: Se ha eliminado una confianza a un dominio.
4713: Se ha modificado la política de Kerberos.
4716: Se ha modificado la información del dominio de confianza.
4717: Se ha concedido acceso de seguridad del sistema a una cuenta.
4718: Se ha eliminado el acceso de seguridad del sistema a una cuenta.
4739: Se ha modificado una política del dominio.
4865: Se ha añadido una entrada de información de bosque de confianza.
4866: Se ha eliminado una entrada de información del bosque de confianza.
4867: Se ha modificado una entrada de información del bosque de confianza.
4706: Se ha creado una nueva confianza a un dominio.
4707: Se ha eliminado una confianza a un dominio.

Auditoría de gestión de cuentas de ordenador
4741: Se ha creado una cuenta de ordenador.
4742: Se ha modificado una cuenta de ordenador.
4743: Se ha eliminado una cuenta de ordenador.

Auditoría de la actividad de DPAPI
4692: Se ha intentado realizar una copia de seguridad de la llave maestra de protección de datos.
4693: Se ha intentado recuperar la llave maestra de protección de datos.
4695: Se ha intentado desproteger los datos protegidos auditables.

Auditoría del Servicio de Autenticación Kerberos
4768: Se ha solicitado un ticket de autenticación Kerberos (TGT)
4771: Falló la preautenticación de Kerberos
4772: Falló la solicitud de ticket de autenticación de Kerberos

Auditoría de la operación del ticket de servicio Kerberos
4769: Se ha solicitado un ticket de servicio Kerberos (TGS)
4770: Se ha renovado un ticket de servicio Kerberos

Auditoría de cierre de sesión
4634: Se ha cerrado la sesión de una cuenta de usuario.

Auditoría de inicio de sesión
4624: Una cuenta de usuario se ha logueado con éxito.
4625: Una cuenta de usuario no ha podido iniciar la sesión, credenciales inválidos.
4648: Se ha intentado iniciar una sesión con credenciales explícitas.

Auditoría de otros eventos de inicio de sesión de cuentas
4648: Se ha intentado iniciar una sesión con credenciales explícitas.
4649: Se ha detectado un ataque de repetición.
4800: La estación de trabajo está bloqueada.
4801: La estación de trabajo se ha desbloqueado.
5378: La delegación de credenciales solicitada no fue permitida por la política

Auditoría de otros eventos de acceso a objetos
4698: Se ha creado una tarea programada.
4699: Se ha eliminado una tarea programada.
4702: Se ha actualizado una tarea programada.

Creación de procesos de Auditoría
4688: Se ha creado un nuevo proceso.

Gestión de Grupos de Seguridad de Auditoría
4728: Se ha añadido un miembro a un grupo global de seguridad.
4729: Se ha eliminado un miembro de un grupo global de seguridad.
4732: Se ha añadido un miembro a un grupo local habilitado para la seguridad.
4733: Se ha eliminado un miembro de un grupo local habilitado para la seguridad.
4735: Se ha modificado un grupo local habilitado para la seguridad.
4737: Se ha modificado un grupo global habilitado para la seguridad.
4755: Se ha modificado un grupo universal habilitado para la seguridad.
4756: Se ha añadido un miembro a un grupo universal habilitado para la seguridad.
4757: Se ha eliminado un miembro de un grupo universal habilitado para la seguridad.
4764: Se ha cambiado el tipo de un grupo.

Extensión del Sistema de Seguridad de Auditoría
4610: La Autoridad de Seguridad Local ha cargado un paquete de autenticación.
4611: Se ha registrado un proceso de inicio de sesión de confianza en la Autoridad de Seguridad Local.
4697: Se ha instalado un servicio en el sistema


Auditoría de uso de privilegios sensibles
4672: Privilegios especiales asignados a un nuevo inicio de sesión.
4673: Se ha llamado a un servicio con privilegios.
4674: Se ha intentado realizar una operación en un objeto con privilegios.

Auditoría de inicio de sesión especial
4964: Se han asignado grupos especiales a un nuevo inicio de sesión.

Auditoría de gestión de cuentas de usuario
4720: Se ha creado una cuenta de usuario.
4722: Se ha activado una cuenta de usuario.
4723: Se ha intentado cambiar la contraseña de una cuenta.
4724: Se ha intentado restablecer la contraseña de una cuenta.
4725: Se ha desactivado una cuenta de usuario.
4726: Se ha eliminado una cuenta de usuario.
4738: Se ha modificado una cuenta de usuario.
4740: Se ha bloqueado una cuenta de usuario.
4765: Se ha añadido un historial de SID a una cuenta.
4766: Ha fallado el intento de añadir un historial de SID a una cuenta.
4767: Se ha desbloqueado una cuenta de usuario.
4780: Se ha configurado la ACL en cuentas que son miembros de grupos de administradores.
4794: Se ha intentado establecer el modo de restauración de los servicios de directorio.

 

Héctor Herrero