GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar el servidor Graylog en Ubuntu 20.04

Todos los sistemas, aplicaciones y software generan información que se almacena en archivos llamados registros. Estos registros deben ser monitoreados constantemente para asegurar el correcto funcionamiento del sistema en cuestión y prevenir errores o riesgos de seguridad. Suelen estar dispersos en varios servidores y, a medida que aumenta el volumen de datos, su gestión se vuelve cada vez más compleja.

Graylog es un sistema de administración de registros de nivel empresarial gratuito y de código abierto que comprende Elasticsearch, MongoDB y un servidor Graylog. Consiste en el servidor principal, que recibe datos de sus clientes instalados en diferentes servidores, así como una interfaz web, que se utiliza para ver los datos recopilados por el servidor. Graylog es una herramienta similar a Splunk y LogStash.

En este tutorial, aprendemos cómo instalar Graylog 4 en Ubuntu 20.04 . También protegeremos el servidor Graylog con un certificado SSL usando Let's Encrypt.

Requisitos:

  • Máquina Ubuntu 20.04 o posterior
  • Hardware:4 núcleos de CPU, 8 GB de RAM, disco duro SSD con alto IOPS para almacenamiento de registro de Elasticsearch
  • Búsqueda elástica
  • MongoDB
  • Oracle Java SE 8 (OpenJDK 8 o superior)

Paso 1:Instale MongoDB en Ubuntu 20.04

Graylog usa MongoDB para almacenar los datos de configuración, como transmisiones, alertas, usuarios, configuraciones, etc. Solo se almacenan los metadatos y no almacena los datos de registros. Primero instalemos MongoDB en Ubuntu 20.04.

Primero, instale todos los paquetes de requisitos previos:

$ sudo apt update
$ sudo apt install apt-transport-https openjdk-11-jre-headless uuid-runtime pwgen dirmngr gnupg wget

Ahora importe la clave GPG pública:

$ wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -

Para crear un archivo de lista de fuentes, escriba:

$ sudo touch /etc/apt/sources.list.d/mongodb-org-5.0.list

Ahora, agregue la fuente del repositorio para Ubuntu 20.04:

$ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list

Ahora, actualice el índice apt:

$ sudo apt update 

Para instalar MongoDB en Ubuntu, escriba:

$ sudo apt install mongodb-org

El servicio MongoDB no se iniciará automáticamente una vez que se complete el proceso de instalación. Para iniciar el servicio y habilitar el servicio, escriba:

$ sudo systemctl enable --now mongod.service

Verifique el estado del servicio MongoDB:

$ sudo systemctl status mongod.service

Salida:

● mongod.service - MongoDB Database Server
      Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
      Active: active (running) since Sun 2021-08-22 04:47:46 UTC; 3s ago
        Docs: https://docs.mongodb.org/manual
    Main PID: 17965 (mongod)
      Memory: 66.1M
      CGroup: /system.slice/mongod.service
              └─17965 /usr/bin/mongod --config /etc/mongod.conf
 Aug 22 04:47:46 li175-223 systemd[1]: Started MongoDB Database Server.

Como muestra el resultado, MongoDB se inició y el servicio está en funcionamiento.

Puede verificar la versión de MongoDB que está instalada

$ sudo mongod --version
db version v5.0.2
 Build Info: {
     "version": "5.0.2",
     "gitVersion": "6d9ec525e78465dcecadcff99cce953d380fedc8",
     "openSSLVersion": "OpenSSL 1.1.1f  31 Mar 2020",
     "modules": [],
     "allocator": "tcmalloc",
     "environment": {
         "distmod": "ubuntu2004",
         "distarch": "x86_64",
         "target_arch": "x86_64"
     }
 }

El resultado muestra que hemos instalado MongoDB versión 5.0.2 .

Paso 2:Instale Elasticsearch en Ubuntu 20.04

Graylog almacena todos los datos de registro en Elasticsearch. Consulte el sitio web oficial de Graylog para conocer la versión compatible de elasticseach.

Elasticseach necesita Java, viene con la versión de paquete de Java de OpenJDK

Importa la clave GPG del repositorio:

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

A continuación, agregue el repositorio de Elasticsearch:

# echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

Ahora actualice el repositorio

$ sudo apt update

Finalmente, instale la versión de código abierto de elasticsearch escribiendo:

$ sudo apt install elasticsearch-oss

Modifique el archivo de configuración de elasticsearch para establecer cierta información como el nombre del clúster, la dirección IP en la que está escuchando elasticsearch y el número de puerto

$ sudo vi /etc/elasticsearch/elasticsearch.yml
cluster.name: graylog-server
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
action.auto_create_index: false

El directorio y los archivos de configuración principales de Elasticsearch son:

Los datos se almacenan en el directorio /var/lib/elasticsearch.
Archivos de configuración:directorio /etc/elasticsearch
Opciones de inicio de Java:archivo /etc/default/elasticsearch

Elasticsearch viene con una versión integrada de OpenJDK. Para usar su propia versión de Java, configure la variable de entorno ES_JAVA_HOME.

Puede habilitar e iniciar el servicio Elasticsearch usando un comando:

$ sudo systemctl enable --now elasticsearch.service

Ahora verifique que el servicio se esté ejecutando correctamente con el siguiente comando:

$ sudo systemctl status elasticsearch.service

Salida:

● elasticsearch.service - Elasticsearch
      Loaded: loaded (/lib/systemd/system/elasticsearch.service; disabled; vendor preset: enabled)
      Active: active (running) since Sun 2021-08-22 12:38:24 UTC; 11min ago
        Docs: http://www.elastic.co
    Main PID: 19502 (java)
       Tasks: 41 (limit: 1071)
      Memory: 833.2M
      CGroup: /system.slice/elasticsearch.service
              ├─19502 /bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negat>
              └─19565 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller
 Aug 22 12:38:24 li663-124 systemd[1]: Started Elasticsearch.

Presione q para salir, volver al símbolo del sistema.

Elasticsearch por defecto funciona en el puerto 9200 , debe abrirlo en el cortafuegos.

$ sudo ufw allow 9200

Puedes comprobar si está funcionando

$ sudo curl -XGET 'http://localhost:9200'
"name" : "Ubuntunode",
   "cluster_name" : "graylog-server",
   "cluster_uuid" : "sz3jP3rKTPWZlasWwD-rBg",
   "version" : {
     "number" : "7.10.2",
     "build_flavor" : "oss",
     "build_type" : "deb",
     "build_hash" : "747e1cc71def077253878a59143c1f785afa92b9",
     "build_date" : "2021-01-13T00:42:12.435326Z",
     "build_snapshot" : false,
     "lucene_version" : "8.7.0",
     "minimum_wire_compatibility_version" : "6.8.0",
     "minimum_index_compatibility_version" : "6.0.0-beta1"
   },
   "tagline" : "You Know, for Search"
 }

Con la salida del comando, puede ver la línea "number": "7.10.2" muestra la versión de elasticsearch.

Paso 3:Instale Graylog en Ubuntu 20.04

Graylog recopila los registros de las distintas entradas y proporciona la salida a la interfaz web que ofrece para administrar los registros.

Primero, necesitaremos descargar el archivo Graylog Repo usando el comando wget:

$ wget https://packages.graylog2.org/repo/packages/graylog-4.1-repository_1-3_all.deb

Para configurar el repositorio de Graylog, escriba:

$ sudo dpkg -i graylog-4.1-repository_1-3_all.deb 

Ahora podemos instalar el servidor Graylog

$ apt update
$ sudo apt install graylog-server

Habilite e inicie el servicio del servidor graylog

$ sudo systemctl enable --now graylog-server.service

Editar el archivo de configuración

Ahora necesitamos establecer el password_secret y el valor hast de su root graylog root_password_sha2 .

Para establecer un secreto para proteger las contraseñas de los usuarios, puede usar el comando pwgen:

$ pwgen -N 1 -s 96
8KOikhjxetTdcJ7qhtPlgtLgBqCX5y4vL36Ig423pqUQn32QatiecCcYol5UEw3XDzwgWDvcFOmMBJzkBZKC52aEpBrItwke

Ahora, edite el archivo de configuración para establecer la contraseña

$ sudo vi /etc/graylog/server/server.conf
password_secret = RlTRqWSBENLKeg89iAWlxSaf1zfqLvBW7VX5SH1d2ji3RMKyeXb8bmfOXLl3GaWkxp9oDRfvbjXiEr36AFd6T9CMmnjdG7dn

Ahora debemos definir el valor hash de su cuenta de contraseña raíz de Graylog

$ echo -n GraylogRootPassword | shasum -a 256
4b09467e174a03d5ebd720d514f57783ad1e03b4877fff5e0dc45356340ab215  -

Ahora puedes copiarlo y pegarlo

sudo vi /etc/graylog/server/server.conf
root_password_sha2 = 4b09467e174a03d5ebd720d514f57783ad1e03b4877fff5e0dc45356340ab215

Puede agregar información adicional como la dirección de correo electrónico raíz de Graylog y la interfaz de red utilizada por la interfaz HTTP de Graylog

root_email = "[email protected]"
root_timezone = UTC
http_bind_address = 0.0.0.0:9000

Debes abrir los puertos en tu firewall

$ sudo ufw allow 9000

Habilite e inicie el servicio del servidor graylog

$ sudo systemctl enable --now graylog-server.service

Puede encontrar los datos de registro para Graylog /var/log/graylog-server/server.log y útiles para la depuración o cuando el servidor no se inicia.

Puede ver la página de inicio ingresando la IP pública de su servidor y el número de puerto de su navegador, es decir, http:// :9000/. El nombre de inicio de sesión raíz predeterminado de graylog es admin y la contraseña es la utilizada para el valor hash

Paso 4:Configuración de Nginx como proxy de terminación SSL (opcional)

Se recomienda asegurar su interfaz web de Graylog con HTTPS. Aquí usará Nginx como proxy inverso y generará un certificado SSL gratuito para el dominio usando Let's Encrypt.

Primero, necesitaremos instalar Nginx, luego cerbot para el certificado let's encrypt.

Ahora instalemos Nginx

$ sudo apt install nginx

Ahora permitamos Nginx en el cortafuegos

$ sudo ufw allow 'Nginx Full'

Ahora editemos el contenido de nuestro archivo de configuración de nombre de dominio. No olvide reemplazar el nombre del archivo con su nombre de dominio

$ sudo vim /etc/nginx/sites-available/websitefortesting.com.conf
server {
         listen 80;
         server_name websitefortesting.com;
         add_header Strict-Transport-Security max-age=2592000;
         rewrite ^ https://$server_name$request_uri? permanent;
         access_log /var/log/nginx/websitefortesting.com.access.log combined;     
         error_log  /var/log/nginx/websitefortesting.com.error.log;
 }

Ahora vamos a activarlo

$ sudo ln -s /etc/nginx/sites-available/websitefortesting.com.conf /etc/nginx/sites-enabled/websitefortesting.com.conf

Luego verifique si la configuración está bien

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Ahora necesitamos instalar cerbot con el paquete necesario para nginx

$ sudo apt install certbot python3-certbot-nginx

Ahora necesitamos ejecutar cerbot para Nginx

$ sudo certbot --nginx
 Saving debug log to /var/log/letsencrypt/letsencrypt.log
 Plugins selected: Authenticator nginx, Installer nginx
 Enter email address (used for urgent renewal and security notices) (Enter 'c' to
 cancel): [email protected]
 
 Please read the Terms of Service at
 https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
 agree in order to register with the ACME server at
 https://acme-v02.api.letsencrypt.org/directory
 
 (A)gree/(C)ancel: A
 
 Would you be willing to share your email address with the Electronic Frontier
 Foundation, a founding partner of the Let's Encrypt project and the non-profit
 organization that develops Certbot? We'd like to send you email about our work
 encrypting the web, EFF news, campaigns, and ways to support digital freedom.
 
 (Y)es/(N)o: N
 Which names would you like to activate HTTPS for?
 
 1: websitefortesting.com
 
 Select the appropriate numbers separated by commas and/or spaces, or leave input
 blank to select all options shown (Enter 'c' to cancel): 1
 Obtaining a new certificate
 Performing the following challenges:
 http-01 challenge for websitefortesting.com
Waiting for verification…
 Cleaning up challenges
 Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/websitefortesting.com.conf
 Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
 
 1: No redirect - Make no further changes to the webserver configuration.
 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
 new sites, or if you're confident your site works on HTTPS. You can undo this
 change by editing your web server's configuration.
 
 Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
 Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/websitefortesting.com.conf
 
 Congratulations! You have successfully enabled https://websitefortesting.com
 You should test your configuration at:
 https://www.ssllabs.com/ssltest/analyze.html?d=websitefortesting.com
 
 IMPORTANT NOTES:
 Congratulations! Your certificate and chain have been saved at:
 /etc/letsencrypt/live/websitefortesting.com/fullchain.pem
 Your key file has been saved at:
 /etc/letsencrypt/live/websitefortesting.com/privkey.pem
 Your cert will expire on 2021-11-18. To obtain a new or tweaked
 version of this certificate in the future, simply run certbot again
 with the "certonly" option. To non-interactively renew all of
 your certificates, run "certbot renew"
 If you like Certbot, please consider supporting our work by:
 Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 Donating to EFF:                    https://eff.org/donate-le 

Desde la salida, puede ver la ubicación de los certificados SSL y la clave privada. Puede usar esta información para configurar SSL para Nginx.

$ sudo vi /etc/nginx/sites-available/websitefortesting.com.conf
server {
         listen 80;
         server_name websitefortesting.com;
         add_header Strict-Transport-Security max-age=2592000;
         rewrite ^ https://$server_name$request_uri? permanent;
         access_log /var/log/nginx/websitefortesting.com.access.log combined;
         error_log  /var/log/nginx/websitefortesting.com.error.log;
 }
 server {
         listen 443 ssl; # managed by Certbot
         server_name websitefortesting.com;
         ssl_certificate /etc/letsencrypt/live/websitefortesting.com/fullchain.pem; # managed by Certbot
         ssl_certificate_key /etc/letsencrypt/live/websitefortesting.com/privkey.pem; # managed by Certbot
         include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
         ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
     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_pass http://127.0.0.1:9000;   
  }
 }

Ahora vamos a verificar de nuevo con

$ sudo nginx -t

Y reinicie el servicio Nginx

$ sudo systemctl restart nginx.service 

Ahora acceda a su URL de Graylog utilizando el nombre de dominio con HTTPS.

Después de iniciar sesión, puede ver su página de inicio

Conclusión

En este tutorial, aprendimos cómo instalar el servidor Graylog en Ubuntu 20.04, SSL configurado usando Nginx como proxy inverso.

Si enfrenta algún desafío durante el proceso de configuración, no dude en comentar o hacer cualquier pregunta en la sección de comentarios.


Ubuntu
  1. Cómo instalar Zimbra 8.6 en el servidor Ubuntu 14.04

  2. Cómo instalar el servidor Graylog en Ubuntu 16.04

  3. Cómo instalar MongoDB en Ubuntu 18.04

  4. Cómo instalar MongoDB en Ubuntu 18.04

  5. Cómo instalar MongoDB en Ubuntu 22.04

Cómo instalar el servidor Consul en Ubuntu 16.04

Cómo instalar Zabbix en Ubuntu 18.04

Cómo instalar MySQL 8.0 en Ubuntu 18.04

Cómo instalar MongoDB en Ubuntu

Cómo instalar el servidor Graylog en Ubuntu 21

Cómo instalar MongoDB en Ubuntu 14.04