Installer un serveur Syslog
********************************************************************************************************************************************************************************
Log et RGPD, c’est lié !
Conformément aux demandes de la CNIL et à l’application de la RGPD, je vous invite à consulter ce lien afin de prendre conscience des enjeux et surtout du devoir que vous avez à mettre ce type de serveur en place : CNIL
Pour consulter les prérequis de mise en œuvre, l’ANSSI vous propose aussi des éléments : ANSSI
RGPD : Règlement Général sur la Protection des Données
Fichiers log dans Windows 10 / Linux / Windows Server
Vous trouvez des fichiers partout, et pour tout, que ce soit pour des OS ou même des applications. Voyons où nous pouvons trouver ces fameux fichiers log.
Pour Windows 10
Vous pouvez trouver des informations concernant l’ensemble des événements du poste en tapant dans l’onglet rechercher « Observateur d’événements ». Il sera recensé ici tous les logs des interactions qui se passent sur votre Windows 10, classées par type.
Vous trouverez aussi ces informations dans « C:\Windows\System32\winevt\logs »
Pour Linux (ici un Debian 11)
Les fichiers log sur Linux se trouvent dans le dossier /var/log, rien de plus facile. Vous aurez de la même manière une classification selon les outils que vous utilisez. Ici, nous avons pris le fichier « syslog ».
Pour Windows Server (2016 dans ce cas)
De la même manière que pour Windows 10, l’« Observateur d’événements » est disponible afin d’accéder à la journalisation des événements.
Vous trouverez aussi ces logs à un autre endroit. Le tableau ci-dessus nʼest que la représentation graphique et organisée de ce que vous allez voir dans « C:\Windows\System32\winevt\Logs »
Bien entendu, il est pratique de pouvoir consulter les logs car on y retrouve un bon nombre d’informations à propos de ce qu’il se passe sur chaque machine. Cela a des avantages si on a une ou deux machines, mais dans le cas où nous avons une infrastructure, cela va vite devenir une contrainte. C’est pour cela que nous mettons en place des serveurs de journalisation d’événement, soit un serveur Syslog.
Serveur Syslog
Il existe bon nombre de logiciels tiers vous permettant de faire de la collecte d’événement concernant votre matériel réseau mais aussi au niveau des connexions, des utilisateurs, des connexions DHCP, etc.
Alors comment ça marche ? C’est plutôt un type de fonctionnement simple, un serveur est chargé de collecter l’ensemble des données envoyées par les agents qui sont déployés sur les machines hôtes. C’est une nouvelle fois un principe d’échange client/serveur.
En image :
Concrètement, on peut voir que les logs touchent aussi bien le matériel que les applicatifs. Vous pouvez prendre un exemple en cherchant les fichiers log de votre outil de virtualisation tel que VirtualBox ou VMWare Workstation.
VMWare Workstation Log :
VirtualBox Log :
Syntaxe d’un log
Comme on peut le voir sur l’ensemble des exemples que nous avons vu ci-dessus, la syntaxe d’une ligne dans le fichier log est normalisée. Elle se compose d’une date, d’une heure, d’un nom d’hôte, de l’émetteur de cet événement, de son importance, etc.
ExempleSyntaxe log
[Date][Heure][NomHôte][Appli/HôtesDeclaratifEvenement][Alerte][message]
Selon les messages renvoyés, vous aurez plus ou moins d'informations dans votre syntaxe. Regardez les différences dans les logs ci-dessus.
L’ensemble des logs est régi par deux choses : la catégorie et le niveau de gravité. Vous allez pouvoir consulter les deux tableaux ci-dessous, faisant référence à chaque état que vous êtes susceptible de rencontrer.
Code de catégorie
Niveau de gravité
NTP
NTP pour Network Time Protocol (Protocole de temps réseau en français). Ce protocole va vous permettre de synchroniser l’ensemble de vos machines au niveau du temps. Cela permettra une synchronisation de l’ensemble des machines hôtes afin que tout le monde ait la même heure de référence.
NTP a été créé en 1985 et depuis, il n’a cessé d'évoluer puisque la version de départ étant la v0, nous sommes désormais à la v4 sous la RFC 5905 depuis 2010.
Comme pour tout protocole, NTP utilise le numéro de port 123 en UDP.
Dans quel but ?
Ce protocole sera votre fer de lance dès le début, en effet, il n’est pas utile que pour la synchronisation horaire pour le référencement des logs, il est utilisé pour TOUT.
Lors de la mise en œuvre de vos tests pour les modules, vous aurez très certainement des erreurs qui arriveront. Des erreurs de mises à jour, des erreurs de synchronisation pour la réplication, concernant la haute disponibilité, de l’envoi de sauvegarde, etc. Bref, c’est pour tout qu’il est utile.
Si vous paramétrez une tâche depuis un serveur, disant qu'à 20 h 00 tous les jours la sauvegarde doit être envoyée sur tel serveur, si lui-même n’est pas synchronisé sur la même échelle de temps, vous aurez une erreur car la tâche demandée n’a pu aboutir ou alors elle a été sautée.
Dans le cas d’un cluster Hyper-V par exemple, si un de vos serveurs tombe, l’autre doit être opérationnel tout de suite et non pas quand il arrivera lui aussi à l’heure précise de déclenchement d’incident. C’est pour cela que dans ce type d’infrastructure, si vos ensembles de serveurs ne sont pas exactement identiques en termes de mise à jour, rôle, et surtout de TEMPS, il vous sera impossible de réaliser la mise en cluster.
Comment est présenté NTP dans son architecture ?
L’architecture de la synchronisation de temps est basée sur un système client/serveur et de strates. Il faut savoir qu’au niveau mondial il y a plusieurs milliers de serveurs NTP.
À titre informatif, le temps a pour base le référencement UTC. Si vous êtes à Paris ou à Buenos Aires, vous n’aurez pas la même heure en fonction du décalage horaire, mais ceci a une base commune qui est le référencement temporel basé sur l'horloge atomique.
Pour plus d’information à ce sujet n’hésitez pas à lire ceci c’est passionnant.
Schéma d’architecture NTP
Pour chaque serveur qui se trouve de la strate 1 à 3, les demandes de synchronisation entre le client et le serveur se feront soit par demande « unicast », faisant l’objet d’une demande de l’un à l’autre pour être synchronisé, soit via un système de synchronisation « actif/passif » qui aura pour but un échange client/serveur. Puis le client deviendra le serveur et le serveur deviendra le client.
Cette synchronisation se fait de manière verticale, on part du haut vers le bas ou du bas vers le haut.
Pour la strate 4, nous aurons bien entendu le même échange vertical pour avoir correspondance avec la strate 3, mais en plus, nous trouverons aussi des échanges via broadcast uniquement en réseau local. Je vous rappelle que les routeurs ne laissent pas transiter par défaut les messages envoyés par broadcast (rappelez-vous des requêtes DHCP qui sont envoyées via broadcast, si un routeur est au milieu la requête ne traverse pas vers l’autre réseau).
Un petit mémo technique, si vous souhaitez vous rappeler que le serveur NTP sert à la synchronisation du temps, rappelez-vous de Parker Lewis, cette série où dans chaque situation un gimmick revenait souvent « Synchronisation des montres ! ». Avec ça, vous n’oublierez plus à quoi sert NTP.
LogAnalyzer
LogAnalyzer est un outil qui permet d'avoir une interface web affichant l'examen et l'analyse des données d'événements réseau, y compris syslog, le journal des événements Windows et de nombreuses autres sources d'événements.
LogAnalyzer fonctionne aussi bien sur Linux que sur Windows. Il s'agit d'une application Open Source gratuite, sous GPL, écrite principalement en PHP.
Les données peuvent être obtenues à partir de bases de données, mais aussi à partir de fichiers en texte brut, par exemple ceux qui sont écrits par le Syslog.
C'est ce que l'on va utiliser avec Rsyslog qui permet de transmettre les messages du journal Linux sur le réseau IP.
ExempleSchéma d'un serveur syslog
Installation du serveur Syslog
Ouvrir Debian 11
Pour commencer, ouvrez Debian 11. Il faut ouvrir le terminal et se mettre en « root » avec la commande « su ». Il vous suffira de rentrer le mot de passe « root » que vous avez choisi.
ExempleCommande terminal 1
LAMP
Serveur LAMP
0 seconds of 3 minutes, 6 secondsVolume 100%
Il faut ensuite installer les services LAMP et PHP qui permettront à Loganalyzer de fonctionner correctement.
Entrez cette ligne de commande :
apt-get install apache2 mariadb-server php php-mysql php-gd
ExempleCommande terminal 2
Mysql
Il faut maintenant installer Mysql pour Rsyslog, ce qui va permettre d'héberger les événements de Syslog en tant que base de données.
Entrez cette ligne de commande :
apt-get install rsyslog-mysql -y
ExempleCommande terminal 3
Rsyslog-Mysql
Pendant l'installation de Rsyslog-Mysql, une fenêtre va apparaître. Elle va vous permettre de configurer la base de données.
ExempleRsyslog-Mysql fenêtre 1
Configuration automatique
Laissez la configuration automatique, validez « Oui ». Une base de données Syslog sera créée.
Exemplersyslog-mysql fenêtre 2
User Rsyslog
Ici, nous devons entrer un mot de passe pour l'utilisateur Rsyslog que nous venons de créer. Retenez-le, il sera utile pour plus tard. Validez avec « Ok ».
Nous en avons fini avec l'installation de Rsyslog-Mysql. Retour dans le Terminal.
Nous allons maintenant accéder au fichier Rsyslog.conf pour permettre au serveur de récupérer les logs. Dans ce fichier, nous allons décommenter « IMTPC » et le port qui est 514 par défaut. Pour accéder à ce fichier, nous allons utiliser « Nano ».
Voici la commande :
nano /etc/rsyslog.conf
ExempleCommande terminal 4
TPC
Rendez-vous à la ligne intitulée « Provides TCP syslog reception » et décommentez les deux lignes en dessous (Module et Input)
ExempleTCP
Attention
Pour décommenter une ligne, il faut supprimer le signe « # » situé au début.
Ajout de commande dans le fichier
Nous allons rajouter une ligne à la fin du fichier « Rsyslog.conf » pour renvoyer automatiquement les logs dans la base de données. Nous allons préciser que nous voulons que Syslog soit utilisé par Rsyslog.
Voici la ligne de commande :
*.* :ommysql:localhost,Syslog,rsyslog,motdepasseRsyslog
Attention
N'oubliez pas de changer « motdepasseRsyslog » par le mot de passe que vous avez choisi pendant l'installation de Rsyslog-Mysql.
ExempleAjout de commande dans le fichier
Redémarrer Rsyslog
Pour enregistrer et quitter un fichier ouvert avec « Nano », il faut faire : ^X (ctrl+x) et mettre « O » pour « oui » quand on vous demande si vous voulez sauvegarder l'état actuel.
Maintenant que l'on est de retour sur le terminal, il faut redémarrer le service Rsyslog pour prendre en compte les changements effectués.
Cette ligne de commande va redémarrer le service rsyslog :
sudo service rsyslog restart
ExempleCommande terminal 5
Téléchargement
Téléchargeons et installons maintenant Loganalyzer.
Avant de procéder au téléchargement, nous allons accéder au répertoire « /srv » utilisé pour les services hébergés par le système. Ensuite, nous allons chercher le lien le plus récent de Loganalyzer sur le site officiel et on copie son URL.
Voici les commandes à effectuer :
cd /srv
wget https://download.adiscon.com/loganalyzer/loganalyzer-4.1.12.tar.gz
ExempleCommande terminal 6
Décompresser
On remarque que Loganalyzer est compressé, il est en .tar.gz.
Il faut le décompresser en utilisant Tar et ses options « Z » ( signifie un fichier zip), « X » (extrait l'archive ), « V » (les noms de fichiers sont montrés de manière approximative) et « F » (signifie que l'argument suivant est un nom de fichier).
La commande sera :
tar -zxvf /srv/loganalyzer-4.1.12.tar.gz
ExempleCommande terminal 7
Création du répertoire
Maintenant, il faut créer un répertoire dans le serveur web, c'est le nom que l'on utilisera pour accéder à Loganalyzer dans le navigateur. Nous allons appeler ce répertoire « Syslogweb ». Nous allons donc marquer dans l'URL du navigateur : « localhost/syslogweb » pour accéder à Loganalyzer.
Pour créer ce répertoire, entrez cette commande :
mkdir /var/www/html/syslogweb
ExempleCommande terminal 8
Attention
Vous pouvez personnaliser le nom du répertoire, cela n'impacte pas l'installation de Loganalyzer
Déplacement
Nous allons déplacer les fichiers décompressés de Loganalyzer dans le nouveau répertoire. Il va falloir utiliser la commande « cp -a » qui permet d'avoir une copie complète des fichiers et des répertoires.
La commande sera :
cp -a /srv/loganalyzer-4.1.12/src/* /var/www/html/syslogweb
ExempleCommande terminal 9
Rajouter les droits
Nous arrivons à la dernière configuration à partir du Terminal. Maintenant que tout est en place, il suffit de rajouter les droits de l'utilisateur www-data d'Apache sur tous les fichiers du répertoire Syslogweb contenant Loganalyzer.
La commande sera :
chown -R www-data:www-data /var/www/html/syslogweb
ExempleCommande terminal 10
Accéder au navigateur
Maintenant que les fichiers sont en place et que les droits sont affectés, on peut accéder à Loganalyzer à partir de l'URL du navigateur. Dans cet exemple, j'utilise Firefox avec le répertoire Syslogweb que j'ai créé.
Pour accéder à Loganalyzer, il faut marquer « localhost/syslogweb » dans l'URL du navigateur, ce qui nous renvoie vers une page d'erreur. C'est tout à fait normal, nous devons terminer la configuration de Loganalyzer dans le navigateur.
ExempleLe navigateur
Étape 1
Les exemples ont été réalisées sur la version LogAnalyzer 4.1.12 mais la méthodologie reste identique.
Cliquez sur « Here » pour commencer la configuration de Loganalyzer.
Exemple
Étape 2
Il faut maintenant cliquer sur « Next » pour vérifier les prérequis. Vous pouvez passer directement l'étape 2 en cliquant sur « Next ».
Étape 3
Nous voici rendus à l'étape 3. Notre but, ici, sera d'activer et de compléter la base de données utilisateur. Cliquez sur « Yes » pour « Enable User Database ».
Nous allons changer le nom de la base de données et l'utilisateur.
Le nom de la base de données est « Syslog ». L'utilisateur est l'utilisateur créé précédemment, il faut marquer « rsyslog » et son mot de passe.
Vous pouvez passer à la suite en cliquant sur « Next ».
Étape 4
L'étape 4 nous montre que l'on a réussi à connecter la base de données.
Il faut passer à l'étape 5 en cliquant sur « Next ».
Étape 5
Les tables ont été créées, il n'y a pas d'erreur. On peut passer à l'étape 6 en cliquant sur « Next ».
Étape 6
Il faut créer un utilisateur pour accéder à l'interface web de Loganalyzer. Mettez un nom d'utilisateur et créez un mot de passe. Vous pouvez passer à l'étape 7 en cliquant sur « Next ».
Étape 7
Nous allons créer la source pour les messages syslog. Premièrement, changez le nom de la source. J'ai choisi « Database-syslog ».
Le type de source doit être « MYSQL Native ». Après avoir effectué cette action, des options s'ajoutent pour la base de données.
Il va falloir changer le nom de la base de données et l'utilisateur comme dans l'étape 3. Le nom de la base de données est « Syslog ». L'utilisateur est l'utilisateur créé précédemment, il faut marquer « rsyslog » et son mot de passe.
Vous pouvez cliquer sur « Next » pour passer à l'étape 8.
Étape 8
On nous informe que vous venez de finir d'installer Loganalyzer ! Vous pouvez cliquer sur « Finish » pour accéder à l'interface.
Étape finale
Vous pouvez maintenant voir les événements, leur sévérité, les tags, etc.
****************************************************************************************************************