Recherche de site Web

Comment gérer les journaux système (configurer, faire pivoter et importer dans la base de données) dans RHEL 7 - Partie 5


Afin de garantir la sécurité de vos systèmes RHEL 7, vous devez savoir comment surveiller toutes les activités qui se déroulent sur ces systèmes en examinant les fichiers journaux. Ainsi, vous pourrez détecter toute activité inhabituelle ou potentiellement malveillante et effectuer un dépannage du système ou prendre une autre action appropriée.

Dans RHEL 7, le démon rsyslogd est responsable de la journalisation du système et lit sa configuration à partir de /etc/rsyslog.conf (ce fichier spécifie l'emplacement par défaut de tous les journaux système) et à partir des fichiers contenus dans /etc/rsyslog.d, le cas échéant.

Configuration de Rsyslogd

Une inspection rapide de rsyslog.conf sera utile pour commencer. Ce fichier est divisé en 3 sections principales : Modules (puisque rsyslog suit une conception modulaire), directives Global (utilisées pour définir les propriétés globales du démon rsyslogd) et Règles. Comme vous l'aurez probablement deviné, cette dernière section indique ce qui est enregistré ou affiché (également appelé sélecteur) et où, et sera notre objectif tout au long de cet article.

Une ligne typique dans rsyslog.conf est la suivante :

Dans l'image ci-dessus, nous pouvons voir qu'un sélecteur est constitué d'une ou plusieurs paires Facility:Priority séparées par des points-virgules, où Facility décrit le type de message (reportez-vous à la section 4.1.1 de la RFC 3164 pour voir la liste complète des fonctionnalités disponibles pour rsyslog) et Priorité indique sa gravité, qui peut être l'un des mots explicites suivants :

  1. déboguer
  2. Info
  3. avis
  4. avertissement
  5. se tromper
  6. critique
  7. alerte
  8. émerger

Bien qu'il ne s'agisse pas d'une priorité en soi, le mot-clé aucun signifie aucune priorité pour l'installation donnée.

Remarque : une priorité donnée indique que tous les messages d'une telle priorité et supérieure doivent être enregistrés. Ainsi, la ligne de l'exemple ci-dessus demande au démon rsyslogd d'enregistrer tous les messages d'informations de priorité ou supérieure (quelle que soit la fonction) à l'exception de ceux appartenant à mail, authpriv et cron (aucun message provenant de cette fonctionnalité ne sera pris en compte) vers /var/log/messages.

Vous pouvez également regrouper plusieurs établissements à l’aide du signe deux-points pour leur appliquer tous la même priorité. Ainsi, la ligne :

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

Pourrait être réécrit comme

*.info;mail,authpriv,cron.none                /var/log/messages

En d'autres termes, les fonctionnalités mail, authpriv et cron sont regroupées et le mot-clé aucun est appliqué au trois d'entre eux.

Création d'un fichier journal personnalisé

Pour enregistrer tous les messages du démon dans /var/log/tecmint.log, nous devons ajouter la ligne suivante soit dans rsyslog.conf, soit dans un fichier séparé (plus facile à gérer ) dans /etc/rsyslog.d :

daemon.*    /var/log/tecmint.log

Redémarrons le démon (notez que le nom du service ne se termine pas par un d) :

systemctl restart rsyslog

Et vérifiez le contenu de notre journal personnalisé avant et après le redémarrage de deux démons aléatoires :

En tant qu'exercice d'auto-apprentissage, je vous recommande de jouer avec les fonctionnalités et les priorités et de consigner des messages supplémentaires dans les fichiers journaux existants ou d'en créer de nouveaux comme dans l'exemple précédent.

Rotation des journaux à l'aide de Logrotate

Pour éviter que les fichiers journaux ne s'agrandissent sans fin, l'utilitaire logrotate est utilisé pour faire pivoter, compresser, supprimer et alternativement envoyer par courrier électronique les journaux, facilitant ainsi l'administration des systèmes qui génèrent un grand nombre de fichiers journaux.

Lecture suggérée : Comment configurer et gérer la rotation des journaux à l'aide de Logrotate sous Linux

Logrotate s'exécute quotidiennement en tant que tâche cron (/etc/cron.daily/logrotate) et lit sa configuration à partir de /etc/logrotate .conf et à partir des fichiers situés dans /etc/logrotate.d, le cas échéant.

Comme dans le cas de rsyslog, même lorsque vous pouvez inclure des paramètres pour des services spécifiques dans le fichier principal, la création de fichiers de configuration distincts pour chacun d'entre eux vous aidera à mieux organiser vos paramètres.

Jetons un coup d'œil à un logrotate.conf typique :

Dans l'exemple ci-dessus, logrotate effectuera les actions suivantes pour /var/loh/wtmp : tentera d'effectuer une rotation uniquement une fois par mois, mais uniquement si le fichier est au moins 1 Mo, puis créez un tout nouveau fichier journal avec les autorisations définies sur 0664 et la propriété accordée à l'utilisateur root et au groupe utmp. Ensuite, ne conservez qu'un seul journal archivé, comme spécifié par la directive rotate :

Considérons maintenant un autre exemple trouvé dans /etc/logrotate.d/httpd :

Vous pouvez en savoir plus sur les paramètres de logrotate dans ses pages de manuel (man logrotate et man logrotate.conf). Les deux fichiers sont fournis avec cet article au format PDF pour votre commodité de lecture.

En tant qu'ingénieur système, ce sera à vous de décider pendant combien de temps les journaux seront stockés et dans quel format, selon que vous avez ou non /var dans une partition séparée /< volume logique. Sinon, vous souhaitez vraiment envisager de supprimer les anciens journaux pour économiser de l'espace de stockage. D’un autre côté, vous pourriez être obligé de conserver plusieurs journaux pour de futurs audits de sécurité conformément aux politiques internes de votre entreprise ou de votre client.

Enregistrement des journaux dans une base de données

Bien sûr, examiner les journaux (même avec l'aide d'outils tels que grep et les expressions régulières) peut devenir une tâche plutôt fastidieuse. Pour cette raison, rsyslog nous permet de les exporter dans une base de données (les SGBDR pris en charge par OTB incluent MySQL, MariaDB, PostgreSQL et Oracle.

Cette section du didacticiel suppose que vous avez déjà installé le serveur et le client MariaDB dans la même boîte RHEL 7 où les journaux sont gérés :

yum update && yum install mariadb mariadb-server mariadb-client rsyslog-mysql
systemctl enable mariadb && systemctl start mariadb

Utilisez ensuite l'utilitaire mysql_secure_installation pour définir le mot de passe de l'utilisateur root et d'autres considérations de sécurité :

Remarque : Si vous ne souhaitez pas utiliser l'utilisateur root MariaDB pour insérer les messages de journal dans la base de données, vous pouvez configurer un autre compte utilisateur faire cela. Expliquer comment procéder dépasse le cadre de ce didacticiel mais est expliqué en détail dans la base de connaissances MariaDB. Dans ce tutoriel, nous utiliserons le compte root pour plus de simplicité.

Ensuite, téléchargez le script createDB.sql depuis GitHub et importez-le dans votre serveur de base de données :

mysql -u root -p < createDB.sql

Enfin, ajoutez les lignes suivantes à /etc/rsyslog.conf :

$ModLoad ommysql
$ActionOmmysqlServerPort 3306
*.* :ommysql:localhost,Syslog,root,YourPasswordHere

Redémarrez rsyslog et le serveur de base de données :

systemctl restart rsyslog 
systemctl restart mariadb

Interroger les journaux à l'aide de la syntaxe SQL

Effectuez maintenant certaines tâches qui modifieront les journaux (comme l'arrêt et le démarrage des services, par exemple), puis connectez-vous à votre serveur de base de données et utilisez les commandes SQL standard pour afficher et rechercher dans les journaux :

USE Syslog;
SELECT ReceivedAt, Message FROM SystemEvents;

Résumé

Dans cet article, nous avons expliqué comment configurer la journalisation du système, comment faire pivoter les journaux et comment rediriger les messages vers une base de données pour une recherche plus facile. Nous espérons que ces compétences vous seront utiles lors de votre préparation à l'examen RHCE ainsi que dans vos responsabilités quotidiennes.

Comme toujours, vos commentaires sont plus que bienvenus. N'hésitez pas à utiliser le formulaire ci-dessous pour nous joindre.