Serveur Rsyslog en mode Failover sur Debian

Aujourd’hui nous allons configurer un cluster de serveurs rsyslog pour la collecte des logs. Nous allons pour cela configurer 2 serveurs rsyslog et un client (un serveur apache).

Installation

Pour installer le service ryslog, il suffit de taper la commande :

apt install rsyslog

Par défaut, il est déjà installé sur les distributions modernes.

On modifie ensuite le fichier de configuration /etc/rsyslog.conf.

nano /etc/rsyslog.conf

Décommentez les lignes correspondant au protocole que vous souhaitez utiliser, TCP ou UDP (pour ma part j’ai opté pour TCP) :

Pour renforcer la sécurité, vous pouvez limiter la collecte à des protocoles et des réseaux connus (ici TCP et le LAN) :

$AllowedSender TCP, 192.168.1.0/24

Enregistrez ensuite le fichier.
Pour activer et démarrer le service rsyslog, tapez la commande :

systemctl enable rsyslog

systemctl start rsyslog

Vous pouvez vérifier que les ports ouverts sont bien à l’écoute du trafic :

ss -utln

Il faudra reporter la même configuration sur le second serveur rsyslog.

Configuration des clients

Pour les clients, la même démarche est à réaliser, on installe le package et on édite le fichier rsyslog.conf :

apt install rsyslog

nano /etc/rsyslog.conf

On ajoute alors ces lignes dans la liste des règles de logs :

*.* @@IP_SERVEUR1:514

$ActionExecOnlyWhenPreviousIsSuspended on
& @@IP_SERVEUR2:514
& /var/log/localbuffer
$ActionExecOnlyWhenPreviousIsSuspended off

Après avoir modifié le fichier de configuration, vous devrez autoriser et démarrer le service.

systemctl enable rsyslog

systemctl start rsyslog

Trier les logs par machines

Dans /etc/rsyslog.conf sur le serveur, on ajoute quelques commandes dans la section RULES afin de trier les logs en fonction de la source, pour éviter que tous les logs ne remontent dans le même fichier :

$template DynamicFile,"/var/log/syslogclients/%fromhost%-syslog.log"

*.* ?DynamicFile

On redémarre ensuite le service :

systemctl restart rsyslog


Et maintenant dans le dossier /var/log/syslogclients/, sur le serveur primaire, on a un fichier syslog.log par hôte. On peut voir cela avec la commande :

ls /var/log/syslogclients/

On peut voir ici les logs de la machine apache configurée sur mon serveur primaire. En revanche, il n’y a rien sur le secondaire :

Nous allons maintenant couper le primaire et générer des logs sur le client (en installant et désinstallant des paquets par exemple).

Les logs remontent alors sur le serveur secondaire :


Sources :

https://www.linuxtricks.fr/wiki/rsyslog-centralisation-des-logs-sous-linux

https://rsyslog.readthedocs.io/en/latest/tutorials/failover_syslog_server.html

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *