Cómo monitorear archivos de registro con Graylog2 en Debian 9
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:
- Elasticsearch: almacena todos los mensajes entrantes y proporciona una función de búsqueda.
- MongoDB: se utiliza para la base de datos, almacena las configuraciones y la metainformación.
- 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:
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:
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:
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:
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.
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.