Instalar y configurar el servidor de monitorización de Graylog Ubuntu 20.04
Graylog es una herramienta de software de gestión de registros gratuita y de código abierto que puede utilizarse para supervisar los registros de los sistemas de red desde el servidor central. Utiliza Elasticsearch para almacenar los datos de los registros y proporcionar capacidades de búsqueda, y MongoDB para almacenar la meta información. Te ayuda a supervisar, buscar y analizar una gran cantidad de datos en un formato legible y sencillo.
En este tutorial, te mostraremos cómo instalar Graylog en un servidor Ubuntu 20.04.
Requisitos previos
- Un servidor que ejecute Ubuntu 20.04.con un mínimo de 4GB de RAM
- Una contraseña de root configurada.
Cómo empezar
En primer lugar, tendrás que actualizar los paquetes de tu sistema a la última versión. Puedes actualizarlos todos con el siguiente comando:
apt-get update -y
Después de actualizar todos los paquetes, también necesitarás instalar algunas dependencias en tu servidor. Puedes instalarlas todas con el siguiente comando:
apt-get install apt-transport-https gnupg2 uuid-runtime pwgen curl dirmngr -y
Una vez instaladas todas las dependencias necesarias, puedes pasar al siguiente paso.
Instalar Java
Graylog requiere que Java esté instalado en tu servidor. Si no está instalado, puedes instalarlo con el siguiente comando:
apt-get install openjdk-11-jre-headless -y
Una vez instalado Java, puedes verificar la versión instalada de Java ejecutando el siguiente comando:
java -version
Deberías obtener la siguiente salida:
openjdk version "11.0.8" 2020-07-14 OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04) OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)
Una vez que hayas terminado, puedes pasar al siguiente paso.
Instalar y configurar Elasticsearch
Graylog utiliza Elasticsearch para almacenar los registros procedentes del recurso externo. Por tanto, tendrás que instalar Elasticsearch en tu sistema.
Por defecto, la última versión de Elasticsearch no está disponible en el repositorio por defecto de Ubuntu. Así que tendrás que añadir el repositorio de Elasticsearch en tu sistema.
Primero, descarga y añade la clave GPG de Elasticsearch con el siguiente comando:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
A continuación, añade el repositorio de Elasticsearch con el siguiente comando:
echo "deb https://artifacts.elastic.co/packages/oss-6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
A continuación, actualiza el repositorio e instala Elasticsearch con el siguiente comando
apt-get update -y
apt-get install elasticsearch-oss -y
Después de instalar Elasticsearch, tendrás que editar el archivo de configuración de Elasticsearch y definir el nombre del clúster. Puedes hacerlo con el siguiente comando
nano /etc/elasticsearch/elasticsearch.yml
Define el nombre de tu cluster a graylog y añade la otra línea que se muestra a continuación:
cluster.name: graylog action.auto_create_index: false
Guarda y cierra el archivo cuando hayas terminado. A continuación, inicia el servicio de Elasticsearch y permite que se inicie en el arranque con el siguiente comando:
systemctl daemon-reload
systemctl start elasticsearch
systemctl enable elasticsearch
También puedes verificar el estado del servicio Elasticsearch con el siguiente comando:
systemctl status elasticsearch
Deberías obtener la siguiente salida:
? elasticsearch.service - Elasticsearch Loaded: loaded (/lib/systemd/system/elasticsearch.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2020-09-05 08:41:18 UTC; 9s ago Docs: http://www.elastic.co Main PID: 7085 (java) Tasks: 17 (limit: 2353) Memory: 1.1G CGroup: /system.slice/elasticsearch.service ??7085 /bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -> Sep 05 08:41:18 ubuntu2004 systemd[1]: Started Elasticsearch.
Ahora, verifica la respuesta de Elasticcsearch con el siguiente comando:
curl -X GET http://localhost:9200
Deberías obtener la siguiente salida:
{ "name" : "vzg8H4j", "cluster_name" : "graylog", "cluster_uuid" : "6R9SlXxNSUGe6aclcJa9VQ", "version" : { "number" : "6.8.12", "build_flavor" : "oss", "build_type" : "deb", "build_hash" : "7a15d2a", "build_date" : "2020-08-12T07:27:20.804867Z", "build_snapshot" : false, "lucene_version" : "7.7.3", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
Instala el servidor MongoDB
Graylog utiliza MongoDB como base de datos. Así que tendrás que instalar la base de datos MongoDB en tu servidor. Puedes instalarla con el siguiente comando:
apt-get install mongodb-server -y
Una vez instalado MongoDB, inicia el servicio MongoDB y habilítalo para que se inicie al reiniciar el sistema con el siguiente comando:
systemctl start mongodb
systemctl enable mongodb
Una vez que hayas terminado, puedes pasar al siguiente paso.
Instalar y configurar Graylog
Por defecto, el paquete Graylog no está disponible en el repositorio por defecto de Ubuntu. Así que tendrás que instalar el repositorio de Graylog en tu servidor.
Puedes descargar el paquete del repositorio Graylog con el siguiente comando:
wget https://packages.graylog2.org/repo/packages/graylog-3.3-repository_latest.deb
Una vez completada la descarga, instala el paquete descargado con el siguiente comando:
dpkg -i graylog-3.3-repository_latest.deb
A continuación, actualiza el repositorio e instala el servidor Graylog con el siguiente comando:
apt-get update -y
apt-get install graylog-server -y
Después de instalar el servidor Graylog, tendrás que generar un secreto para asegurar las contraseñas de los usuarios. Puedes generarlo con el siguiente comando:
pwgen -N 1 -s 96
Deberías ver la siguiente salida:
Wv4VQWCAA9sRbL7pxPeY7tb9lSo50esEWgNXxXHypx0Og3CezMmQLdF2QzQdRSIXmNXKINjRvZpPTrvZv4k4NlJrFYTfOc3c
A continuación, también tendrás que generar una contraseña segura para el usuario administrador de Graylog. Necesitarás esta contraseña para acceder a la interfaz web de Graylog. Puedes generarla con el siguiente comando:
echo -n password | sha256sum
Deberías ver la siguiente salida:
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 -
Ahora, edita el archivo de configuración principal de Graylog y define ambas contraseñas:
nano /etc/graylog/server/server.conf
Pega las dos contraseñas que has generado anteriormente como se muestra a continuación:
password_secret = Wv4VQWCAA9sRbL7pxPeY7tb9lSo50esEWgNXxXHypx0Og3CezMmQLdF2QzQdRSIXmNXKINjRvZpPTrvZv4k4NlJrFYTfOc3c root_password_sha2 = 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
A continuación, también tendrás que definir la dirección de enlace de tu servidor como se muestra a continuación:
http_bind_address = 127.0.0.1:9000
Guarda y cierra el archivo cuando hayas terminado, luego inicia el servicio Graylog y habilítalo para que se inicie al reiniciar el sistema con el siguiente comando:
systemctl daemon-reload
systemctl start graylog-server
systemctl enable graylog-server
A continuación, puedes verificar el estado del servidor Graylog con el siguiente comando:
systemctl status graylog-server
Deberías ver la siguiente salida:
? graylog-server.service - Graylog server Loaded: loaded (/lib/systemd/system/graylog-server.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2020-09-05 08:50:16 UTC; 15min ago Docs: http://docs.graylog.org/ Main PID: 8693 (graylog-server) Tasks: 156 (limit: 2353) Memory: 865.0M CGroup: /system.slice/graylog-server.service ??8693 /bin/sh /usr/share/graylog-server/bin/graylog-server ??8726 /usr/bin/java -Xms1g -Xmx1g -XX:NewRatio=1 -server -XX:+ResizeTLAB -XX:+UseConcMarkSweepGC -XX:+CMSConcurrentMTEnabled -XX> Sep 05 08:50:16 ubuntu2004 systemd[1]: Started Graylog server.
También puedes verificar el registro del servidor Graylog con el siguiente comando:
tail -f /var/log/graylog-server/server.log
Una vez que el servidor Graylog se haya iniciado con éxito, deberías obtener la siguiente salida:
2020-09-05T08:51:36.473Z INFO [ServerBootstrap] Services started, startup times in ms: {InputSetupService [RUNNING]=59, JobSchedulerService [RUNNING]=105, GracefulShutdownService [RUNNING]=106, OutputSetupService [RUNNING]=110, BufferSynchronizerService [RUNNING]=111, UrlWhitelistService [RUNNING]=153, JournalReader [RUNNING]=166, KafkaJournal [RUNNING]=222, MongoDBProcessingStatusRecorderService [RUNNING]=240, ConfigurationEtagService [RUNNING]=259, EtagService [RUNNING]=302, StreamCacheService [RUNNING]=306, LookupTableService [RUNNING]=376, PeriodicalsService [RUNNING]=655, JerseyService [RUNNING]=58701} 2020-09-05T08:51:36.477Z INFO [ServerBootstrap] Graylog server up and running.
En este punto, el servidor Graylog está iniciado y escuchando en el puerto 9000.
Configurar Nginx como proxy inverso para Graylog
A continuación, tendrás que instalar y configurar Nginx como proxy inverso para acceder al servidor Graylog.
Primero, instala el servidor Nginx con el siguiente comando:
apt-get install nginx -y
Tras instalar el servidor Nginx, crea un nuevo archivo de configuración del host virtual Nginx con el siguiente comando:
nano /etc/nginx/sites-available/graylog.conf
Añade las siguientes líneas:
server { listen 80; server_name graylog.example.org; location / { proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Graylog-Server-URL http://$server_name/; proxy_pass http://127.0.0.1:9000; } }
Guarda y cierra el archivo cuando hayas terminado. A continuación, comprueba si el Nginx tiene algún error de sintaxis con el siguiente comando:
nginx -t
Deberías obtener la siguiente salida:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
A continuación, habilita el archivo de configuración del host virtual Nginx con el siguiente comando:
ln -s /etc/nginx/sites-available/graylog.conf /etc/nginx/sites-enabled/
Por último, reinicia el servicio Nginx para aplicar los cambios:
systemctl restart nginx
A continuación, verifica el estado del Graylog con el siguiente comando:
systemctl status nginx
Deberías obtener la siguiente salida:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-09-05 09:07:50 UTC; 20s ago Docs: man:nginx(8) Process: 9408 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 9419 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 9423 (nginx) Tasks: 3 (limit: 2353) Memory: 10.2M CGroup: /system.slice/nginx.service ??9423 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??9424 nginx: worker process ??9425 nginx: worker process Sep 05 09:07:50 ubuntu2004 systemd[1]: Starting A high performance web server and a reverse proxy server... Sep 05 09:07:50 ubuntu2004 systemd[1]: Started A high performance web server and a reverse proxy server.
Accede a la interfaz web de Graylog
Ahora, abre tu navegador web y escribe la URL http://graylog.example.com. Serás redirigido a la página de inicio de sesión de Graylog como se muestra a continuación:
Proporciona tu nombre de usuario y contraseña de administrador y haz clic en el botón de inicio de sesión. Deberías ver el panel de control de Graylog en la siguiente página:
Ahora, haz clic en Sistema >> Visión general. Deberías ver el estado del servidor Graylog en la siguiente página:
Conclusión
Enhorabuena! has instalado y configurado con éxito el servidor Graylog con Nginx como proxy inverso en Ubuntu 20.04. Ahora puedes explorar el Graylog y crear una entrada para recibir registros Rsyslog de fuentes externas. No dudes en preguntarme si tienes alguna duda.