Comment créer un serveur de journaux centralisé avec RSYSLOG dans Centos / Rhel 7

Comment créer un serveur de journaux centralisé avec RSYSLOG dans Centos / Rhel 7

Pour que l'administrateur système puisse identifier ou résoudre un problème sur un Centos 7 ou Rhel 7 Système de serveur, il doit connaître et afficher les événements qui se sont produits sur le système dans une période spécifique à partir des fichiers journaux stockés dans le système dans le / var / log annuaire.

Le serveur syslog sur une machine Linux peut agir un point de surveillance central sur un réseau où tous les serveurs, périphériques réseau, routeurs, commutateurs et la plupart de leurs services internes qui génèrent des journaux, qu'ils soient liés à un problème interne spécifique ou à des messages informatifs peuvent envoyer leurs journaux.

Sur un Centos / Rhel 7 système, Rsyslog Daemon est le serveur journal principal préinstallé, suivi de Systemd Journal Daemon (journal).

Rsyslog serveur dans la construction en tant que service d'architecture client / serveur et peut réaliser les deux rôles simultanés. Il peut s'exécuter en tant que serveur et collecter tous les journaux transmis par d'autres appareils du réseau ou s'exécuter en tant que client en envoyant tous les événements système internes connectés à un serveur Syslog à point de terminaison distant.

Lorsque RSYSLOG est configuré en tant que client, les journaux peuvent être stockés localement dans des fichiers sur le système de fichiers local ou peuvent être envoyés à distance plutôt que de les écrire dans des fichiers stockés sur la machine ou d'écrire des fichiers journaux localement et de les envoyer à un serveur syslog distant chez le même temps.

Syslog Server exploite n'importe quel message de journal à l'aide du schéma suivant:

Type (installation).destination prioritaire (gravité) (où envoyer le journal) 

UN. Le facilité ou les données de type sont représentées par les processus système internes qui génèrent les messages. Dans les processus internes de Linux (installations) qui génèrent des journaux sont standardisés comme suit:

  • authentification = messages générés par les processus d'authentification (connexion).
  • cron= messages générés par les processus planifiés (Crontab).
  • démon = messages générés par les démons (services internes).
  • noyau = messages générés par le noyau Linux lui-même.
  • poster = messages générés par un serveur de messagerie.
  • syslog = messages générés par le démon Rsyslog lui-même.
  • LPR = messages générés par des imprimantes locales ou un serveur d'impression.
  • local0 - local7 = Messages personnalisés définis par un administrateur (local7 est généralement attribué pour Cisco ou Windows).

B. Le priorité (gravité) Les niveaux sont également standardisés. Chaque priorité est attribuée avec une abréviation standard et un nombre comme décrit ci-dessous. La 7e priorité est le niveau supérieur de tous.

  • émerger = Urgence - 0
  • alerte = Alertes - 1
  • se tromper = Erreurs - 3
  • avertir = Avertissements - 4
  • avis = Notification - 5
  • Info = Information - 6
  • déboguer = Débogage - 7

Mots-clés spéciaux RSYSLOG:

  • * = toutes les installations ou priorités
  • aucun = Les installations n'ont aucune priorité donnée, par exemple: poster.aucun

C. La troisième partie du schéma syslog est représentée par le destination directif. Rsyslog Daemon peut envoyer des messages de journal à écrire dans un fichier sur le système de fichiers local (principalement dans un fichier en / var / log / répertoire) ou être tué vers un autre processus local ou être envoyé à une console utilisateur locale (à STDOUT), ou envoyer le message à un serveur Syslog distant via le protocole TCP / UDP, ou même rejeter le message à / dev / null.

Afin de configurer Centos / Rhel 7 En tant que serveur de journaux centraux, nous devons d'abord vérifier et nous assurer que le / var La partition où tous les fichiers journaux sont enregistrés est suffisamment grand (quelques Go minimum) afin de pouvoir stocker tous les fichiers journaux qui seront envoyés par d'autres appareils. C'est une bonne décision d'utiliser un lecteur séparé (LVM, RAID) pour monter le / var / log / annuaire.

Exigences

  1. Centos 7.3 Procédure d'installation
  2. Rhel 7.3 Procédure d'installation

Comment configurer RSYSLOG dans Centos / Rhel 7 Server

1. Par défaut, Rsyslog Le service est automatiquement installé et devrait fonctionner Centos / Rhel 7. Afin de vérifier si le démon est démarré dans le système, émettez la commande suivante avec des privilèges racines.

# Statut SystemCTL RSYSLOG.service 
Vérifier le service RSYSLOG

Si le service n'est pas en cours d'exécution par défaut, exécutez la commande ci-dessous afin de démarrer le démon Rsyslog.

# systemctl start rsyslog.service 

2. Si le package RSYSLOG n'est pas installé sur le système que vous avez l'intention d'utiliser comme serveur de journalisation centralisé, émettez la commande suivante pour installer le package RSYSLOG.

# yum install rsyslog 

3. La première étape que nous devons faire sur le système afin de configurer Rsyslog Daemon en tant que serveur de journal centralisé, afin qu'il puisse recevoir des messages de journal pour les clients externes, est d'ouvrir et de modifier, en utilisant votre éditeur de texte préféré, le fichier de configuration principal de / etc / rsyslog.confli, comme présenté dans l'extrait ci-dessous.

# vi / etc / rsyslog.confli 

Dans le fichier de configuration principale RSYSLOG, recherchez et décommentez les lignes suivantes (supprimez le hashtag # Signer à la ligne commençant) afin de fournir une réception de transport UDP vers le serveur RSYSLOG via 514 port. UDP est le protocole standard utilisé pour la transmission logarithmique par RSYSLOG.

$ Modload iMudp $ udpServerrun 514 
Configurer le serveur RSYSLOG

4. Le protocole UDP n'a pas la surcharge TCP, ce qui le rend plus rapide pour transmettre des données que le protocole TCP. D'un autre côté, le protocole UDP n'assure pas la fiabilité des données transmises.

Cependant, si vous avez besoin d'utiliser le protocole TCP pour la réception du journal, vous devez rechercher et décommenter les lignes suivantes de / etc / rsyslog.confli Fichier afin de configurer Rsyslog Daemon pour lier et écouter une prise TCP sur le port 514. Les prises d'écoute TCP et UDP pour la réception peuvent être configurées sur un serveur RSYSLOG simultanément.

$ Modload imtcp $ inputtcpServerrun 514 

5. À l'étape suivante, ne fermez pas encore le fichier, créez un nouveau modèle qui sera utilisé pour recevoir des messages distants. Ce modèle instruira le serveur RSYSLOG local où enregistrer les messages reçus envoyés par les clients du réseau syslog. Le modèle doit être ajouté avant le début du Directives mondiales bloc comme illustré dans l'extrait ci-dessous.

$ template remotelogs, "/ var / log /% hostname% /% ProgramName%.enregistrer"  . ?Remotelogs & ~ 
Créer un modèle RSYSLOG

Ce qui précède $ template remotelogs Directive Insigne Rsyslog Daemon pour collecter et écrire tous les messages de journal reçus dans des fichiers distincts, en fonction du nom de la machine client et de l'installation client distante (application) qui a généré les messages en fonction des propriétés définies présentent dans la configuration du modèle: % Hostname% et %NOM DU PROGRAMME%.

Tous ces fichiers journaux seront écrits sur le système de fichiers local à un fichier dédié nommé d'après le nom d'hôte de la machine client et stocké dans / var / log / répertoire.

Le & ~ La règle de redirection ordonne au serveur RSYSLOG local pour arrêter le traitement du message du journal reçu plus loin et rejeter les messages (pas les écrire dans les fichiers journaux internes).

Le Remotelogs Le nom est un nom arbitraire donné à cette directive de modèle. Vous pouvez utiliser le nom que vous pouvez trouver le mieux adapté à votre modèle.

Afin d'écrire tous les messages reçus de clients dans un seul fichier journal nommé d'après l'adresse IP du client distant, sans filtrer l'installation qui a généré le message, utilisez l'extrait ci-dessous.

$ Template FROMIP, "/ var / log /% FromHost-ip%.enregistrer"  . ?FROMIP & ~ 

Un autre exemple de modèle où tous les messages avec indicateur de l'installation d'automne seront enregistrés sur un modèle nommé «Tmplauth".

$ template tmplAuth, "/ var / log /% hostname% /% ProgramName%.Log "Authpriv.* ?Tmplauth 

Vous trouverez ci-dessous un formulaire extrait une définition de modèle à partir du serveur RSYSLOG 7:

modèle (name = "tmpplmsg" type = "string" string = "/ var / log / distote / msg /% hostname% /% ProgramName ::: Secpath-Replace%.enregistrer" ) 

L'extrait de modèle ci-dessus peut également être écrit comme:

template (name = "tmpplmsg" type = "list") constante (value = "/ var / log / distote / msg /") propriété (name = "hostname") constante (valeur = "/") propriété (name = "ProgramName" SecurePath = "Remplace") Constante (valeur = ".enregistrer")  

Pour écrire des modèles complexes rsyslog, lisez le manuel du fichier de configuration RSYSLOG en émettant homme Rsyslog.confli commander ou consulter la documentation en ligne RSYSLOG.

6. Après avoir modifié le fichier de configuration RSYSLOG avec vos propres paramètres comme expliqué ci-dessus, redémarrez le démon RSYSLOG afin d'appliquer des modifications en émettant la commande suivante:

# Service Rsyslog Redémarrer 

7. À l'heure actuelle, le serveur RSYSLOG doit être configuré pour agir un serveur de journal centralisé et enregistrer les messages des clients Syslog. Pour vérifier les sockets de réseau RSYSLOG, exécutez la commande netstat avec des privilèges racine et utilisez le grep pour filtrer la chaîne RSYSLOG.

# netStat -Tulpn | grep rsyslog 
Vérifiez la prise de réseau RSYSLOG

8. Si vous avez SELINUX activé dans Centos / Rhel 7, Émettez la commande suivante pour configurer SELINUX pour permettre le trafic RSYSLOG en fonction du type de socket réseau.

# SEMANAGE -A -T SYSLOGD_PORT_T -P UDP 514 # SEMANAGE -A -T SYSLOGD_PORT_T -P TCP 514 

9. Si le pare-feu est activé et actif, exécutez la commande ci-dessous afin d'ajouter les règles nécessaires pour ouvrir les ports RSYSLOG dans Firewalld.

# Firewall-CMD - Permanent --Add-Port = 514 / TCP # Firewall-CMD --permanent --Add-Port = 514 / UDP # Firewall-Cmd -reload 

C'est tout! RSYSLOG est désormais configuré en mode serveur et peut centraliser les journaux des clients distants. Dans l'article suivant, nous verrons comment configurer le client RSYSLOG sur le serveur CentOS / RHEL 7.

En utilisant le serveur RSYSLOG comme point de surveillance central pour les messages journaux distants, vous pouvez inspecter les fichiers journaux et observer l'état de santé des clients ou déboguer les problèmes du client plus facilement lorsque les systèmes s'écrasent ou sont sous une sorte d'attaque.