L’IRC
9 janvier 2022
Enregistrer ses logs Rsyslog sur Graylog
28 février 2022
L’IRC
9 janvier 2022
Enregistrer ses logs Rsyslog sur Graylog
28 février 2022
Tout voir

La centralisation des logs avec Graylog

Vous l’ignorez peut être, mais toutes les choses que l’on fait sur son ordinateur (quelque soit le système d’exploitation) sont enregistrées dans leurs moindres détails. On regarde ça de plus près ? Ces enregistrements (les logs) sont éparpillés un peu partout, et voici comment les voir, et les rassembler à un seul endroit: via Graylog. Je ne vais parler dans cet article que des logs Linux, parce que c’est le système d’exploitation sur lequel je travaille le plus. Mais sachez que le concept global de log s’applique également à Windows, ou à OSX.  Par conséquent, vous ne devriez pas être perdus si vous utilisez d’autres systèmes d’exploitation.

Qu’est ce qu’un log ?

Pour savoir à quoi ça sert de rassembler les logs, il faut déjà se demander ce que c’est. Ca nous éclairera aussi sur l’utilité de les rassembler. Comme je l’expliquais plus haut, un ordinateur enregistre absolument tout. Ce n’est pas pour vous surveiller, mais surtout pour se surveiller lui même. Parce qu’un ordinateur doit pouvoir être en mesure de retracer tout ce qu’il a fait, au cas où, un jour, il y ait un problème, et qu’une personne doivent intervenir pour régler ce problème. Ces enregistrements, ce sont les logs.

A quoi servent-ils ?

Les logs vous disent tout. Qu’il s’agisse d’événements plutôt banals. comme des échanges entre un logiciel et le noyau du système d’exploitation, ou bien encore d’événements plus graves, comme les erreurs, les événements critiques, des défauts . Mais ce n’est pas leur seule utilité. Puisqu’ils sont véritablement la Bible de votre ordinateur, ils enregistrent aussi toutes les personnes qui s’y connectent. Par conséquent, on se sert des logs pour savoir s’il y a des intrusions sur son ordinateur, ou son réseau. Et soudain, on comprend pourquoi la surveillance des logs devient aussi critique !

Ou s’enregistrent les logs ?

Il y a plein de logs, et plein d’endroits ou les trouver. Par exemple, sur Linux, et plus précisément sur les système Debian, et Ubuntu, ils sont gérés par RSyslog. C’est une sorte de programme qui enregistre toutes les actions du système d’exploitation. Mais RSyslog n’enregistre pas les logs des applications, des services et des programmes que vous installez. Il ne s’occupe que du système d’exploitation. Les programmes, eux, enregistrent leurs logs dans le dossier /var/log. Quoi, que, ils ne le font pas tous. Parfois, ils enregistrent les logs dans leur propre dossier d’installation. Aussi, si on veut avoir une vue complète et représentative de l’activité, de la santé de notre système, et bien il faut aller chercher les logs un peu partout…

 Comment les centraliser ?

C’est la qu’intervient Graylog. Avant de l’utiliser, j’ai testé Loganalyzer.
C’est un système similaire, mais bien moins complet. J’ai rapidement été bloqué avec ce logiciel, car il ne permettait pas de gérer les événements, et l’installation de la version française de l’interface m’a nécessité de retravailler toute la traduction: les accents n’étaient pas pris en charge…

Bref, très moyen !

Graylog ?

Suite à un échange sur twitter avec un l’excellent Ministre des Loutres, il m’a conseillé de tester Graylog. Alors pourquoi pas, et je m’y suis lancé.

Avant tout, combien coûte Graylog ?

C’est le premier point fort de ce service: il est gratuit !
Il existe des versions payantes pour les entreprises, mais pour les particuliers, et les très petites entreprises (qui génèrent moins de 2Go de log par jour), c’est gratuit, et cela donne tout de même accès à la version complète de Graylog

Pour connaître les offres proposés par graylog: c’est ici !

 

Ici, à la maison, nous générons un peu moins de 1,2 Go de log par jour, et c’est principalement dû aux deux serveurs Jeedom (domotique) ainsi qu’aux logs du pare feu physique.

Nous générons sur 24 heures environs 1,5 million de logs !

Et me voila donc parti pour installer Graylog.

Il faut dire que l’installation d’un service, chez moi, c’est un peu complexe.
Nous avons en effet une baie de serveurs qui contient 4 serveurs physiques, mais une dizaine de machines virtuelles, et ça, c’est sans compter sur nos ordinateurs personnels (ordinateurs de bureau, mais aussi ordinateurs portables…)

Graylog va donc devoir récupérer les logs de toutes ces machines.

On va commencer soft, en récupérant uniquement les logs des serveurs, et non des services (comme je vous l’ai expliqué, ces logs sont séparés).

La procédure d’installation que je vous présente est issue de la documentation de Graylog, particulièrement bien faite.

Je vous présente l’installation sur un serveur Debian.
Il est tout de même à supposer que vous êtes connecté en SSH sur la machine, que votre compte utilisateur a les droits sudo, et que cette phrase que vous venez de lire a un sens quelconque pour vous 🙂

Si vous installez Greylog sur un autre système d’exploitation, je vous recommande de vous référer à la doc officielle.

Voici le lien pour l’installation de Greylog.

Vous verrez au début de mes commandes le symbole

$ ou #

Ils représentent votre prompt, et ne sont pas à recopier.
Le premier indique que vous êtes sur votre compte utilisateur normal. Le second indique que vous devez être identifié sur la machine en root.
La seconde option ne sera pas nécessaire à priori, mais il est possible que cela apparaisse sur d’autres articles à venir.

Pour passer d’un compte utilisateur normal au compte root, la commande est:
su

Allez, on se prend un café, on se connecte en SSH sur le serveur distant, et c’est parti !

Tout d’abord, on fait une petite mise à jour de sa Debian, au cas ou.
Par la suite, on va récupérer les paquets nécessaires à l’installation de Greylog.

$ sudo apt update && sudo apt upgrade

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

MongoDB

On installe à présent MongoDB.

Il s’agit d’un gestionnaire de base de donnée. Il sera nécessaire au bon fonctionnement de Greylog.
Pour être certains d’avoir les versions officielles de MongoDB, on va chercher les fichiers directement sur leurs serveurs.

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

$ echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

$ sudo apt-get update

$ sudo apt-get install -y mongodb-org

Possible que Debian vous crie un peu dessus en vous expliquant que l’action

sudo apt-key add -

est « deprecated » (comprenez has been) mais tant que ça fonctionne encore, on en profite !

On démarre MongoDB.

Et on en profite au préalable pour redémarrer les processus, on active le lancement de MongoDB au démarrage, on le lance et on s’assure qu’il est bien lancé.

$ sudo systemctl daemon-reload

$ sudo systemctl enable mongod.service

$ sudo systemctl restart mongod.service

$ sudo systemctl --type=service --state=active | grep mongod

Voici ce que vous devriez voir:

Dans cet exemple, j’utilise également une commande alternative:

# systemctl status mongod.service

J’appelle en fait directement le service systemd pour me donner l’état du service. Les deux solutions fonctionnent, mais la seconde est bien plus complète. C’est libre à vous
(Je suis en root sur cette capture)

ElasticSearch

On s’attaque à présent à ElasticSearch.

C’est un élément de la suite Elastic (voici le lien de l’éditeur) et qui jouera le rôle de moteur de recherche sur Graylog.

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

(Debian va encore gueuler mais on s’en fout)

$ 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

$ sudo apt update && sudo apt install elasticsearch-oss

La doc d’ElasticSearch (dont voici le lien) est utilisée pour réaliser ces commandes.

On va faire deux petites modifications dans la configuration d’ElasticSeach.
– On définie cluster name.: graylog

– On ajoute: action.auto_create_index: false

A présent, on fait comme pour MongoDB: on active et on lance ElasticSearch. On vérifie aussi qu’il fonctionne bien.

$ sudo systemctl daemon-reload

$ sudo systemctl enable elasticsearch.service

$ sudo systemctl restart elasticsearch.service

$ sudo systemctl status elasticsearch.service

Ca fonctionne nickel, on continue 🙂

Graylog

ENFIN on peut s’attaquer à Graylog.
On va le télécharger et lancer son installation.
(Vous avez terminé votre café, refaites en couler un, et c’est deux sucres pour moi, merci)

$ wget https://packages.graylog2.org/repo/packages/graylog-4.2-repository_latest.deb

$ sudo dpkg -i graylog-4.2-repository_latest.deb

$ sudo apt-get update

$ sudo apt-get install graylog-server graylog-enterprise-plugins graylog-integrations-plugins graylog-enterprise-integrations-plugins

Une petite modification est nécessaire au niveau de la configuration de Graylog.
On va donc l’éditer et ajouter les éléments nécessaires.

$ sudo nano /etc/graylog/server/server.conf

Il faut ajouter un mot de passe aléatoire à la ligne password_secret
Par ailleurs, il va falloir définir votre mot de passe de connexion à l’interface de Graylog.
Le problème est que ce mot de passe doit être renseigné hashé dans la configuration.

Pour ce faire, utilisez cette commande:

$ echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1

Et renseignez votre mot de passe quand le prompt vous le demande. Il vous retournera le même mot de passe, chiffré.

Ajoutez ce mot de passe à la ligne root_password_sha2 (et notez le quelque part !)

Graylog ne démarrera pas sans ces deux conditions.

ON Y EST ! A présent, on n’a plus qu’à démarrer Graylog !

$ sudo systemctl daemon-reload

$ sudo systemctl enable graylog-server.service

$ sudo systemctl start graylog-server.service

$ sudo systemctl status graylog-server.service

Nickel ! Graylog fonctionne !

Rendez vous à présent à l’adresse http://adresse_du_serveur:9000
Renseignez Admin en identifiant, et en mot de passe, celui que vous avez chiffré (dans mon exemple: MonMotDePasseDeLaMortQuiTue)

Vous ne verrez pas encore de logs, puisque vous n’en avez pas ajouté, mais dans un prochain article, je vous expliquerais comment les faire arriver sur votre serveur, et il se peuplera au fur et à mesure !

Vous avez des questions, ou vous voulez réagir suite à cet article ?

Vous pouvez le faire dans les commentaires (ils n’apparaissent pas immédiatement car ils sont modérés).

Vous pouvez également en parler directement sur le chat, accessible ici ∇

Rejoindre le chat !

Amen0thes
Amen0thes
Je suis un passionné d'informatique, mais aussi de sciences, notamment d'astrophysique et d'astronomie. Je réalise des créations numériques de toute sorte (musique, vidéo, photo, photoshop, after effect, créations 3D sous Blender). Quand il fait beau, je sors le drone, je quitte la salle de sport pour courir dehors (même si je déteste courir), et je suis amateur de moto. Et quand il pleut, j'apprend la guitare. Geek ascendant Nerd.

Laisser un commentaire

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