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