Blog CLEMANET
Systèmes et réseaux

Installation de Graylog version 4

Page de connexion Graylog

Pourquoi un logiciel de gestion de logs ?

Un logiciel de gestion de logs doit permettre de rendre les logs "sympas" à exploiter.

  • Tu dois pouvoir rechercher rapidement un motif dans tes logs.

  • Tu dois pouvoir compter un certain nombre d'évènement.

  • Tu dois pouvoir avoir l'historique d'une valeur sur une période de temps.

  • Tu dois pouvoir corréler différents évènements venant de différentes sources.

  • etc

Le logiciel de gestion de logs sert à alerter en cas de problème, de dysfonctionnement, et à avoir des statistiques d'utilisation de son système.

Graylog, tout comme la suite Elastic (ELK) ou d'autres logiciels, remplit ces missions.

Précision sur l'installation présentée ici

Ce billet traite d'une installation simple : on installe tout sur la même machine.

Il ne traite quasiment pas de la sécurité (à part une ouverture de port et une activation d'interface https).

Documentation et système d'exploitation

Ce billet s'appuie sur la documentation officielle que tu trouveras ici: site officiel de Graylog.

Graylog sera installé sur une distribution GNU/Linux Centos 8 à partir des dépots RPMs.

Pré-requis: installation de java, mongodb et elasticsearch

Pour commencer, il faut une distribution GNU/Linux installée sur un serveur virtuel ou pas.

Ensuite, il faut installer trois logiciels avant d'installer Graylog : java, mongodb et elasticsearch.

Installation de Java

[root@Graylog ~]# yum install java-1.8.0-openjdk-headless.x86_64

Installation de la base de donnée mongodb

On installe d'abord le dépot.

[root@Graylog ~]# vi /etc/yum.repos.d/mongodb-org.repo

[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

On lance ensuite la commande d'installation puis la commande pour activer le logiciel au démarrage.

[root@Graylog ~]# yum install mongodb-org

[root@Graylog ~]# systemctl enable mongod.service
[root@Graylog ~]# systemctl start mongod.service
[root@Graylog ~]# systemctl status mongod

Puis idem avec la base Elastisearch. On installe ici la version 7.

[root@Graylog ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

[root@Graylog ~]# vi /etc/yum.repos.d/elasticsearch.repo

[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Installation, configuration du démarrage et test du service.

[root@Graylog ~]# yum install elasticsearch-oss

Installé:
  elasticsearch-oss-7.10.2-1.x86_64

Terminé !

[root@Graylog ~]# systemctl daemon-reload
[root@Graylog ~]#
[root@Graylog ~]# systemctl enable elasticsearch.service
Synchronizing state of elasticsearch.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable elasticsearch
Created symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service  /usr/lib/systemd/system/elasticsearch.service.
[root@Graylog ~]# systemctl start elasticsearch.service
[root@Graylog ~]# systemctl --type=service --state=active | grep elasticsearch
elasticsearch.service              loaded active running Elasticsearch
[root@Graylog ~]#

Pour la suite, il faudra générer un mot de passe. On peut utiliser le paquet pwgen pour celà. Voici les commandes pour installer le paquet.

[root@Graylog ~]# yum install epel-release
[root@Graylog ~]# yum install pwgen

Installation du logiciel graylog

Voici maintennat les commandes pour l'installation de Graylog-server.

On récupére le dépot.

[root@Graylog ~]# rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-4.0-repository_latest.rpm
Récupération de https://packages.graylog2.org/repo/packages/graylog-4.0-repository_latest.rpm
Verifying...                          ################################# [100%]
Préparation...                       ################################# [100%]
Mise à jour / installation...
   1:graylog-4.0-repository-1-2       ################################# [100%]

Puis on installe le logiciel de logs.

[root@Graylog ~]# yum update && yum install graylog-server
graylog                                                6.0 kB/s | 7.9 kB     00:01

Configuration de Graylog

Il faut un mot de passe pour sécuriser l'installation et un mot de passe pour le compte root (admin par défaut).

Création d'un mot de passe pour sécuriser le chiffrement :

[root@Graylog ~]# pwgen -N 1 -s 96
hQ3qv49DUgZjl3tZimzvSb4et9oR78CAl4COZ9tLq6l4nL7gpBq8p1n5AVQ5Lq64IkOKbTgioSkSIAHNPR4JUitHczibXHB0
[root@Graylog ~]#

On crée aussi le mot de passe root.

[root@Graylog ~]# echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
Enter Password:
54db4d147b2de3ac44de8cae7bdca31c61a94e8d12de84974c171a2d1f09c53c
[root@Graylog ~]#

Puis les deux chaines de caractères vont être copiées dans le fichier /etc/graylog/server/server.conf.

Au passage, on en profite pour configurer l'adresse IP sur laquelle le serveur sera disponible.

[root@Graylog ~]# vi /etc/graylog/server/server.conf

password_secret = hQ3qv49DUgZjl3tZimzvSb4et9oR78CAl4COZ9tLq6l4nL7gpBq8p1n5AVQ5Lq64IkOKbTgioSkSIAHNPR4JUitHczibXHB0
root_password_sha2 = 54db4d147b2de3ac44de8cae7bdca31c61a94e8d12de84974c171a2d1f09c53c

http_bind_address = 192.168.1.116:9000

Démarrage de Graylog

On active Graylog au démarrage et on démarre le serveur.

[root@Graylog ~]# systemctl enable graylog-server.service
Synchronizing state of graylog-server.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable graylog-server
Created symlink /etc/systemd/system/multi-user.target.wants/graylog-server.service → /usr/lib/systemd/system/graylog-server.service.
[root@Graylog ~]# systemctl start graylog-server.service
[root@Graylog ~]# systemctl --type=service --state=active | grep graylog
graylog-server.service             loaded active running Graylog server
[root@Graylog ~]#

Deux mots sur SELinux

Si SELinux est en mode enforcing, voici quelques commandes pour que Graylog fonctionne:

root@Graylog ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled

[root@Graylog ~]# sudo setsebool -P httpd_can_network_connect 1
[root@Graylog ~]# sudo semanage port -a -t http_port_t -p tcp 9000
ValueError: Le port tcp/9000 est déjà défini
[root@Graylog ~]# sudo semanage port -a -t http_port_t -p tcp 443
ValueError: Le port tcp/443 est déjà défini
[root@Graylog ~]# sudo semanage port -a -t http_port_t -p tcp 9200
ValueError: Le port tcp/9200 est déjà défini
[root@Graylog ~]# sudo semanage port -a -t mongod_port_t -p tcp 27017
[root@Graylog ~]#

Configuration du firewall de Centos 8

Ouverture du port 9000 sur le firewall de base de Centos 8.

[root@Graylog ~]# firewall-cmd --zone=public --add-port=9000/tcp --permanent
success
[root@Graylog ~]#
[root@Graylog ~]# firewall-cmd --reload

[root@Graylog ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources:
  services: cockpit dhcpv6-client https ssh
  ports: 9000/tcp
  protocols:

Test de l'Installation

A ce point, on teste l'installation en entrant l'adresse dans un navigateur web: http://192.168.1.116:9000

Si ça fonctionne, voici la page de connexion.

Page de connexion Graylog

Activation de https

Pour activer la sécurisation des flux, il faut un certificat et sa clé privée. Le certificat et la clé sont ajoutés à la configuration du serveur.

[root@Graylog ~]# vi /etc/graylog/server/server.conf

http_enable_tls = true

# The X.509 certificate chain file in PEM format to use for securing the HTTP interface.
http_tls_cert_file = /etc/graylog/server/cert.pem

# The PKCS#8 private key file in PEM format to use for securing the HTTP interface.
http_tls_key_file = /etc/graylog/server/cert8.key

# The password to unlock the private key used for securing the HTTP interface.
http_tls_key_password = passworddelacleprive

Le serveur Graylog est redémarré.

[root@Graylog ~]# systemctl restart graylog-server

Et on teste avec le protocole https : https://192.168.1.116:9000.

Le nom d'utilisateur est admin et le mot de passe est celui qui a été entré dans la conf un peu plus haut.

Page de connexion Graylog https

Graylog fonctionne, on arrive à la page d'introduction. Il reste, pour terminer, à faire la configuration DNS pour ne plus avoir l'erreur de certificat.

Page de d'introduction Graylog

Mise à jour de graylog

[root@Graylog ~]# yum update
Dernière vérification de lexpiration des métadonnées effectuée il y a 0:35:52 le sam. 30 janv. 2021 15:50:05 EST.
Dépendances résolues.
=============================================================================================================
 Paquet                      Architecture        Version                        Dépôt                  Taille
=============================================================================================================
Mise à jour:
 graylog-server              noarch              4.0.2-1                        graylog                153 M
 sudo                        x86_64              1.8.29-6.el8_3.1               baseos                 924 k
 tzdata                      noarch              2021a-1.el8                    baseos                 473 k
 tzdata-java                 noarch              2021a-1.el8                    appstream              192 k

Résumé de la transaction
=============================================================================================================
Mettre à niveau  4 Paquets

Taille totale des téléchargements : 155 M
Voulez-vous continuer ? [o/N] : o
Installed products updated.

Mis à niveau:
  graylog-server-4.0.2-1.noarch         sudo-1.8.29-6.el8_3.1.x86_64        tzdata-2021a-1.el8.noarch
  tzdata-java-2021a-1.el8.noarch

Terminé !
[root@Graylog ~]#

Bonus: configuration d'un proxy

On va installer nginx en mode proxy pour Graylog.

[root@Graylog ~]# yum install nginx

[root@Graylog ~]# systemctl enable nginx
[root@Graylog ~]# systemctl start nginx
[root@Graylog ~]#
[root@Graylog ~]# systemctl status nginx
 nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2021-01-30 15:39:13 EST; 58min ago

Voici maintenant la configuration de nginx en mode proxy avec le protocole https.

[root@Graylog conf.d]# vi /etc/nginx/conf.d/graylog.conf

server
{
    listen      443 ssl http2;
    server_name graylog.example.org;
    proxy_ssl_certificate     /etc/nginx/cert.pem;
    proxy_ssl_certificate_key /etc/nginx/cert.key;

    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 https://$server_name/;
      proxy_pass       http://127.0.0.1:9000;
    }
}

Puis on redémarre nginx.

[root@Graylog nginx]# systemctl restart nginx
[root@Graylog nginx]#
[root@Graylog nginx]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2021-01-30 16:50:57 EST; 7s ago

Vérifier la configuration dans le fichier server.conf de Graylog pour que le serveur écoute sur l'adresse 127.0.0.1:9000. Si ce n'est pas fait, ouvrir le port sur le firewall du serveur.

On peut maintenant se connecter sur l'adresse https://graylogserver