Cómo instalar Elastic Stack en Ubuntu 18.04 LTS

Probar la versión de Java instalada

Elasticsearch es un motor de b√ļsqueda de c√≥digo abierto basado en Lucene, desarrollado en Java. Proporciona un motor de b√ļsqueda de texto completo distribuido y multiinquilino con una interfaz web HTTP Dashboard (Kibana). Los datos se consultan, recuperan y almacenan en un esquema de documentos JSON. Elasticsearch es un motor de b√ļsqueda escalable que se puede utilizar para buscar todo tipo de documentos de texto, incluidos los archivos de registro. Elasticsearch es el coraz√≥n del ‘Elastic Stack’ o ELK Stack.

Logstash es una herramienta de código abierto para administrar eventos y registros. Proporciona canalización en tiempo real para la recopilación de datos. Logstash recopilará sus datos de registro, los convertirá en documentos JSON y los almacenará en Elasticsearch.

Kibana es una herramienta de visualización de datos de código abierto para Elasticsearch. Kibana proporciona una bonita interfaz web de tablero. Le permite administrar y visualizar datos de Elasticsearch. No solo es hermoso, sino también poderoso.

En este tutorial, le mostrar√© c√≥mo instalar y configurar Elastic Stack en un servidor Ubuntu 18.04 para monitorear los registros del servidor. Luego, le mostrar√© c√≥mo instalar y configurar ‘Elastic beats’ en Ubuntu 18.04 y un servidor de cliente CentOS 7.

requisitos previos

  • 3 servidores
    • Ubuntu 18.04 con 4 GB de RAM/memoria como ‘elk-master’ – 10.0.15.10
    • Ubuntu 18.04 con 512 MB/1 GB de RAM/memoria como ‘elk-client01’ – 10.0.15.21
    • CentOS 7.5 con 512 MB/1 GB de RAM/memoria como ‘elk-client02’ – 10.0.15.22
  • Privilegios de ra√≠z

¬ŅLo que haremos?

  1. Instalar pila el√°stica
    1. Instalar Java
    2. Instalar y configurar ElasticSearch
    3. Instalar y configurar Kibana
    4. Instalar y configurar Nginx como proxy inverso para Kibana
    5. Instalar y configurar Logstash
  2. Instalar y configurar Filebeat en Ubuntu 18.04
  3. Instalar y configurar Filebeat en CentOS 7.5
  4. Pruebas

Paso 1: instala el paquete el√°stico

En este primer paso, instalaremos y configuraremos ‘Elastic Stack’ en el servidor ‘elk-master’, as√≠ que ejecute todos los comandos y etapas para este paso solo en el servidor ‘elk-master’. Instalaremos y configuraremos cada componente de la pila el√°stica, incluidos Elasticsearch, Logstash shipper y Kibana Dashboard con el servidor web Nginx.

Instalar Java

Se requiere Java para la implementación de la pila elástica. Elasticsearch requiere Java 8. Se recomienda usar Oracle JDK 1.8 e instalaremos Java 8 desde un repositorio PPA.

Instale los paquetes ‘software-properties-common’ y ‘apt-transport-https’, y luego agregue el repositorio de Java PPA ‘webupd8team’. Ejecute el comando ‘apt install’ y ‘add-apt-repository’ a continuaci√≥n.

sudo apt install software-properties-common apt-transport-https -y
sudo add-apt-repository ppa:webupd8team/java -y

Ahora instale el instalador java8.

sudo apt install oracle-java8-installer -y

Una vez finalizada la instalación, compruebe la versión de Java.

java -version

Probar la versión de Java instalada

Java 1.8 instalado en el sistema.

A continuación, configuraremos el entorno java. Verifique el archivo binario de Java usando el siguiente comando.

update-alternatives --config java

Y obtendr√° el archivo binario de Java en el ‘/usr/lib/jvm/java-8-oracle‘directorio.

Ahora cree el archivo de perfil ‘java.sh’ en el directorio ‘profile.d’.

vim /etc/profile.d/java.sh

Pegue la configuración del entorno Java a continuación.

#Set JAVA_HOME
JAVA_HOME="/usr/lib/jvm/java-8-oracle"
export JAVA_HOME
PATH=$PATH:$JAVA_HOME
export PATH

Guardar y Salir.

Haga que el archivo sea ejecutable y cargue el archivo de configuración.

chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh

Ahora verifique el entorno Java usando el siguiente comando.

echo $JAVA_HOME

Y obtendr√° el directorio java que se encuentra en ‘/usr/lib/jvm/java-8-oracle‘directorio.

Configurar Java

Instalar Elasticsearch

Luego de instalar Java, instalaremos el primer componente del Elastic Stack, instalaremos el elasticsearch.

Agregue la clave de pila el√°stica y agregue el repositorio el√°stico al sistema.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

Ahora actualice el repositorio e instale el paquete elasticsearch usando el siguiente comando.

sudo apt update
sudo apt install elasticsearch -y

Una vez completada la instalaci√≥n, vaya al directorio ‘/etc/elasticsearch’ y edite el archivo de configuraci√≥n ‘elasticsearch.yml’.

cd /etc/elasticsearch/
vim elasticsearch.yml

Elimine el comentario de la l√≠nea ‘network.host’ y cambie el valor a ‘localhost’, y elimine el comentario de la l√≠nea ‘http.port’ para la configuraci√≥n del puerto de b√ļsqueda el√°stica.

network.host: localhost
http.port: 9200

Guardar y Salir.

Ahora inicie el servicio elasticsearch y permita que se inicie cada vez que se inicia el sistema.

systemctl start elasticsearch
systemctl enable elasticsearch

Instalar Elasticsearch

El elasticsearch ahora está en funcionamiento, verifíquelo usando el comando netstat netstat y los comandos curl a continuación.

netstat -plntu
curl -XGET 'localhost:9200/?pretty'

Ahora obtendr√° la versi√≥n de elasticsearch ‘6.2.4’ que se est√° ejecutando en el puerto predeterminado ‘9200’.

Compruebe el puerto de b√ļsqueda el√°stica

La instalación de elasticsearch se ha completado.

Instalar y configurar el panel de control de Kibana

El segundo componente es un panel de kibana. Instalaremos el tablero de Kibana desde el repositorio elástico y configuraremos el servicio de Kibana para que se ejecute en la dirección localhost.

Instale el tablero de Kibana usando el comando apt a continuación.

sudo apt install kibana -y

Ahora ve al directorio ‘/etc/kibana’ y edita el archivo de configuraci√≥n ‘kibana.yml’.

cd /etc/kibana/
vim kibana.yml

Quite el comentario de esas l√≠neas ‘server.port’, ‘server.host’ y ‘elasticsearch.url’.

server.port: 5601
server.host: "localhost"
elasticsearch.url: "http://localhost:9200"

Guardar y Salir.

Ahora inicie el servicio kibana y permita que se inicie cada vez que se inicia el sistema.

sudo systemctl enable kibana
sudo systemctl start kibana

El tablero de kibana ahora est√° en funcionamiento en la direcci√≥n ‘localhost’ y el puerto predeterminado ‘5601’. Compru√©balo usando el comando netstat a continuaci√≥n.

netstat -plntu

Instalar Kibana

Se ha completado la instalación del panel de control de Kibana.

Instalar y configurar Nginx como proxy inverso para Kibana

En este tutorial, utilizaremos el servidor web Nginx como proxy inverso para el Panel de control de Kibana.

Instale Nginx y los paquetes ‘apache2-utils’ en el sistema.

sudo apt install nginx apache2-utils -y

Una vez completada la instalaci√≥n, vaya al directorio de configuraci√≥n ‘/etc/nginx’ y cree un nuevo archivo de host virtual llamado ‘kibana’.

cd /etc/nginx/
vim sites-available/kibana

Pegue la configuración del host virtual de Nginx a continuación.

server {
    listen 80;
 
    server_name elastic-stack.io;
 
    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.kibana-user;
 
    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Guardar y Salir.

A continuación, crearemos un nuevo servidor web de autenticación básica para acceder al panel de control de Kibana. Crearemos la autenticación básica usando el comando htpasswd como se muestra a continuación.

sudo htpasswd -c /etc/nginx/.kibana-user elastic
Type the elastic user password

Active el host virtual de kibana y pruebe toda la configuración de nginx.

ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/
nginx -t

Aseg√ļrese de que no haya ning√ļn error, ahora inicie el servicio Nginx y habil√≠telo para que se inicie cada vez que se inicie el sistema.

systemctl enable nginx
systemctl restart nginx

Se completó la instalación y configuración de Nginx como un proxy inverso para el tablero de Kibana.

Configurar Nginx

Instalar y configurar Logstash

El √ļltimo componente del Elastic Stack para esta gu√≠a es el ‘Logstash’. Instalaremos y configuraremos Logsatash para centralizar los registros del servidor de las fuentes del cliente con filebeat, luego filtraremos y transformaremos todos los datos (Syslog) y los transportaremos al alijo (Elasticsearch).

Antes de instalar logstash, aseg√ļrese de comprobar la versi√≥n OpenSSL de su servidor.

openssl version -a

Instalar y configurar Logstash

Para esta gu√≠a, utilizaremos OpenSSL ‘1.0.2o’. Si todav√≠a est√° utilizando la versi√≥n 1.1.2 de OpenSSL, recibir√° un error en la conexi√≥n SSL logstash y filebeat.

Instale logstash usando el comando apt a continuación.

sudo apt install logstash -y

Una vez completada la instalación, generaremos la clave del certificado SSL para proteger la transferencia de datos de registro desde el filebeat del cliente al servidor logstash.

Edite el archivo ‘/etc/hosts’ usando vim.

vim /etc/hosts

Agregue la configuración a continuación.

10.0.15.10  elk-master  elk-master

Guardar y Salir.

Ahora cree un nuevo directorio SSL en el directorio de configuraci√≥n de logstash ‘/etc/logstash’ y vaya a ese directorio.

mkdir -p /etc/logstash/ssl
cd /etc/logstash/

Genere el certificado SSL para Logstash usando el comando openssl como se muestra a continuación.

openssl req -subj '/CN=elk-master/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout ssl/logstash-forwarder.key -out ssl/logstash-forwarder.crt

Los archivos de certificado SSL para Logstash se crearon en el directorio ‘/etc/logstash/ssl’.

A continuaci√≥n, crearemos nuevos archivos de configuraci√≥n para logstash. Crearemos un archivo de configuraci√≥n ‘filebeat-input.conf’ como archivo de entrada de filebeat, ‘syslog-filter.conf’ para el procesamiento de syslog y luego un archivo ‘output-elasticsearch.conf’ para definir la salida de Elasticsearch.

Vaya al directorio de configuraci√≥n de logstash y cree los nuevos archivos de configuraci√≥n ‘filebeat-input.conf’ en el directorio ‘conf.d’.

cd /etc/logstash/
vim conf.d/filebeat-input.conf

Pegue la siguiente configuración allí.

input {
  beats {
    port => 5443
    type => syslog
    ssl => true
    ssl_certificate => "/etc/logstash/ssl/logstash-forwarder.crt"
    ssl_key => "/etc/logstash/ssl/logstash-forwarder.key"
  }
}

Guardar y Salir.

Para los datos de registro de procesamiento de syslog, estamos utilizando el complemento de filtro llamado ‘grok’ para analizar los archivos de syslog.

Cree una nueva configuraci√≥n ‘syslog-filter.conf’.

vim conf.d/syslog-filter.conf

Pegue la siguiente configuración allí.

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

Guardar y Salir.

Y para la salida de elasticsearch, crearemos el archivo de configuraci√≥n llamado ‘output-elasticsearch.conf’.

vim conf.d/output-elasticsearch.conf

Pegue la siguiente configuración allí.

output {
  elasticsearch { hosts => ["localhost:9200"]
    hosts => "localhost:9200"
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

Guardar y Salir.

Cuando haya terminado, inicie el servicio logstash y habilítelo para que se inicie cada vez que se inicie el sistema.

sudo systemctl enable logstash
sudo systemctl start logstash

Habilitar e iniciar logstah

Verifique el servicio logstash usando los comandos netstat y systemctl a continuación.

netstat -plntu
systemctl status logstash

Y el servicio logstash ahora est√° en funcionamiento. Ejecut√°ndose en la direcci√≥n IP p√ļblica con el puerto ‘5443’.

Comprobar puertos

La instalación de Elastic Stack se ha completado.

Paso 2: instale y configure Filebeat en Ubuntu 18.04

En este paso, configuraremos el cliente de Ubuntu 18.04 ‘elk-client01’ mediante la instalaci√≥n de los cargadores de datos de Elastic Beats ‘Filebeat’ en √©l.

Antes de instalar Filebeat en el sistema, debemos editar ‘/etc/hosts’ y descargar el archivo de certificado logstash ‘logstash-forwarder.crt’ al servidor ‘elk-client01’.

Edite el archivo ‘/etc/hosts’ usando el editor vim.

vim /etc/hosts

Pegue la siguiente configuración allí.

10.0.15.10      elk-master      elk-master

Guardar y Salir.

Copie el archivo de certificado logstash ‘logstash-forwarder.crt’ usando el comando scp.

scp [email protected]:/etc/logstash/ssl/logstash-forwarder.crt .

Instalar Filebeat

A continuaci√≥n, instale el ‘Filebeat’ de Elastic Beats agregando la clave el√°stica y agregue el repositorio el√°stico.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

Actualice el repositorio e instale el paquete ‘filebeat’ usando el comando apt a continuaci√≥n.

sudo apt update
sudo apt install filebeat -y

Una vez completada la instalaci√≥n, vaya al directorio ‘/etc/filebeat’ y edite el archivo de configuraci√≥n ‘filebeat.yml’.

cd /etc/filebeat/
vim filebeat.yml

Ahora habilite los prospectores de filebeat cambiando el valor de l√≠nea ‘habilitado’ a ‘verdadero’.

  enabled: true

Defina los archivos de registro del sistema que se enviar√°n al servidor logstash. Para esta gu√≠a, agregaremos el archivo de registro ssh ‘auth.log’ y el archivo syslog.

  paths:
    - /var/log/auth.log
    - /var/log/syslog

Configure la salida en logstash comentando la salida predeterminada de ‘elasticsearch’ y elimine el comentario de la l√≠nea de salida de logstash como se muestra a continuaci√≥n.

output.logstash:
  # The Logstash hosts
  hosts: ["elk-master:5443"]
  ssl.certificate_authorities: ["/etc/filebeat/logstash-forwarder.crt"]

Guardar y Salir.

A continuaci√≥n, debemos editar el archivo ‘filebeat.reference.yml’ para habilitar los m√≥dulos de filebeat y habilitaremos el m√≥dulo ‘syslog’.

vim filebeat.reference.yml

Habilite el módulo del sistema syslog para filebeat como se muestra a continuación.

- module: system
  # Syslog
  syslog:
    enabled: true

Guardar y Salir.

Copie el archivo de certificado de logstash ‘logstash-forwarder.crt’ en el directorio ‘/etc/filebeat’.

cp ~/logstash-forwarder.crt /etc/filebeat/logstash-forwarder.crt

La instalación y configuración de Filebeat se han completado. Ahora inicie el servicio Filebeat y permita que se inicie cada vez que se inicie el sistema.

systemctl start filebeat
systemctl enable filebeat

Configurar Filebeat

Verifique el servicio filebeat usando los comandos a continuación.

systemctl status filebeat
tail -f /var/log/filebeat/filebeat

Los cargadores de filebeat est√°n funcionando bajo el servidor Ubuntu 18.04.

Filebeat est√° funcionando

Paso 3: instale y configure Filebeat en CentOS 7.5

En este paso, configuraremos el cliente de CentOS 7.5 ‘elk-client02’ mediante la instalaci√≥n de los cargadores de datos de Elastic Beats ‘Filebeat’ en √©l.

Antes de instalar Filebeat en el sistema, debemos editar ‘/etc/hosts’ y descargar el archivo de certificado logstash ‘logstash-forwarder.crt’ al servidor ‘elk-client02’.

Edite el archivo ‘/etc/hosts’ usando vim.

vim /etc/hosts

Pegue la configuración a continuación.

10.0.15.10      elk-master      elk-master

Guardar y Salir.

Copie el archivo de certificado logstash ‘logstash-forwarder.crt’ usando el comando scp.

scp [email protected]:/etc/logstash/ssl/logstash-forwarder.crt .

Instalar Filebeat en CentOS

A continuaci√≥n, instale el ‘Filebeat’ de Elastic Beats agregando la clave el√°stica y agregue el repositorio el√°stico.

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

cat <<EOF > /etc/yum.repos.d/elastic.repo
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF


Instale filebeat usando el comando yum a continuación.

yum install filebeat -y

Una vez completada la instalaci√≥n, vaya al directorio ‘/etc/filebeat’ y edite el archivo de configuraci√≥n ‘filebeat.yml’.

cd /etc/filebeat/
vim filebeat.yml

Ahora habilite los prospectores de Filebeat cambiando el valor de l√≠nea ‘habilitado’ a ‘verdadero’.

  enabled: true

Defina los archivos de registro del sistema que se enviar√°n al servidor logstash. Para esta gu√≠a, agregaremos el archivo de registro ssh ‘auth.log’ y el archivo syslog.

  paths:
    - /var/log/secure
    - /var/log/messages

Configure la salida en logstash comentando la salida predeterminada de ‘elasticsearch’ y elimine el comentario de la l√≠nea de salida de logstash como se muestra a continuaci√≥n.

output.logstash:
  # The Logstash hosts
  hosts: ["elk-master:5443"]
  ssl.certificate_authorities: ["/etc/filebeat/logstash-forwarder.crt"]

Guardar y Salir.

A continuaci√≥n, debemos editar el archivo ‘filebeat.reference.yml’ para habilitar los m√≥dulos de filebeat y habilitaremos el m√≥dulo ‘syslog’.

vim filebeat.reference.yml

Habilite el módulo del sistema syslog para filebeat como se muestra a continuación.

- module: system
  # Syslog
  syslog:
    enabled: true

Guardar y Salir.

Copie el archivo de certificado de logstash ‘logstash-forwarder.crt’ en el directorio ‘/etc/filebeat’.

cp ~/logstash-forwarder.crt /etc/filebeat/logstash-forwarder.crt

La instalación y configuración de Filebeat se han completado. Ahora inicie el servicio filebeat y agréguelo al tiempo de arranque.

systemctl start filebeat
systemctl enable filebeat

Configurar Filebeat

Verifique el servicio filebeat usando los comandos a continuación.

systemctl status filebeat
tail -f /var/log/filebeat/filebeat

Los cargadores de filebeat est√°n funcionando bajo el servidor CentOS 7.5.

Filebeat se est√° ejecutando

Paso 4 – Prueba

Abra su navegador web y escriba el nombre de dominio de la pila el√°stica, el m√≠o es: ‘elastic-stack.io’.

Se le solicitar√° el nombre de usuario y la contrase√Īa de la autenticaci√≥n b√°sica en el Panel de control de Kibana.

Escriba el nombre de usuario ‘el√°stico’ con su contrase√Īa.

Ahora obtendr√° el hermoso panel de kibana, haga clic en el bot√≥n ‘Configurar patrones de √≠ndice’ a la derecha.

Panel de Kibana

Defina el patr√≥n de √≠ndice ‘filebeat-*’ y haga clic en el bot√≥n ‘Siguiente paso’.

Definir un latido de archivo

Para el ‘nombre del campo de filtro de tiempo’, elija ‘@timestamp’ y haga clic en ‘Crear patr√≥n de √≠ndice’.

Crear índice

Y se ha creado el patrón de índice de filebeat.

Patrón de índice Filebeat creado

A continuaci√≥n, intentaremos obtener la informaci√≥n de registro para el inicio de sesi√≥n SSH fallido en cada servidor cliente ‘elk-client01’ sistema Ubuntu y ‘elk-client02’ sistema CentOS.

Dentro del Panel de control de Kibana, haga clic en el men√ļ ‘Descubrir’ para obtener todos los registros del servidor.

Establezca ‘beat.hostname’ en el servidor ‘elk-client01’, la ‘fuente’ es el archivo ‘/var/log/auth.log’ y obtendr√° el resultado como se muestra a continuaci√≥n.

resultado de registro

Y a continuaci√≥n se muestran los detalles del registro de muestra para la contrase√Īa fallida de SSH del archivo ‘auth.log’.

Inicio de sesión fallido SSH

Para el servidor CentOS ‘elk-client02’, establezca ‘beat.hostname’ en el servidor ‘elk-client02’, la ‘fuente’ es el archivo ‘/var/log/secure’ y obtendr√° el resultado como se muestra abajo.

Informe para el servidor 2

Y a continuaci√≥n se muestran los detalles del registro de muestra para la contrase√Īa fallida de SSH del archivo ‘seguro’.

Informe de inicio de sesión

La instalaci√≥n y configuraci√≥n de Elastic Stack y Elastic Beat ‘Filebeat’ se complet√≥ con √©xito.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *