Securizando ElasticSearch y ELK

Si queremos poner nuestro entorno ELK (ElasticSearch, Logstash y Kibana) en producción lo primero que debemos hacer es securizarlo. Así que instalamos el plugin  Elastic Shield el cual nos ayudará en dicha tarea:

Creamos el usuario administrador:

Ahora reiniciamos el servicio para que se aplique aplique la configuración:

Ahora podremos comprobar que si intentamos acceder al servidor  http://localhost:9200/ nos mostrará un error al no permitir el acceso al usuario anonymous. Pero si lo intentamos con el usuario admin si que funciona:

Ya tenemos ElasticSearch securizado, pero ahora no pueden acceder Logstash ni Kibana, por lo que tendremos que configurarlos con las credenciales correspondientes.

En /etc/elasticsearch/shield/roles.yml  podemos observar que ya existen un rol llamado kibana4_server, creado específicamente para este uso. Así que vamos a proceder a crear el usuario para que Kibana pueda acceder:

Ahora editamos el archivo de configuración de Kibana (opt/kibana/config/kibana.yml) para especificar las credenciales, añadiendo las siguientes lineas:

Para que nuestro usuario pueda acceder a todos los índices de ElasticSearch, hay que concederle permiso en el rol kibana4_server. Para ello editamos el archivo /etc/elasticsearch/shield/roles.yml y modificamos la configuración del rol:

Con estos cambios ya tenemos la comunicación entre Kibana y Elasticsearch securizada, para que funcione habría que reiniciar ambos servicios. Solo nos quedará configurar de nuevo Logstash con las credenciales correspondientes.

Así que creamos el usuario para Logstash:

Y modificamos la sección output de nuestro archivo de configuración en Logstash ( /etc/logstash/conf.d/auth-log.conf ) :

Ahora ya tenemos las comunicaciones entre Logstash<->ElasticSearch<->Kibana securizados correctamente.

Por último vamos a securizar el acceso web a Kibana, utilizando el plugin Shield.

Siendo requisito fundamental el generar un certificado, nuestro siguiente paso será generarlo con OpenSSL con siguiente tutorial:

http://www.akadia.com/services/ssh_test_certificate.html

Como resultado obtendremos los archivos server.key  y server.crt  en la ruta /opt/kibana/cert  (que deberemos crear).

Seguidamente instalamos el PlugIn Shield en Kibana:

Editamos /opt/kibana/config/kibana.yml  y añadimos las siguientes líneas:

Y reiniciamos el servicio de Kibana para que todo tenga efecto:

Ahora ya podemos acceder a https://localhost:5601  de forma segura. Nos solicitará credenciales, las cuales son las que creamos en ElasticSearch para Kibana (mi-usuario-kibana).

kibana-login

Opcionalmente podemos jugar con los roles y los usuarios de ElasticSearch, pudiendo crear roles específicos para que los usuarios solo puedan acceder a índices concretos.

 

 

 


Referencias de interés: