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 Web | Description |
---|---|
Rsyslog.com | Site de rsyslog |
Kb.monitorware.com | Forum officiel pour le support de rsyslog |
Blog.shadypixel.com | Log iptables Messages to a Separate File with rsyslog |
Article(s) suivant(s)