Cómo monitorear archivos de registro con Graylog2 en Debian 9

Interfaz Graylog

Graylog es una herramienta de gestión de registros gratuita y de código abierto basada en Java, Elasticsearch y MongoDB que se puede utilizar para recopilar, indexar y analizar cualquier registro del servidor desde una ubicación centralizada. Pero, ¿graylog qué es exactamente? Es básicamente una plataforma poderosa que permite monitorear fácilmente los inicios de sesión SSH y la actividad inusual para depurar aplicaciones y registros usando Graylog. Proporciona un lenguaje de consulta efectivo, capacidades de alerta, una canalización de procesamiento para la transformación de datos y mucho más. La funcionalidad de Graylog se puede ampliar a través de una API REST y complementos.

Graylog se compone de tres componentes:

  1. Elasticsearch: almacena todos los mensajes entrantes y proporciona una función de búsqueda.
  2. MongoDB: se utiliza para la base de datos, almacena las configuraciones y la metainformación.
  3. Servidor Graylog: recibe y procesa mensajes de varias entradas y proporciona una interfaz web para análisis y monitoreo.

Si te preguntas cómo instalar graylog en Debian, este tutorial explicará cómo instalar Graylog2 en un servidor Debian 9, también conocido como debian graylog.

Requisito previo

  • Un servidor que ejecuta Debian 9.
  • Mínimo 4 GB de RAM.
  • Una dirección IP estática 192.168.0.187 configurada en su servidor.

Para aquellos que aún no están familiarizados con la plataforma, podrían preguntarse «que es graylog». Simplificando, es una solución integral para la gestión y análisis de registros, lo que es crucial para la administración de sistemas y la seguridad informática.

1 Instalar los paquetes necesarios

Antes de iniciar el proceso de install graylog debian, deberá instalar Java 8 y otros paquetes necesarios en su sistema. No todos los paquetes requeridos están disponibles en el repositorio estándar de Debian 9, por lo que deberá agregar Debian Backports a la lista de fuentes de paquetes. Primero, inicie sesión con el usuario raíz y cree un archivo backport.list:

nano /etc/apt/sources.list.d/backport.list

Agregue la siguiente línea:

deb http://ftp.debian.org/debian stretch-backports main

Guarde el archivo cuando haya terminado, luego actualice su sistema con el siguiente comando:

apt-get update -y
apt-get upgrade -y

Una vez que su sistema esté actualizado, instale todos los paquetes con el siguiente comando:

apt-get install apt-transport-https openjdk-8-jre-headless uuid-runtime pwgen -y

Una vez que todos los paquetes necesarios estén instalados, puede proceder a instalar MongoDB.

2 Instalar MongoDB

Se requiere MongoDB para almacenar la configuración y la metainformación. MongoDB está disponible en el repositorio predeterminado de Debian 9, por lo que puede instalar MongoDB simplemente ejecutando el siguiente comando:

apt-get install mongodb-server -y

Una vez que MongoDB esté instalado, puede proceder a instalar Elasticsearch.

3 Instalar Elasticsearch

Elasticsearch actúa como un servidor de búsqueda que almacena todos los registros enviados por el servidor Graylog y muestra los mensajes siempre que lo solicite. Elasticsearch no está disponible en el repositorio predeterminado de Debian 9. Deberá agregar el repositorio de Elasticsearch a la fuente del paquete Debian.

Primero, descargue y agregue la clave GPG de Elasticsearch con el siguiente comando:

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add -

A continuación, cree un archivo de repositorio de Elasticsearch con el siguiente comando:

nano /etc/apt/sources.list.d/elasticsearch.list

Agregue la siguiente línea:

deb https://packages.elastic.co/elasticsearch/2.x/debian stable main

Guarde el archivo cuando haya terminado, luego actualice el repositorio ejecutando el siguiente comando:

apt-get update -y

A continuación, instale Elasticsearch ejecutando el siguiente comando:

apt-get install elasticsearch -y

Una vez instalado Elasticsearch, deberá modificar el archivo de configuración principal de Elasticsearch:

nano /etc/elasticsearch/elasticsearch.yml

Realice los siguientes cambios:

cluster.name: graylog
network.host: 192.168.0.187
discovery.zen.ping.timeout: 10s
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["192.168.0.187:9300"]

Guarde y cierre el archivo cuando haya terminado, luego inicie el servicio Elasticsearch y habilítelo para que se inicie en el arranque:

systemctl start elasticsearch
systemctl enable elasticsearch

Después de unos segundos, ejecute lo siguiente para probar que Elasticsearch funciona correctamente:

curl -XGET 'http://192.168.0.187:9200/_cluster/health?pretty=true'

Asegúrese de que la salida muestre el estado del clúster como «verde»:

{
  "cluster_name" : "graylog",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 1,
  "active_shards" : 1,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 1,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 50.0
}

Una vez que Elasticsearch esté instalado y funcionando bien, puede continuar con el siguiente paso.

4 Instalar Graylog

Para instalar graylog2 en su sistema Debian, tenga en cuenta que Graylog no está disponible en el repositorio predeterminado de Debian 9, por lo que primero deberá descargar e instalar el repositorio de Graylog 2. Puede hacer esto ejecutando el siguiente comando:

wget https://packages.graylog2.org/repo/packages/graylog-2.2-repository_latest.deb
dpkg -i graylog-2.2-repository_latest.deb

Una vez que el repositorio esté instalado, actualice el repositorio e instale el servidor Graylog con el siguiente comando:

apt-get update -y
apt-get install graylog-server -y

Después de instalar Graylog, deberá establecer un secreto para proteger las contraseñas de los usuarios y también establecer una contraseña hash (sha256) para el usuario root.

Primero, genera password_secret con el siguiente comando:

pwgen -N 1 -s 96

Debería ver el siguiente resultado:

TRXbNPoW4gGC8BN8Gzl4wH3jtfLoi06WCJqia18UtYyPaNLx4r8U7jUPRlIJHoGGxrCjZVqAvW2DcueI6N1zHoy2bKEWLyyC

A continuación, genere una contraseña hash para el usuario root con el siguiente comando:

echo -n youradminpassword | sha256sum

Debería ver el siguiente resultado:

e3c5925aa22abdfa18cf197a7b218fcad31acb6409d2e2dbebae807d3a9750ee

Nota: Recuerde ambas claves de contraseña, porque ambas claves deberán configurarse en server.conf.

A continuación, deberá modificar el archivo de configuración principal del servidor Graylog ubicado en el directorio /etc/graylog/server/:

nano /etc/graylog/server/server.conf

Realice los siguientes cambios:

is_master = true
node_id_file = /etc/graylog/server/node-id
########past-your-password-secret-here#########
password_secret = TRXbNPoW4gGC8BN8Gzl4wH3jtfLoi06WCJqia18UtYyPaNLx4r8U7jUPRlIJHoGGxrCjZVqAvW2DcueI6N1zHoy2bKEWLyyC
root_username = admin
#######past-your-root-hash-password-here##########
root_password_sha2 = e3c5925aa22abdfa18cf197a7b218fcad31acb6409d2e2dbebae807d3a9750ee
root_timezone = UTC
plugin_dir = /usr/share/graylog-server/plugin
rest_listen_uri = http://0.0.0.0:9000/api/
rest_enable_cors = true
web_listen_uri = http://0.0.0.0:9000/
rotation_strategy = count
elasticsearch_max_docs_per_index = 20000000
elasticsearch_max_number_of_indices = 7
retention_strategy = delete
elasticsearch_shards = 4
elasticsearch_replicas = 1
elasticsearch_index_prefix = graylog
allow_leading_wildcard_searches = true
allow_highlighting = false
elasticsearch_cluster_name = graylog
elasticsearch_discovery_zen_ping_unicast_hosts = 192.168.0.187:9300
elasticsearch_http_enabled = false
elasticsearch_network_host = 0.0.00
elasticsearch_discovery_initial_state_timeout = 3s
elasticsearch_analyzer = standard
output_batch_size = 500
output_flush_interval = 1
output_fault_count_threshold = 5
output_fault_penalty_seconds = 30
processbuffer_processors = 5
outputbuffer_processors = 3
processor_wait_strategy = blocking
ring_size = 65536
inputbuffer_ring_size = 65536
inputbuffer_processors = 2
inputbuffer_wait_strategy = blocking
message_journal_enabled = true
message_journal_dir = /var/lib/graylog-server/journal
async_eventbus_processors = 2
lb_recognition_period_seconds = 3
alert_check_interval = 60
mongodb_uri = mongodb://localhost/graylog
mongodb_max_connections = 1000
mongodb_threads_allowed_to_block_multiplier = 5
content_packs_dir = /usr/share/graylog-server/contentpacks
content_packs_auto_load = grok-patterns.json
proxied_requests_thread_pool_size = 32

Guarde y cierre el archivo cuando haya terminado, luego inicie el servicio Graylog y habilítelo para que se inicie en el arranque:

systemctl start graylog-server
systemctl enable graylog-server

Una vez que haya terminado, puede continuar con el siguiente paso.

5 Configurar el cortafuegos

De manera predeterminada, la interfaz web de Graylog está escuchando en el puerto 9000, por lo que deberá permitir el puerto 9000 a través del firewall UFW. El cortafuegos UFW no está instalado en Debian 9. Por lo tanto, deberá instalarlo primero. Puede instalarlo ejecutando el siguiente comando: Anuncio

apt-get install ufw -y

Una vez que UFW esté instalado, habilítelo ejecutando el siguiente comando;

ufw enable

Luego, permita el puerto 9000 a través del firewall UFW ejecutando el siguiente comando:

ufw allow 9000

Puede verificar el estado del firewall UFW en cualquier momento ejecutando el siguiente comando.

ufw status

Una vez que el firewall esté configurado, puede continuar con el siguiente paso.

6 Acceso a la interfaz web de Graylog

La interfaz web de Graylog está escuchando en el puerto 9000. Ahora, abra su navegador web y escriba la URL http://192.168.0.187:9000. Debería ver la siguiente pantalla:

Interfaz Graylog

Iniciar sesión con nombre de usuario «administración» y la contraseña que configuró en root_password_sha2 en server.conf. Debería ver la siguiente pantalla:

Graylog comenzando

A continuación, deberá agregar la entrada para recibir el mensaje de syslog mediante el UDP. Para agregar la entrada, haga clic en Sistema -> seleccione Entradas -> Syslog UDP -> haga clic en el botón Iniciar nueva entrada, debería ver la siguiente pantalla:

Agregar fuente de entrada en Graylog

Complete todos los detalles, como Título, Puerto, Dirección de enlace y, finalmente, haga clic en el botón Guardar, debería ver la siguiente pantalla:

Detalle del origen del registro

Ahora el servidor Graylog recibirá los registros del sistema mediante el puerto 8514 del cliente o servidor.

En el sistema Cliente, deberá configurar rsyslog para que envíe los mensajes de registro del sistema al servidor Graylog. Puede hacer esto editando el archivo rsyslog.conf:

nano /etc/rsyslog.conf

Agregue las siguientes líneas:

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 8514
$template GRAYLOGRFC5424,"%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%n"
*.* @192.168.0.187:8514;GRAYLOGRFC5424

Guarde el archivo y reinicie el servicio rsyslog para aplicar estos cambios:

systemctl restart rsyslog

A continuación, en el servidor de Graylog, haga clic en «Fuentes de Graylog». Puede ver el registro ssh con intentos fallidos de inicio de sesión en la siguiente pantalla.

Supervise los intentos de inicio de sesión con Graylog

Conclusión

¡Felicidades! Ha instalado y configurado con éxito el servidor Graylog en Debian 9. Ahora puede monitorear y analizar fácilmente los registros del sistema desde una ubicación centralizada. También puede adaptar Graylog para monitorear otros tipos de registros según sus requerimientos. Para obtener más información, puede consultar la página de documentación de Graylog en http://docs.graylog.org/en/2.2/pages/getting_started.html. Si tienes alguna pregunta, no dudes en preguntar.

Deja una respuesta

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