Pruebas con ELK (Elasticsearch, Logstash y Kibana) (5)

En este articulo vamos a tratar de crear un Dashboard o Cuadro de mandos, en el cual podamos, de un solo vistazo, obtener información sobre los intentos de inicio de sesión. Para ello, debemos primero refrescar los campos (ya que en alterior articulo hicimos cambios sobre la estructura en Logstash), haciendo click sobre el icono de las flechas concéntricas dentro de Settings/indices:

kibana_refresh

Ahora vamos a la pestaña Discover e indicando un rango de tiempo (arriba a la derecha) en el que tengamos datos de interés y queramos explotarlos. En nuestro caso indicaremos «Last 7 Days».

Con este intervalo de tiempo marcado, podremos ver los resultados tal y como se muestra a continuación:

kibana_discovery

Como podemos ver, ya se ha introducido los campos nuevos (Host_target, username, src_ip, tags… etc) y ahora podemos crear las vistas correspondientes a cada caso que queramos insertar en nuestro Dashboard.

Para crear nuestra primera vista (Errores en inicio de sesión Ssh) , vamos a la pestaña Visualize e indicamos que vamos a crear una vista con Area Chart :

kibana_visualize_area

 

En el siguiente paso indicamos From a new search , ya que no vamos a utilizar ningún filtro guardado.

Seguidamente accederemos a la página para crear una nueva vista Area Chart, en la que de forma predefinida tendremos el Eje-Y de tipo count, lo cual nos va bien para esta vista.

Podemos documentarnos sobre los diferentes tipos de aggregations en la web oficial de Elastic.

Como lo que queremos visualizar son las interacciones a lo largo del tiempo, debemos crear un Bucket de tipo X-Axis con el Aggregation Date Histogram, al tener solo el campo @timestamp de tipo fecha/hora, Kibana lo seleccionará automáticamente.

Como con esto nos mostrará todas la interacciones y lo que queremos en concretar para que solo nos muestre los inicios de sesión fallidos (campo tag con valor ssh_fail_psw o ssh_fail_user) , debemos añadir un sub-bucket de tipo Split Area con el aggregation de tipo filter. Añadiendo los siguientes filtros:

Obteniendo un resultado final como este:

kibana_ssh_fail_vis

Lo podemos probar haciendo click sobre icono play y obtendremos una vista similar a esta:

kibana_ssh_login_fail_gra

 

Guardamos la vista con save y ponemos un nombre reconocible, por ejemplo «SSH_login_fail».

Ahora que ya sabemos crear una vista, vamos a crear la vista de los inicios de sesión exitosos, para ellos seguimos los mismos pasos que antes, solo cambiamos los filtros por el siguiente:

Y lo guardamos con un nombre que recordemos, por ejemplo «SSH_Login_Successful».

Para dotar de mayor utilidad al Dashboard, vamos a incluir dos vista nuevas en formato tabla (Data Table) con la información relevante al caso. Con lo que tendremos que crear la primera vista de tipo Data Table sin especificar ningún filtro (From a new search).

Como en el caso anterior, nos pone de forma predefinida Count como Aggregation en las Metrics.

kibana_metrics_count

Crearemos un primer Bucket de tipo Split Rows, seleccionaremos Terms cómo Aggregation, src_ip.raw como Field, al menos 100 en Size para tener una buena cantidad de resultados y en CustomLabel podremos nombrar la columna como queramos, para el caso, la llamaremos «IP ORIGEN».

kibana_bucket1

También vamos a crear un Sub-Bucket con Terms como Sub-Aggregation, username.raw como Field, 100 en Size y pondremos como nombre de columna «USUARIO».
kibana_bucket2

 

Tal y como lo hemos dejado, no obtendremos información de utilidad, hay que aplicar un filtro a los resultados utilizados por la vista, así que vamos a utilizar dos filtros y los vamos a guardar de distinta forma. La primera será para obtener los fallos de inicio de sesión:

kibana_filter_fail_psw

Y guardamos la vista como «SSH_login_fail_Chart».

Luego modificamos el filtro con la siguiente búsqueda:

kibana_filter_successful

Y también la guardamos pero con el nombre «SSH_login_successful».

Si probamos estas ultimas vistas obtendremos algo similar a esto:

kibana_chart_1

Por último solo nos queda montar nuestro Dashboard con las vistas que hemos creado. Así que vamos a la pestaña Dashboard y vamos añadiendo las vistas creadas con el icono con el símbolo «+». Podemos mover y redimensionar las vistas como queramos, obteniendo un resultado final similar a este:

 

kibana_dashboard1

Recordar guardarlo con un nombre reconocible para utilizarlo en el futuro.

Con esto terminamos la implantación de ELK, así que nos quedará experimentar con la seguridad y profundizar sobre muchos otros aspectos.


Referencias de interés: