TUTOS.EU

Gérer ses logs avec rsyslog sous Linux

Paramétrer différents fichiers de logs avec rsyslog

De base, si rsyslog est installé, vous devriez pouvoir voir son fichier de configuration avec la commande ci-dessous (touche q pour quitter) :

less /etc/rsyslog.conf
Lien vers le fichier : cliquez ici

On peut voir que le service prend en compte tous les fichiers .conf qui sont dans /etc/rsyslog.d/
via cette commande

$IncludeConfig /etc/rsyslog.d/*.conf
Lien vers le fichier : cliquez ici

De même le service de syslog devrait répondre à cette commande :

systemctl status rsyslog.service
Lien vers le fichier : cliquez ici

Exemple de retour positif :

On va ici prendre en exemple iptables pour lequel on va extraire les logs.
Pour cela, dans les règles que vous aller créer dans iptables, il faudra expressément demander à logger le traffic et ajouter le préfix 'iptables:'
Pour cela on peut créer des 'chain' comme 'LOGACCEPT'

Exemple de création

#Création d'une new user-defined chain pour pouvoir autoriser ET logger un flux avec le préfixe IPTABLES
iptables -N LOGACCEPT
iptables -A LOGACCEPT -j LOG --log-prefix 'iptables:' -m limit --limit 2/min
iptables -A LOGACCEPT -j ACCEPT
Lien vers le fichier : cliquez ici

Ensuite, vous aller utiliser cette chain dans vos règles.

Exemple :

iptables -t filter -A INPUT -p tcp --dport 22 -j LOGACCEPT
Lien vers le fichier : cliquez ici

Au niveau de rsyslog, on va maintenant créer un fichier de configuration pour iptables avec la commande

sudo nano /etc/rsyslog.d/iptables.conf
Lien vers le fichier : cliquez ici

Placez y ces instructions et enregistrez le fichier

:msg, contains, "iptables:" -/var/log/iptables.log
& ~
Lien vers le fichier : cliquez ici

Je me suis mis de côté le contenu ci-dessous trouvé sur
https://blog.stalkr.net/2009/10/logging-iptables-messages-with-rsyslog.html

Il pourrait permettre à des lignes de log du type "[ 123.456] iptables:"
d'être prises en compte, ce qui serait plus précis :

:msg, contains, "iptables:" -/var/log/iptables.log
& ~

:msg, regex, "^\[ *[0-9]*\.[0-9]*\] iptables: " -/var/log/iptables.log
& ~
Lien vers le fichier : cliquez ici

La commande précédente demande à enregistrer tous les messages qui contiennent "iptables:" dans un fichier /var/log/iptables.log

La seconde ligne signifie qu'il n'est pas nécessaire de logger l'évènement précédent comme il est fait habituellement.

Rechargez la configuration de rsyslog en redémarrant le service avec

systemctl restart rsyslog.service
Lien vers le fichier : cliquez ici

Je n'ai pas vérifié la commande ci-dessous mais elle pourrait permettre d'éviter de relancer le service rsyslog :

/etc/init.d/rsyslog force-reload
Lien vers le fichier : cliquez ici

Maintenant consultez iptables.log avec la commande

tail -f /var/log/iptables.log
Lien vers le fichier : cliquez ici

Sachant que par défaut les logs se regardent avec :

tail -f /var/log/syslog
Lien vers le fichier : cliquez ici

Pour archiver régulièrement le contenu de /var/log/iptables.log
on va utiliser logrotate.
Pour modifier la configuration de logrotate, tapez :

nano /etc/logrotate.conf
Lien vers le fichier : cliquez ici

Et ajoutez-y les instructions ci-dessous.

Il ne sera pas nécessaire de redémarrer un quelconque service de logrotate pour que cela soit pris en compte car logrotate est une tâche planifiée qui s'exécute à intervalles réguliers.

/var/log/iptables.log
{
	rotate 7
	daily
	missingok
	notifempty
	delaycompress
	compress
	postrotate
		invoke-rc.d rsyslog rotate > /dev/null
	endscript
}
Lien vers le fichier : cliquez ici

Pages Web

Site WebDescription
Rsyslog.comSite de rsyslog
Kb.monitorware.comForum officiel pour le support de rsyslog
Blog.shadypixel.comLog iptables Messages to a Separate File with rsyslog

Article(s) suivant(s)