Graylog : gestion de vos logs !

Publié par Tpeltier le

Mettre en place une solution de centralisation de logs comporte de nombreux avantages. Dans le cas du redémarrage d’un équipement vous ne les perdrez pas. Si vous subissez une attaque informatique, l’attaquant pourra supprimer ses traces dans les logs des équipements sur lesquels il a agit mais elles seront toujours accessibles sur votre serveur de centralisation des logs. Et surtout vous pourrez suivre quotidiennement l’évolution de votre parcs de serveurs plus facilement. Dans cet article, je vais vous montrer comment installer le système de centralisation de logs nommé Graylog qui est un outil open-source.

Installation de Graylog 5.0 sur Almalinux 9

Pour une installation de Graylog 5.0 sur Almalinux 9, les prérequis que nous utiliseront seront les suivants :

Il est possible d’utiliser les versions OpenSearch 1.x ou MongoDB 5.x mais nous nous focaliserons sur les dernières versions.

Avant de commencer, installation des packages nécessaires au bon déroulement :

# dnf install -y epel-release pwgen wget curl perl-Digest-SHA

Installation OpenJDK

L’installation de la dernière version de OpenJDK se fait simplement avec la commande :

# dnf install java-latest-openjdk java-latest-openjdk-devel

Vérification de la version installée avec la commande :

# java -version
openjdk version "19.0.1" 2022-10-18
OpenJDK Runtime Environment (Red_Hat-19.0.1.0.10-1.rolling.el9) (build 19.0.1+10)
OpenJDK 64-Bit Server VM (Red_Hat-19.0.1.0.10-1.rolling.el9) (build 19.0.1+10, mixed mode, sharing)

Installation MongoDB 6.x

Ajout du repository MongoDB pour pouvoir installer le package. Création du fichier mongo-db-orp.repo dans le répertoire /etc/yum.repos.d

# vi /etc/yum.repos.d/mongodb-org.repo

Ajout des lignes suivantes dans le fichier nouvellement créé :

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

Installation de la dernière version de MongoDB avec la commande :

# dnf update
# dnf install mongodb-org

Activation et exécution de MongoDB :

# systemctl enable mongod.service
# systemctl start mongod.service
# systemctl status mongod.service
 mongod.service - MongoDB Database Server
     Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
     Active: active (running) since Tue 2023-02-07 17:08:58 CET; 23h ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 1221 (mongod)
     Memory: 82.4M
        CPU: 10min 15.258s
     CGroup: /system.slice/mongod.service
             └─1221 /usr/bin/mongod -f /etc/mongod.conf

Started MongoDB Database Server

MongoDB est installé et fonctionnel.

Installation OpenSearch 2.x

L’installation de OpenSearch est un peu plus compliquée sur Almalinux 9 car la signature du package OpenSearch 2.5 est basé sur SHA-1. Or, à partir de la version 9, la commande DNF refuse d’installer des packages si l’algorithme de hachage de la signature du paquet est SHA-1.

Il faut donc, soit attendre que OpenSearch modifie la signature du package, soit modifier la couche cryptographique du système. Dans notre cas, nous utiliserons la deuxième option.

Modification de la couche cryptographique :

# update-crypto-policies --show
DEFAULT
# update-crypto-policies --set DEFAULT:SHA1
# reboot

On peut maintenant installer OpenSearch. On cherche sur le site OpenSearch la dernière version avec ce lien Download OpenSearch : ici il s’agit de la version 2.5.0

# curl -SL https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/opensearch-2.x.repo -o /etc/yum.repos.d/opensearch-2.x.repo
# dnf update
# dnf install opensearch

Edition du fichier /etc/opensearch/opensearch.yml pour configuration avec les lignes suivantes :

cluster.name: graylog
node.name: node1
path.data: /var/lib/opensearch
path.logs: /var/log/opensearch
network.host: 127.0.0.1
http.port: 9200
discovery.seed_hosts: ["node1", "127.0.0.1"]
cluster.initial_cluster_manager_nodes: ["node1", "127.0.0.1"]
plugins.security.disabled: true

Sauvegarde du fichier YML, activation et execution d’OpenSearch :

# systemctl enable opensearch.service
# systemctl start opensearch.service
# systemctl status opensearch.service
● opensearch.service - OpenSearch
     Loaded: loaded (/usr/lib/systemd/system/opensearch.service; disabled; vendor preset: disabled)
     Active: active (running) since Wed 2023-02-08 11:37:47 CET; 5h 8min ago
       Docs: https://opensearch.org/
   Main PID: 12568 (java)
      Tasks: 68 (limit: 24641)
     Memory: 1.0G
        CPU: 3min 37.258s
     CGroup: /system.slice/opensearch.service
             └─12568 /usr/share/opensearch/jdk/bin/java -Xshare:auto -Dopensearch.networkaddress.cache.ttl=60 -Dopensearch.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m>

Vérification que OpenSearch répond correctement avec la commande curl suivante :

# curl -XGET 'http://127.0.0.1:9200/_nodes/_all?pretty=true'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0{
  "_nodes" : {
    "total" : 1,
    "successful" : 1,
    "failed" : 0
  },
  "cluster_name" : "graylog",
  "nodes" : {
    "ExQ6k4zuSFe37csdMhs0Ww" : {
      "name" : "node1",
      "transport_address" : "127.0.0.1:9300",
      "host" : "127.0.0.1",
      "ip" : "127.0.0.1",
      "version" : "2.5.0",
      "build_type" : "rpm",

Dernière étape avec l’installation du serveur Graylog

Installation Serveur Graylog 5.0

Ajout du repository de Graylog et installation du package :

# rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-5.0-repository_latest.rpm
# dnf install graylog-server

Edition du fichier de configuration de Graylog pour ajouter 2 variables obligatoires au fonctionnement du serveur : password_secret et root_password_sha2

Pour générer la valeur de password_secret, il est recommandé d’utiliser l’utilitaire pwgen :

# pwgen -N 1 -s 96

Pour générer la valeur de root_password_sha2, on peut utiliser la commande suivante :

echo -n "votre mot de passe" && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1

Garder les 2 valeurs pour les copier dans le fichier de configuration et modifier les valeurs suivantes :

#  vi /etc/graylog/server/server.conf
password_secret = owyhwb9g22ABkcQXyydkJ62Zh0VM5yOfQj2IdIPnctYLihA6v2IfEP


root_password_sha2 = 2a137121636b46c42b91092bb1377f31aee340309d


root_email = "votre@email"

root_timezone = Europe/Paris

http_bind_address = IP_de_votre_serveur:9000

Sauvegarde du fichier de configuration, activation et exécution du serveur Graylog :

# systemctl enable graylog-server.service
# systemctl start graylog-server.service
# systemctl status graylog-server.service
● graylog-server.service - Graylog server
     Loaded: loaded (/usr/lib/systemd/system/graylog-server.service; enabled; vendor preset: disabled)
     Active: active (running) since Wed 2023-02-08 11:44:07 CET; 5h 26min ago
       Docs: http://docs.graylog.org/
   Main PID: 12992 (graylog-server)
      Tasks: 253 (limit: 24641)
     Memory: 1.1G
        CPU: 5min 39.258s
     CGroup: /system.slice/graylog-server.service
             ├─12992 /bin/sh /usr/share/graylog-server/bin/graylog-server
             └─12993 /usr/share/graylog-server/jvm/bin/java -Xms1g -Xmx1g -server -XX:+UseG1GC -XX:-OmitStackTraceInFastThrow -Djdk.tls.acknowledgeCloseNotify=true -Dlog4j2.formatMsgNoLo>

Le serveur est fonctionnel est prêt à recevoir et traiter les données. Prochaine étape, se connecter sur l’interface web à l’URL http://IP_de_votre_serveur:9000 avec le login admin et le mot de passe généré :


1 commentaire

LaurentNo Gravatar · 3 septembre 2023 à 16 h 43 min

Merci beaucoup, c’est très bien expliqué

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.