Configurer les LOG sur iptables

malekalmorte

Création :

11 décembre 2022

Modification :

iptables est un logiciel open source inclus dans la plus partie des distributions Linux pour configurer le pare-feu Linux (netfilter).
Vous créer des règles de pare-feu pour protéger votre VPS, serveur dédié, cloud ou bare metal.
Pour mieux surveiller l’activité réseau et détecter les instruisons, il convient de mettre en place les logs iptables.
Notamment, il est possible d’enregistrer dans les journaux Linux tous les paquets bloqués via syslog.
Enfin les journaux sont aussi utiles pour ajuster ses règles iptables.

Dans ce tutoriel, je vous guide pour configurer les LOG sur iptables avec les explications et exemples.

Configurer les LOG sur iptables

Comment configurer les LOG sur iptables

iptables -N LOG
iptables -A INPUT/OUTPUT -j LOG
iptables -A LOG -m limit --limit 2/min -j LOG --log-prefix "IPTables: " --log-level 4
iptables -A LOG -j DROP

Dans l’exemple ci-dessus, il fait ce qui suit :

  • iptables -N LOG : Créer une nouvelle chaîne appelée LOG
  • iptables -A INPUT -j LOG : Tous les paquets entrants restants sauteront vers la chaîne LOG
  • ligne#3 : Enregistrer les paquets entrants dans syslog (/var/log/messages). Cette ligne est expliquée en détail ci-dessous
  • iptables -A LOG -j DROP : Enfin, abandonne tous les paquets qui arrivent sur la chaîne LOGGING. C’est-à-dire que maintenant, il abandonne vraiment les paquets entrants

Dans la ligne#3 ci-dessus, il a les options suivantes pour enregistrer les paquets abandonnés :

  • -m limit : Ceci utilise le module de correspondance des limites. En utilisant ce module, vous pouvez limiter la journalisation en utilisant l’option -limit
  • -limit 2/min : Ceci indique le taux de correspondance moyen maximum pour la journalisation. Dans cet exemple, pour les paquets similaires, la journalisation sera limitée à 2 par minute. Vous pouvez également spécifier 2/seconde, 2/minute, 2/heure, 2/jour. Ceci est utile lorsque vous ne voulez pas encombrer vos messages de journal avec des messages répétés des mêmes paquets abandonnés
  • -j LOG : Ceci indique que la cible pour ce paquet est LOG. c’est-à-dire écrire dans le fichier journal.
  • -log-prefix « IPTables: « Vous pouvez spécifier n’importe quel préfixe de journal, qui sera ajouté aux messages de journal qui seront écrits dans le fichier /var/log/messages
  • -log-level 4 : Il s’agit des niveaux syslog standard. 4 correspond à un avertissement. Vous pouvez utiliser un nombre compris entre 0 et 7. 0 correspond à l’urgence et 7 au débogage. Reportez vous à la fin de ce tutoriel

Comment configurer les LOG sur iptables avec exemples

Log des paquets DROP

iptables -N LOGGING
iptables -A OUTPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "[IPTABLES DROP]: " --log-level 4
iptables -A LOGGING -j DROP

Log des paquets DROP et ACCEPT

iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A OUTPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "[IPTABLES]: " --log-level 4
iptables -A LOGGING -j DROP

Log la table mangle

iptables -t mangle -N LOG_MANGLE
iptables -t mangle -A LOG_MANGLE -j LOG --log-prefix '[IPTABLES MANGLE DROP]: '
iptables -t mangle -A LOG_MANGLE -j DROP

Log des ping

iptables  -A INPUT -p icmp --icmp-type echo-request -j LOG --log-level info --log-prefix "ping "
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

Comment voir les logs iptables

Vous pouvez utiliser la commande dmesg.

Bien sûr il est aussi possible d’utiliser la commande tail pour lire les dernières modifications des journaux.
Par exemple :

tail -200 /var/log/kern.log

Enfin vous pouvez aussi utiliser la commande journalctl.
Pour voir les journaux contenant le mot iptables :

journalctl -g iptables

Enfin pour suivre les ajouts en temps réel :

journalctl -b
Comment voir les logs iptables

La sortie est la suivante :

  • IPTABLES DROP : C’est le préfixe que nous avons utilisé dans notre journalisation en spécifiant l’option -log-prefix.
  • IN=eno1 Ceci indique l’interface qui a été utilisée pour ces paquets entrants. Elle sera vide pour les paquets sortants
  • OUT=eno1 Ceci indique l’interface qui a été utilisée pour les paquets sortants. Elle sera vide pour les paquets entrants.
  • SRC= L’adresse IP de la source d’où provient le paquet
  • DST= L’adresse IP de destination vers laquelle le paquet a été envoyé
  • LEN= Taille et longueur du paquet
  • PROTO= Indique le protocole TCP, ICMP, UDP, etc
  • SPT= Indique le port source
  • DPT= Indique le port de destination. Dans la 2ème ligne ci-dessus, le port de destination est 6899

Comment rediriger les logs iptables vers un fichier journal spécifique

Les journaux iptables peuvent vite polluer les journaux systèmes Linux.
Même s’il est possible de jouer sur grep, c’est assez vite agaçant.
Heureusement, il est possible de rediriger les journaux iptables vers un fichier spécifique.
Vous pouvez faire cela avec rsyslog ou syslog-ng selon l’implémentation syslog utilisé par votre distribution Linux.

avec rsyslog

  • Créez le fichier suivante :
vim /etc/rsyslog.d/20-iptables.conf
  • Puis ajoutez la ligne suivante qui fait correspondre les LOG contenant les mots « IPTABLES – » vers le fichier /var/log/iptables.log :
:msg,contains, "[IPTABLES" -/var/log/iptables.log
  • Si vous ne voulez pas qu’iptables log dans les autres fichiers comme kern.log, messages, ajoutez la ligne suivante :
:msg,contains, "[IPTABLES" - /var/log/iptables.log
:msg,contains, "[IPTABLES" ~
  • Puis on relance le service pour prendre en compte les modifications
/etc/init.d/rsyslog restart

avec syslog-ng

  • Editez /etc/syslog-ng/syslog-ng.conf
  • Puis ajoutez une règle suivante pour rediriger les journaux qui correspondent à IPT= vers /var/log/iptables.log
destination iptables { file("/var/log/iptables.log"); };
filter f_iptables { match("IPT="); };
log { source(src); filter(f_iptables); destination(iptables); };

A propros de malekalmorte

malekal-site-logo-150

Passionné par l'informatique depuis très jeune, j'aide les internautes sur les forums depuis 2005 pour résoudre leurs tracas informatiques.
Je vous propose par la même occasion ce site avec de nombreux tutoriels pour vous aider aussi à résoudre de manière autonome les problèmes informatiques du quotidien.