GNU/Linux >> Tutoriels Linux >  >> Debian

Installer un serveur de journal centralisé avec Rsyslog dans Debian 9

Sous Linux, les fichiers journaux sont des fichiers contenant des messages sur les fonctions système qui sont utilisés par les administrateurs système pour identifier d'éventuels problèmes sur les machines. Les journaux aident les administrateurs à visualiser les événements qui se sont produits dans le système au fil des périodes. Habituellement, tous les fichiers journaux sont conservés sous /var/log répertoire sous Linux. À cet emplacement, il existe plusieurs types de fichiers journaux pour stocker divers messages, tels qu'un fichier journal pour enregistrer les événements système, un fichier journal pour les messages liés à la sécurité, d'autres fichiers journaux dédiés au noyau, aux utilisateurs ou aux tâches cron. L'objectif principal des fichiers journaux est de résoudre les problèmes du système. La plupart des fichiers journaux sous Linux sont contrôlés par le service rsyslogd. Sur les versions plus récentes des distributions Linux, les fichiers journaux sont également contrôlés et gérés par le service système journald, qui fait partie du programme d'initialisation systemd. Les journaux stockés par le démon de journal sont écrits dans un format binaire et sont principalement volatils, stockés dans la RAM et dans un tampon en anneau dans /run/log/journal/. Cependant, le service de journal peut également être configuré pour stocker en permanence les messages Syslog.

Sous Linux, le serveur rsyslog peut être configuré pour exécuter un gestionnaire de journal central, à la manière d'un modèle de service client, et envoyer des messages de journal sur le réseau via les protocoles de transport TCP ou UDP ou recevoir des journaux de périphériques réseau, serveurs, routeurs, commutateurs ou d'autres systèmes ou appareils intégrés qui génèrent des journaux.

Le démon Rsyslog peut être configuré pour s'exécuter en tant que client et serveur en même temps. Configuré pour fonctionner en tant que serveur, Rsyslog écoutera sur le port par défaut 514 TCP et UDP et commencera à collecter les messages de journal qui sont envoyés sur le réseau par des systèmes distants. En tant que client, Rsyslog enverra sur le réseau les messages du journal interne à un serveur Ryslog distant via les mêmes ports TCP ou UDP.

Rsyslog filtrera les messages syslog en fonction des propriétés et des actions sélectionnées. Les filtres rsyslog sont les suivants :

  1. Déclarants d'établissement ou prioritaires
  2. Filtres basés sur les propriétés
  3. Filtres basés sur les expressions

La installation filter est représenté par le sous-système interne Linux qui produit les journaux. Ils sont classés comme présenté ci-dessous :

  • auth/authpriv =messages produits par les processus d'authentification
  • cron =journaux liés aux tâches cron
  • démon =messages liés à l'exécution des services système
  • noyau =Messages du noyau Linux
  • courrier =messages du serveur de messagerie
  • syslog =messages liés à syslog ou à d'autres démons (le serveur DHCP envoie les journaux ici)
  • lpr =imprimantes ou messages du serveur d'impression
  • local0 - local7 =messages personnalisés sous le contrôle de l'administrateur

La priorité ou gravité les niveaux sont attribués à un mot-clé et à un numéro, comme décrit ci-dessous.

  • urgence =Urgence - 0
  • alerte =Alertes - 1
  • erreur =Erreurs - 3
  • avertir =Avertissements - 4
  • avis =Avis – 5
  • informations =Informations - 6
  • déboguer =Débogage - 7 niveau le plus élevé

Il existe également des mots-clés spéciaux Rsyslog disponibles tels que l'astérisque (* ) signe pour définir tous les
équipements ou priorités, le aucun mot-clé qui ne spécifie aucune priorité, le signe égal (= ) qui sélectionne uniquement cette priorité et le signe d'exclamation (! ) qui annule une priorité.

La partie action du syslog est représentée par la destination déclaration. La destination d'un message de journal peut être un fichier stocké dans le système de fichiers, un fichier dans le chemin système /var/log/, une autre entrée de processus local via un tube nommé ou FIFO. Les messages du journal peuvent également être dirigés vers les utilisateurs, rejetés vers un trou noir (/dev/null) ou envoyés vers stdout ou vers un serveur syslog distant via le protocole TCP/UDP. Les messages du journal peuvent également être stockés dans une base de données, telle que MySQL ou PostgreSQL.

Configurer Rsyslog en tant que serveur

Le démon Rsyslog est automatiquement installé dans la plupart des distributions Linux. Cependant, si Rsyslog n'est pas installé sur votre système, vous pouvez émettre l'une des commandes ci-dessous afin d'installer le service> vous aurez besoin des privilèges root pour exécuter les commandes.

Dans les distributions basées sur Debian :

sudo apt-get install rsyslog

Dans les distributions basées sur RHEL comme CentOS :

sudo yum install rsyslog

Afin de vérifier si le démon Rsyslog est démarré sur un système, exécutez les commandes ci-dessous, en fonction de la version de votre distribution.

Sur les distributions Linux plus récentes avec systemd :

systemctl status rsyslog.service

Sur les anciennes versions de Linux avec init :

service rsyslog status
/etc/init.d/rsyslog status

Pour démarrer le démon rsyslog, exécutez la commande suivante.

Sur les anciennes versions de Linux avec init :

service rsyslog start
/etc/init.d/rsyslog start

Sur les dernières distributions Linux :

systemctl start rsyslog.service

Pour configurer un programme rsyslog pour qu'il s'exécute en mode serveur, modifiez le fichier de configuration principal dans /etc/rsyslog.conf. Dans ce fichier, apportez les modifications suivantes, comme indiqué dans l'exemple ci-dessous.

sudo vi /etc/rsyslog.conf

Localisez et décommentez en supprimant le hashtag (#) les lignes suivantes afin de permettre la réception des messages du journal UDP sur le port 514. Par défaut, le port UDP est utilisé par syslog pour envoyer et recevoir des messages.

$ModLoad imudp 
$UDPServerRun 514

Étant donné que le protocole UDP n'est pas fiable pour échanger des données sur un réseau, vous pouvez configurer Rsyslog pour envoyer des messages de journal à un serveur distant via le protocole TCP. Pour activer le protocole de réception TCP, ouvrez /etc/rsyslog.conf fichier et décommentez les lignes suivantes comme indiqué ci-dessous. Cela permettra au démon rsyslog de se lier et d'écouter sur un socket TCP sur le port 514.

$ModLoad imtcp 
$InputTCPServerRun 514

Les deux protocoles peuvent être activés dans rsyslog pour s'exécuter en même temps.

Si vous souhaitez spécifier à quels expéditeurs vous autorisez l'accès au démon rsyslog, ajoutez la ligne suivante après les lignes de protocole activées :

$AllowedSender TCP, 127.0.0.1, 10.110.50.0/24, *.yourdomain.com

Vous devrez également créer un nouveau modèle qui sera analysé par le démon rsyslog avant de recevoir les journaux entrants. Le modèle doit indiquer au serveur Rsyslog local où stocker les messages de journal entrants. Définissez le modèle juste après le $AllowedSender ligne comme indiqué dans l'exemple ci-dessous.

$template Incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
*.*  ?Incoming-logs
& ~

  Pour enregistrer uniquement les messages générés par la fonction kern, utilisez la syntaxe ci-dessous.

kern.*   ?Incoming-logs

Les journaux reçus sont analysés par le modèle ci-dessus et seront stockés dans le système de fichiers local dans le répertoire /var/log/, dans des fichiers nommés d'après le nom d'hôte du client qui a produit les messages :%HOSTNAME% et %PROGRAMNAME% variable.

Ci-dessous &~ La règle de redirection configure le démon Rsyslog pour enregistrer les messages de journal entrants uniquement dans les fichiers ci-dessus spécifiés par les noms de variables. Sinon, les journaux reçus seront traités ultérieurement et également stockés dans le contenu des journaux locaux, tels que le fichier /var/log/syslog.

Pour ajouter une règle pour supprimer tous les messages de journal associés à la messagerie, vous pouvez utiliser l'instruction suivante.

mail.* ~

Les autres variables qui peuvent être utilisées pour générer les noms de fichiers sont :%syslogseverity%, %syslogfacility%, %timegenerated%, %HOSTNAME%, %syslogtag%, %msg%, %FROMHOST-IP%, %PRI%, %MSGID%, %APP-NAME%, %TIMESTAMP%, %$année%, %$mois%, %$jour%

À partir de la version 7 de Rsyslog, un nouveau format de configuration peut être utilisé pour déclarer un modèle dans un serveur Rsyslog.

Un exemple de modèle version 7 peut ressembler à celui illustré dans les lignes ci-dessous.

template(name="MyTemplate" type="string"
         string="/var/log/%FROMHOST-IP%/%PROGRAMNAME:::secpath-replace%.log"
        )

  Un autre mode dans lequel vous pouvez écrire le modèle ci-dessus peut également être comme indiqué ci-dessous :

template(name="MyTemplate" type="list") {
    constant(value="/var/log/")
    property(name="fromhost-ip")
    constant(value="/")
    property(name="programname" SecurePath="replace")
    constant(value=".log")
    }

Afin d'appliquer les modifications apportées au fichier de configuration rsyslog, vous devez redémarrer le démon pour charger la nouvelle configuration.

sudo service rsyslog restart
sudo systemctl restart rsyslog

Pour vérifier quelles sockets rsyslog en état d'écoute sont ouvertes sur un système Debian Linux, vous pouvez exécuter le netstat commande avec les privilèges root. Transmettre les résultats via un utilitaire de filtrage, tel que grep .

sudo netstat –tulpn | grep rsyslog

Sachez que vous devez également ouvrir les ports Rsyslog dans le pare-feu afin de permettre l'établissement de connexions entrantes.

Dans les distributions basées sur RHEL avec Firewalld activé, exécutez les commandes ci-dessous :

firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --permanent --add-port=514/tcp
firewall-cmd –reload

Dans les distributions basées sur Debian avec un pare-feu UFW actif, exécutez les commandes ci-dessous :

ufw allow 514/tcp
ufw allow 514/udp

Règles de pare-feu Iptables :

iptables -A INPUT -p tcp -m tcp --dport 514 -j ACCEPT
iptables -A INPUT -p udp --dport 514 -j ACCEPT

Configurer Rsyslog en tant que client

Pour permettre au démon rsyslog de s'exécuter en mode client et de générer des messages de journal local sur un serveur Rsyslog distant, modifiez /etc/rsyslog.conf fichier et ajoutez l'une des lignes suivantes :

*. *  @IP_REMOTE_RSYSLOG_SERVER:514
*. *  @FQDN_RSYSLOG_SERVER:514

Cette ligne permet au service Rsyslog de sortir tous les journaux internes vers un serveur Rsyslog distant sur le port UDP 514.

Pour envoyer les journaux via le protocole TCP, utilisez le modèle suivant :

*. *  @@IP_reomte_syslog_server:514

Pour envoyer uniquement les journaux liés à cron avec toutes les priorités vers un serveur rsyslog, utilisez le modèle ci-dessous :

cron.* @ IP_reomte_syslog_server:514

Dans les cas où le serveur Rsyslog n'est pas accessible via le réseau, ajoutez les lignes ci-dessous au fichier /etc/rsyslog.conf côté client afin de stocker temporairement les journaux dans un fichier tamponné sur disque, jusqu'à ce que le serveur soit en ligne.

$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1

Pour appliquer les règles ci-dessus, le démon Rsyslog doit être redémarré afin d'agir en tant que client.


Debian
  1. Comment installer le serveur Redis sur Debian 11

  2. Comment installer le serveur HTTP Git avec Nginx sur Debian 11

  3. Installer WordPress avec une base de données distante sur Debian

  4. Installer Cockpit sur Debian 9

  5. Installer phpMyAdmin sur Debian 11 avec Nginx

Installer WordPress 5 avec Apache sur Debian 9

Comment surveiller les fichiers journaux avec Graylog v3.1 sur Debian 10

Comment installer MySQL 8 sur Debian 10

Comment installer le serveur FTP vsftpd avec TLS sur Debian 10

Gestion centralisée des logs en installant rsyslog sur Debian 11 !

Comment installer Nginx avec PHP-FPM sur Debian 11