Graylog : gestion de vos logs !
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
Laurent · 3 septembre 2023 à 16 h 43 min
Merci beaucoup, c’est très bien expliqué