Pas Tout A Fait

Aller au contenu | Aller au menu | Aller à la recherche

Diriger les logs d'IPTables vers un fichier spécifique

Dernière mise à jour le 07 juin 2011

NetFilter/IPTables est le couple de base pour mettre en place un pare-feu sous GNU/Linux. Par défaut les enregistrements vont dans le fichier "/var/log/messages", ce qui pose un problème de lisibilité des logs vu le nombre de lignes qui finissent dans ce fichier. On peut utiliser grep pour affiner l'affichage, mais le plus efficace reste de directement envoyer les logs en provenance d'IPTables vers un fichier spécifique.

iptables-firewall-securite-informatique.jpg


Petit rappel

En gros, sous GNU/Linux les logs sont enregistrés avec deux critères, les "facility" et les "priority".

Les "facility" désignent la provenance de l'enregistrement, et les "priority" désignent sa gravité.

syslog-listes.png

Pour de plus amples détails sur les logs sous GNU/Linux, il y a bien sûr les pages de manuel, en particulier celle de syslog : man syslogd.


Avec Syslog

Avec le vieillissant mais encore très présent Syslog, nous allons jouer avec ces deux critères pour diriger les logs d'IPTables dans un fichier spécifique.

Les logs en provenance d'IPTables sont toujours classés dans la "facility" nommée "kern", et il n'est pas possible de modifier simplement ce comportement. Par contre, il est très simple de spécifier la "severity" des logs à utiliser. C'est possible grâce à l'option --log-level d'IPTables, qui attend comme paramètre une "severity".

Prenons comme exemple la règle IPTables suivante :

iptables -A INPUT -i eth0 -d 1.2.3.4 -p tcp -j LOG --log-level warning

Elle permet d'enregistrer tous les paquets en provenance de l'IP 1.2.3.4 sur l'interface eth0.

Maintenant il faut dire à Syslog de diriger les logs de critère "kern" et "warning" vers un fichier particulier, grâce à cette ligne à ajouter dans le fichier ''/etc/syslog.conf" :

kern.=warning -/var/log/iptables.log

On peut également modifier la ligne suivante :

kern.* -/var/log/kern.log

Et la remplacer par celle ci :

kern.*;kern.!=warning -/var/log/kern.log

Elle permet de ne pas enregistrer deux fois les logs d'IPTables, une fois dans "/var/log/kern.log" et une fois dans "/var/log/iptables".

Ne pas oublier de redémarrer Syslog une fois les modifications réalisées.


Avec rSyslog

rSyslog est un projet lancé par Rainer Gerhards en mars 2005. Adopté en novembre 2007 par le projet Fedora puis en février 2009 par Debian, rSyslog est en passe de s'imposer comme le système standard d'enregistrements des logs.

Il apporte son lot d'avantages, et en particulier, pour le sujet qui nous intéresse, la possibilité de filtrer les logs et de les diriger vers un fichier spécifique en fonction du contenu de l'enregistrement.

Il n'est donc plus nécessaire d'envoyer tous les enregistrements "kern.debug" vers le fichier de son choix, au risque de trouver des enregistrements n'ayant rien à voir avec le pare-feu dans le fichier qui lui est pourtant dédié, mais simplement de spécifier dans le script IPTables un préfixe aux enregistrements du pare-feu grâce au paramètre --log-prefix, et de surveiller ce préfixe avec une simple ligne dans la configuration de rSyslog.

Par exemple avec un fichier /etc/rsyslog.d/iptables.conf contenant ceci :

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

Et une règle de pare-feu dans ce genre :

iptables  -A INPUT -i eth+ -p tcp --tcp-flags ALL NONE -j LOG --log-prefix "IPTables : "

C'est simple et très efficace. Là encore pensez à redémarrer le daemon rsyslog après avoir effectué les modifications !

Matthieu Patout

Auteur: Matthieu Patout

Restez au courant de l'actualité et abonnez-vous au Flux RSS

blackmen972 blackmen972 ·  30 juin 2010, 00:15

Super !

Tu viens de sauver ma fin de soirée, je vais pouvoir aller me coucher.

J'ai installé iptables sur mon serveur web et j'avais constamment les messages de logs qui s'affichaient sur ma console, même quand je me logguais à distance en ssh, c'était assez embêtant, pour infos pour ceux qui utilisent lenny c'est la manipulation avec rsyslog qu'il faut faire....

Encore merci pour cet article...

Allez au dodo lol

Bonen fin de soirée !

Dedales Dedales ·  07 février 2011, 00:22

Attention : une petite erreur s'est glissée dans l'article : Dans la partie sur rsyslog, le code de iptables.conf recherche la chaîne "IPTable: ", alors que le log d'iptables défini en dessous utilise le préfixe "IPTable : " (avec un espace de plus).

Il faut donc ajouter un espace à la règle de filtrage, ou le supprimer dans les règles d'iptables.

Matthieu Patout Matthieu Patout ·  10 février 2011, 15:24

@Dedales : Salut,

Bien vu, la boulette est corrigée. :-)

Merci !

Ajouter un commentaire Fil des commentaires de ce billet

aucune annexe



Voir Aussi

googleplus1.jpg

Améliorer la vitesse de chargement et valider le bouton Google +1

Le bouton Google +1 s'affiche partout sur le web depuis quelques semaines. En plus de permettre la...

Lire la suite

Microphone.jpg

Enregistrer un son interne sous Ubuntu

Enregistrer les émissions de Radio France est toujours aussi simple et facile... Oublions le format...

Lire la suite


Découvrez le Nouveau « Pack Liberté »