Sous Linux, les fichiers journaux sont des fichiers contenant des messages sur les fonctions système utilisées 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 cours des périodes. Habituellement, tous les fichiers journaux sont conservés / var / log répertoire sous Linux. Dans 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 volatiles, stockés dans la RAM et dans un tampon circulaire dans / run / log / journal /. Toutefois, le service de journal peut également être configuré pour stocker de manière permanente les messages Syslog.
Sous Linux, le serveur rsyslog peut être configuré pour exécuter un gestionnaire de journaux central, dans le modèle client-service, et envoyer des messages sur le réseau via des protocoles de transport TCP ou UDP ou recevoir des journaux de périphériques réseau, serveurs, routeurs ou commutateurs. d'autres systèmes ou périphériques 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 va filtrer les messages syslog en fonction des propriétés et actions sélectionnées. Les filtres rsyslog sont les suivants:
- Facilité ou déposant de priorité
- Filtres basés sur la propriété
- Filtres basés sur l'expression
LA facilité Le filtre est représenté par le sous-système interne Linux qui produit les journaux. Ils sont catégorisés comme présentés 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 du système
- kernel = Messages du noyau Linux
- mail = 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 affectés à un mot-clé et un nombre comme décrit ci-dessous.
- émergents = Urgence - 0
- alerter = Alertes - 1
- se tromper = Erreurs - 3
- prévenir = Avertissements - 4
- avis = Notification - 5
- info = Information - 6
- déboguer = Débogage - 7 niveau le plus élevé
Il existe également des mots clés Rsyslog spéciaux, tels que l'astérisque (*) signe pour définir tous
installations ou priorités, le aucun mot-clé qui ne précise pas de priorités, le signe égal (=) qui sélectionne uniquement cette priorité et le signe d'exclamation (!) qui nie une priorité.
La partie action du syslog est représentée par le 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 / var / log / system, une autre entrée de processus locale via un tube nommé ou FIFO. Les messages du journal peuvent également être adressés aux utilisateurs, rejetés dans un trou noir (/ dev / null) ou envoyés à stdout ou à un serveur syslog distant via le protocole TCP / UDP. Les messages de 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 installer rsyslog
Dans les distributions basées sur RHEL comme CentOS:
sudo yum installer rsyslog
Pour 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 nouvelles distributions Linux avec systemd:
état systemctl rsyslog.service
Sur les anciennes versions de Linux avec init:
état du service rsyslog
/etc/init.d/rsyslog status
Pour lancer le démon rsyslog, lancez 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, éditez le fichier de configuration principal /etc/rsyslog.conf. Dans ce fichier, effectuez 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 du message de journal UDP sur le port 514. Par défaut, le port UDP est utilisé par syslog pour envoyer-recevoir des messages.
$ ModLoad imudp $ UDPServerRun 514
Comme le protocole UDP n'est pas fiable pour échanger des données sur un réseau, vous pouvez configurer Rsyslog pour qu'il envoie les 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écommenter les lignes suivantes, comme indiqué ci-dessous. Cela permettra au démon rsyslog de 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, * .votredomaine.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 du journal entrant. Définir le modèle juste après $ AllowedSender ligne comme indiqué dans l'exemple ci-dessous.
$ template Entrants-journaux, "/ var / log /% HOSTNAME% /% PROGRAMNAME% .log" * *. ? Journaux entrants & ~
Pour enregistrer uniquement les messages générés par kern facility, utilisez la syntaxe ci-dessous.
kern. *? Entrants-journaux
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 / var / log /, dans les fichiers nommés après l'installation client de nom du client qui a produit les messages: % HOSTNAME% et %NOM DU PROGRAMME% variables.
Le ci-dessous & ~ La règle de redirection configure le démon Rsyslog pour enregistrer les messages de journal entrant uniquement dans les fichiers ci-dessus spécifiés par les noms de variables. Sinon, les journaux reçus seront traités et stockés dans le contenu des journaux locaux, tels que / var / log / syslog.
Pour ajouter une règle pour ignorer tous les messages de journal liés au courrier, vous pouvez utiliser l'instruction suivante.
mail. * ~
D'autres variables qui peuvent être utilisés pour les noms de fichiers de sortie 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 de version 7 peut ressembler à montré dans les lignes ci-dessous.
modèle (name = "MyTemplate" type = "string" string = "/ var / log /% FROMHOST-IP% /% PROGRAMNAME ::: secpath-replace% .log")
Un autre mode que vous pouvez écrire le modèle ci-dessus peut également être comme indiqué ci-dessous:
modèle (nom = "MyTemplate" type = "liste") {constante (valeur = "/ var / log /") propriété (nom = "fromhost-ip") constante (valeur = "/") propriété (nom = "nom_programme "SecurePath =" replace ") constant (valeur =". Log ")}
Pour appliquer les modifications apportées au fichier de configuration rsyslog, vous devez redémarrer le démon pour charger la nouvelle configuration.
service sudo rsyslog redémarre
sudo systemctl restart rsyslog
Pour vérifier quelles sockets rsyslog à l'état d'écoute sont ouvertes sur un système Linux Debian, vous pouvez exécuter netstat commande avec les privilèges root. Transmettez 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 suivantes:
firewall-cmd --permanent --add-port = 514 / tcp
firewall-cmd --permanent --add-port = 514 / tcp
pare-feu-cmd -reload
Dans les distributions basées sur Debian avec le pare-feu UFW actif, exécutez les commandes suivantes:
ufw autorise 514 / tcp
ufw autorise 514 / udp
Règles du pare-feu Iptables:
iptables -A INPUT -p tcp -m tcp --dport 514 -j ACCEPTER
iptables -A INPUT -p udp --dport 514 -j ACCEPTER
Configurer Rsyslog en tant que client
Pour activer le démon rsyslog en mode client et afficher les messages du 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 distant Rsyslog sur le port UDP 514.
Pour envoyer les journaux via le protocole TCP, utilisez le modèle suivant:
*. * @@ IP_reomte_syslog_server: 514
Pour afficher uniquement les journaux liés à cron avec toutes les priorités sur 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 du côté client afin de stocker temporairement les journaux dans un fichier protégé par un disque, jusqu'à la mise en ligne du serveur.
File d'attente $ ActionQueueFileName $ ActionQueueMaxDiskSpace 1g $ ActionQueueSaveOnShutdown sur $ ActionQueueType LinkedList $ ActionResumeRetryCount -1
Pour appliquer les règles ci-dessus, le démon Rsyslog doit être redémarré pour agir en tant que client.