11.10. Options de la cible LOG

La cible LOG est spécialement destinée à journaliser des informations détaillées sur les paquets. Ceci peut, par exemple, être considéré comme illégal. Mais la journalisation peut servir à la recherche de bogues et d'erreurs. La cible LOG renverra une information spécifique sur les paquets, comme les en-têtes IP et autre détails considérés comme intéressants. Ceci se réalise par les fonctionnalités de journalisation du noyau, normalement syslogd. Cette information peut alors être lue directement avec la commande dmesg, ou depuis les journaux syslogd, ou avec d'autres programmes ou applications. C'est une excellente cible utilisée comme débogage des tables de règles, ainsi vous pouvez voir où vont les paquets et comment les règles sont appliquées et sur quels paquets. Notez que ce peut être une très bonne idée d'utiliser la cible LOG au lieu de la cible DROP lorsque vous testez une règle dont vous n'êtes pas sûrs à 100% de son efficacité dans un pare-feu en production, car une erreur de syntaxe dans la table de règles pourrait causer de sévères problèmes de connectivité entre vos utilisateurs. Notez aussi que la cible ULOG peut être intéressante si vous utilisez réellement une journalisation extensive, car ULOG supporte directement la journalisation dans les bases de données MySQL et d'autres.

[Note] Note

Notez que si vous obtenez une sortie de journalisation directement vers les consoles, ce n'est pas un problème de iptables ou Netfilter, mais plutôt un problème causé par votre configuration de syslogd - probablement /etc/syslog.conf. Pour en savoir plus man syslog.conf.

Vous pourriez aussi désirer revoir les paramétrages de dmesg. dmesg est la commande qui permet de voir sur une console les erreurs envoyées par le noyau. dmesg -n 1 enverra tous les messages sur la console, sauf les messages de panique. Les niveaux de message de dmesg s'apparient exactement aux niveaux de syslogd, et fonctionnent seulement sur les messages de journalisation depuis les fonctionnalités du noyau. Pour plus d'information voir man dmesg.

La cible LOG prend actuellement cinq options qui peuvent être intéressantes si vous recherchez une information précise, ou désirez placer différentes options pour certaines valeurs. Elles sont présentées ci-dessous.

Tableau 11.8. Options de la cible LOG

Option --log-level
Exemple iptables -A FORWARD -p tcp -j LOG --log-level debug
Explication C'est l'option qui indique à iptables et syslog quel niveau de journalisation utiliser. Pour une liste complète des niveaux de journalisation lisez le manuel syslog.conf. Normalement il y a les niveaux de journalisation suivants, ou les priorités qui s'y réfèrent : debug, info, notice, warning, warn, err, error, crit, alert, emerg et panic. le mot-clé error est le même que err, warn est le même que warning et panic le même que emerg. Notez que tous les trois sont obsolètes, en d'autres termes n'utilisez pas error, warn et panic. La priorité définit le niveau de rigueur des messages journalisés. Tous les messages sont journalisés par les fonctionnalités du noyau. En d'autres termes, placer kern.=info /var/log/iptables dans votre fichier syslog.conf et ensuite laisser tous vos messages de LOG dans iptables utilise le niveau info, ce qui fera que tous vos messages apparaîtront dans le fichier /var/log/iptables. Notez qu'il peut y avoir d'autres messages provenant d'autres parties du noyau qui utilisent la priorité info. Pour plus d'information sur la journalisation, je vous recommande de lire les pages de manuel de syslog et syslog.conf comme les autres HOWTO, etc.
Option --log-prefix
Exemple iptables -A INPUT -p tcp -j LOG --log-prefix "INPUT packets"
Explication Cette option indique à iptables de préfixer tous les messages de journalisation avec un préfixe spécifique, qui peut être facilement combiné avec grep ou d'autres outils qui permettent de tracer ces problèmes et les sorties des différentes règles. Le préfixe peut avoir jusqu'à 29 lettres de long, incluant les espaces et autres symboles spéciaux.
Option --log-tcp-sequence
Exemple iptables -A INPUT -p tcp -j LOG --log-tcp-sequence
Explication Cette option journalisera les numéros des Séquences TCP, avec le message de journalisation. Les numéros de Séquences TCP sont des nombres spéciaux qui identifient chaque paquet et qu'ils ajustent dans une séquence TCP, et permettent de savoir comment le flux sera réassemblé. Notez que cette option constitue un risque de sécurité si les journaux sont lisibles par des utilisateurs non autorisés, ou par tout le monde.
Option --log-tcp-options
Exemple iptables -A FORWARD -p tcp -j LOG --log-tcp-options
Explication L'option --log-tcp-options journalise les différentes options des en-têtes des paquets TCP et peuvent être utiles lors du débogage. Cette option ne prend aucun champ de variable, comme beaucoup d'options LOG.
Option --log-ip-options
Exemple iptables -A FORWARD -p tcp -j LOG --log-ip-options
Explication L'option --log-ip-options journalisera la plupart des options des en-têtes de paquets IP. Elle fonctionne exactement comme l'option --log-tcp-options, mais sur les options IP. Ces messages de journalisation peuvent être utiles pour le débogage ou le traçage, comme dans l'option précédente.

[Note] Note

Fonctionne avec les noyaux Linux 2.3, 2.4, 2.5 et 2.6.