Rsyslog est un programme de journalisation open source qui utilise le réseau IP pour envoyer tous les fichiers journaux à un serveur de journalisation centralisé. Il s'agit d'une version améliorée de Syslog sous Linux. Il permet aux administrateurs système de surveiller tous les serveurs à partir d'un seul emplacement.
Rsyslog fonctionne dans un modèle client/serveur qui reçoit les journaux des clients distants sur le port 514 ou tout port personnalisé configuré via le protocole TCP/UDP. Il prend également en charge les bases de données ( MySQL, PostgreSQL ) utilisées pour stocker les journaux.
Chez LinuxAPT, dans le cadre de nos services de gestion de serveur, nous aidons régulièrement nos clients à effectuer des requêtes de configuration Rsyslog sur le système Linux.
Dans ce cadre, nous verrons comment installer et configurer Rsyslog sur Debian 10 / 11.
Étapes pour installer et configurer le serveur Rsyslog sur le système Debian Linux
1. Installez le serveur Rsyslog
Pour commencer, installez le package Rsyslog à partir du référentiel Debian sur votre machine serveur. Exécutez la commande ci-dessous :
$ sudo apt-get install rsyslog -y
Une fois l'installation terminée, vérifiez que Rsyslog fonctionne correctement comme indiqué ci-dessous :
$ sudo systemctl status rsyslog
Si tout va bien, le service Rsyslog est maintenant opérationnel sur votre machine serveur.
2. Configurer le serveur Rsyslog
Maintenant qu'il est en cours d'exécution, configurez Rsyslog pour qu'il s'exécute en tant que serveur sur votre système Debian. Ouvrez le fichier de configuration qui est /etc/rsyslog.conf :
$ sudo vim /etc/rsyslog.conf
Localisez les lignes ci-dessous et décommentez-les pour la réception des journaux UDP et TCP des clients distants :
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")
Ensuite, nous devons spécifier le modèle que le démon Rsyslog utilisera pour stocker les journaux entrants des systèmes clients. Ajoutez les lignes suivantes à la fin de votre fichier de configuration :
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs
Ensuite, Redémarrez rsyslog pour que les modifications prennent effet :
$ sudo systemctl restart rsyslog
Rsyslog écoute sur le port 514. Vous pouvez modifier le port par défaut dans le fichier de configuration. Pour vérifier que le démon rsyslog écoute sur le port 514, exécutez la commande ss suivante :
$ sudo ss -tunlp | grep 514
3. Configurer le pare-feu pour rsyslog
Le démon rsyslog est maintenant configuré sur le serveur. Si vous êtes derrière le pare-feu UFW, autorisez le port 514 afin que le serveur puisse recevoir les messages de journal des clients. Exécutez les commandes :
$ sudo ufw allow 514/tcp
$ sudo ufw allow 514/udp
Redémarrez le pare-feu pour que les nouvelles règles soient appliquées. Exécutez la commande :
$ sudo ufw reload
4. Configurer le client Rsyslog
Ensuite, configurez le client Rsyslog pour envoyer des messages de journal au serveur Rsyslog. Assurez-vous que RSyslog est correctement installé sur votre ordinateur client.
Commencez par ouvrir le fichier de configuration :
$ sudo nano /etc/rsyslog.conf
Copiez et collez les lignes ci-dessous à la fin du fichier :
#Enable sending system logs over UDP to rsyslog server
*.* @rsyslog-server-ip:514
#Enable sending system logs over TCP to rsyslog server
*.* @@rsyslog-server-ip:514
La configuration ci-dessus demande au client d'envoyer des fichiers journaux au serveur rsyslog en utilisant à la fois les protocoles TCP et UDP. Remplacez rsyslog-server-ip par l'adresse IP de votre serveur.
Si le serveur distant tombe en panne et que vous devez conserver vos journaux, vous pouvez définir le tampon de la file d'attente du disque en ajoutant les lignes ci-dessous au fichier de configuration du client :
##Set disk queue when rsyslog server will be down:
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
Enregistrez et fermez le fichier. Rechargez le service rsyslog pour que les changements soient appliqués :
$ sudo systemctl restart rsyslog
5. Afficher les fichiers journaux des clients
Les fichiers journaux Rsyslog sont conservés dans le dossier /var/log/ sur votre serveur. Pour afficher les journaux du client, utilisez la commande ls suivante :
$ ls /var/log/
Par défaut, les fichiers journaux du client sont stockés dans un dossier nommé d'après le nom d'hôte du système client. Dans mon cas, le système client porte le nom d'hôte Debian.
Ensuite, exécutez la commande suivante pour afficher les journaux contenus dans le répertoire du client :
$ sudo ls -l /var/log/debian/
Vous pouvez également consulter les journaux en temps réel sur votre terminal. Voyons les journaux de l'utilisateur root. Exécutez la commande ci-dessous :
$ sudo tail -f /var/log/debian/sudo.log