Comment configurer le serveur de journalisation centrale avec RSYSLOG dans Linux

Comment configurer le serveur de journalisation centrale avec RSYSLOG dans Linux

Bûches sont un composant essentiel de tout logiciel ou système d'exploitation. Les journaux enregistrent généralement les actions des utilisateurs, les événements système, l'activité du réseau et bien plus encore, selon ce dont ils sont destinés. L'un des systèmes de journalisation les plus utilisés sur les systèmes Linux est rsyslog.

Rsyslog est un système de traitement de journal puissant, sécurisé et haute performance qui accepte les données de différents types de source (systèmes / applications) et les publie en plusieurs formats.

Il a évolué à partir d'un régulier syslog démon à un système de journalisation entièrement entièrement en fonction de l'entreprise. Il est conçu dans un modèle client / serveur, il peut donc être configuré en tant que client et / ou en tant que serveur de journalisation centrale pour d'autres serveurs, périphériques réseau et applications distantes.

Environnement de test

Aux fins de ce guide, nous utiliserons les hôtes suivants:

  • Serveur: 192.168.241.140
  • Client: 172.31.21.58

Comment installer et configurer le serveur RSYSLOG

La plupart des distributions Linux sont livrées avec le rsyslog package préinstallé. Dans le cas où il n'est pas installé, vous pouvez l'installer à l'aide de votre outil Linux Package Manager comme indiqué.

$ sudo yum Update && yum install rsyslog #centos 7 $ sudo apt update && apt install rsyslog #ubuntu 16.04, 18.04 

Une fois rsyslog Installé, vous devez démarrer le service pour l'instant, permettez-le de démarrer automatiquement au démarrage et de vérifier son état avec la commande SystemCTL.

$ sudo systemctl start rsyslog $ sudo systemctl activer rsyslog $ sudo systemctl status rsyslog 

Le fichier de configuration Rsyslog principal est situé à / etc / rsyslog.confli, qui charge les modules, définit les directives globales, contient des règles pour le traitement des messages du journal et il inclut également tous les fichiers de configuration dans / etc / rsyslog.d/ pour diverses applications / services.

$ sudo vim / etc / rsyslog.confli 

Par défaut, rsyslog utilise le imjournal et imusock modules pour l'importation de messages de journal structurés de Journal Systemd et pour accepter les messages syslog des applications exécutées sur le système local via des sockets Unix, respectivement.

Modules RSYSLOG pour la journalisation

Pour configurer RSYSLOG en tant que serveur de journalisation réseau / central, vous devez définir le protocole (soit UDP ou TCP ou les deux) il sera utilisé pour la réception Syslog distante ainsi que pour le port sur lequel il écoute.

Si vous souhaitez utiliser un UDP Connexion, qui est plus rapide mais peu fiable, recherche et décalmente les lignes ci-dessous (remplacer 514 Avec le port sur lequel vous souhaitez écouter, cela devrait correspondre à l'adresse du port à laquelle les clients envoient des messages, nous examinerons ceci davantage lors de la configuration d'un client RSYSLOG).

$ Modload iMudp $ udpServerrun 514 

Utiliser TCP connexion (qui est plus lente mais plus fiable), recherchez et décommentez les lignes ci-dessous.

$ Modload imtcp $ inputtcpServerrun 514 

Dans ce cas, nous voulons utiliser les connexions UDP et TCP en même temps.

Configurer le serveur de journalisation RSYSLOG

Ensuite, vous devez définir le règlement pour traiter les journaux distants dans le format suivant.

facilité.RESTRIRITY_LEVELL (où stocker le journal) 

Où:

  • facilité: le type de message de production / application, ils incluent Auth, Cron, Daemon, Kernel, Local0… local7. En utilisant * signifie toutes les installations.
  • degré de gravité: est le type de message du journal: émerge-0, alert-1, critique-2, err-3, warn-4, notification-5, info-6, debug-7. En utilisant * signifie tous les niveaux de gravité et aucun n'implique aucun niveau de gravité.
  • destination: est soit un fichier local ou un serveur RSYSLOG distant (défini dans le formulaire IP: port).

Nous utiliserons ce qui suit règlement pour collecter des journaux à partir d'hôtes distants, en utilisant le Remotelogs modèle. Notez que ces règles doivent être présentées avant toutes les règles de traitement des messages locaux, comme indiqué dans la capture d'écran.

$ template remotelogs, "/ var / log /% hostname% /% ProgramName%.enregistrer" *.* ?Remotelogs & ~ 
Définir RudeSet pour Rsyslog-Logging

En regardant ce qui précède règlement, La première règle est «$ Template Remotelogs», / var / log /% hostname% /% ProgramName%.enregistrer"".

La directive $ modèle dit à Rsyslog Daemon de rassembler et d'écrire tous les messages distants reçus à des journaux distincts sous / var / log, basé sur nom d'hôte (nom de la machine client) et installation client distante (programme / application) qui a généré les messages tels que définis par les paramètres présents dans le modèle Remotelogs.

La deuxième ligne "*.* ?Remotelogs » signifie enregistrer les messages de toutes les installations à tous les niveaux de gravité en utilisant le Remotelogs configuration du modèle.

La dernière ligne "& ~" Demande à RSYSLOG de cesser de traiter les messages une fois qu'il est écrit dans un fichier. Si vous n'incluez pas "& ~", Les messages seront plutôt écrits dans les fichiers locaux.

Il existe de nombreux autres modèles que vous pouvez utiliser, pour plus d'informations, consultez la page Rsyslog Configuration Man (homme Rsyslog.confli) ou référer à la documentation en ligne RSYSLOG.

C'est tout avec la configuration du serveur RSYSLOG. Enregistrer et fermer le fichier de configuration. Pour appliquer les changements récents, redémarrez le démon Rsyslog avec la commande suivante.

$ sudo systemctl redémarrer rsyslog 

Vérifiez maintenant les prises de réseau RSYSLOG. Utilisez le Commande SS (ou netstat avec les mêmes drapeaux) Commandez et tuyez la sortie sur Grep pour filtrer les connexions RSYSLOGD.

$ sudo ss -tulnp | grep "rsyslog" 
Vérifiez l'état du réseau RSYSLOG

Ensuite, sur Centos 7, si tu as Selinux activé, exécutez les commandes suivantes pour permettre le trafic RSYSLOG en fonction du type de socket réseau.

$ sudo semanage -a -t syslogd_port_t -p udp 514 $ sudo semanage -a -t syslogd_port_t -p tcp 514 

Si le système a activé le pare-feu, vous devez ouvrir le port 514 Pour permettre les deux UDP / TCP Connexions au serveur RSYSLOG, en exécutant.

------------- Sur Centos ------------- $ sudo Firewall-Cmd - Permanent --Add-Port = 514 / UDP $ sudo Firewall-CMD - PERMANENT --ADD-PORT = 514 / TCP $ sudo Firewall-Cmd --RELOAD ------------- Sur Ubuntu ------------- $ sudo ufw permettre 514 / udp $ sudo ufw permettre 514 / tcp $ sudo ufw rechargement 

Comment configurer le client RSYSLOG pour envoyer des journaux au serveur RSYSLOG

Maintenant, sur le système client, vérifiez si le service RSYSLOG est en cours d'exécution ou non avec la commande suivante.

$ sudo systemctl status rsyslog 

S'il n'est pas installé, installez-le et démarrez le service comme indiqué précédemment.

$ sudo yum Update && yum install rsyslog #centos 7 $ sudo apt update && apt install rsyslog #ubuntu 16.04, 18.04 $ sudo systemctl start rsyslog $ sudo systemctl activer rsyslog $ sudo systemctl status rsyslog 

Une fois le service RSYSLOG en cours d'exécution, ouvrez le fichier de configuration principale où vous effectuez des modifications à la configuration par défaut.

$ sudo vim / etc / rsyslog.confli 

Pour forcer le démon RSYSLOG à agir en tant que client de journal et transférer tous les messages de journal générés localement vers le serveur Rsyslog distant, ajoutez cette règle de transfert, à la fin du fichier comme indiqué dans la capture d'écran suivante.

*. * @@ 192.168.100.10: 514 
Configurer le client RSYSLOG

La règle ci-dessus enverra des messages de toutes les installations et à tous les niveaux de gravité. Pour envoyer des messages à partir d'une installation spécifique par exemple authentification, Utilisez la règle suivante.

authentification. * @@ 192.168.100.10: 514 

Enregistrer les modifications et fermer le fichier de configuration. Pour appliquer les paramètres ci-dessus, redémarrez le démon rsyslog.

$ sudo systemctl redémarrer rsyslog 

Comment surveiller la journalisation à distance sur le serveur RSYSLOG

La dernière étape consiste à vérifier si le rsyslog reçoit et enregistre réellement les messages du client, sous / var / log, sous la forme nom d'hôte / nom de programme.enregistrer.

Exécutez une commande LS vers une longue liste du répertoire des journaux parents et vérifiez s'il y a un répertoire appelé IP-172.31.21.58 (ou quel que soit le nom d'hôte de votre machine client).

 $ ls -l / var / log / 
Vérifiez la journalisation du client RSYSLOG

Si le répertoire existe, vérifiez les fichiers journaux à l'intérieur, en exécutant.

$ sudo ls -l / var / log / ip-172-31-21-58 / 
Vérifiez les journaux des clients RSYSLOG
Résumé

Rsyslog est un système de traitement de journal haute performance, conçu dans une architecture client / serveur. Nous espérons que vous pourrez installer et configurer Rsyslog En tant que serveur de journalisation centrale / réseau et en tant que client comme démontré dans ce guide.

Vous pouvez également vous référer aux pages manuelles RSYSLOG pertinentes pour plus d'aide. N'hésitez pas à nous donner des commentaires ou à poser des questions.