Munin : Comment grapher iptables, ipset, fail2ban

Munin est une surveillance du système informatique gratuit et open-source, une application de surveillance réseau et de surveillance des infrastructures.
Il permet de générer des graphiques pour suivre l'activité du système.
Grâce à ces plugins, on peut grapher à peut près tout et n'importe quoi.

Dans ce tutoriel, je vous propose de grapher des informations autour d'iptables, ipset et fail2ban.
Par exemple pour suivre le nombre de paquets bloqués par iptables ou le nombre d'hosts bloqués dans ipset ou fail2ban.

Munin : Comment grapher iptables, ipset, fail2ban

Munin : Comment grapher iptables, ipset, fail2ban

Le tutoriel pour installer et configurer Munin :

Grapher les paquets qui passent par le firewall (fw_packets)

  • Ce dernier est disponible dans le paquet munin-plugins-core de debian. On peut donc l'installer avec APT :
sudo apt install munin-plugins-core
 wget https://raw.githubusercontent.com/munin-monitoring/munin/master/plugins/node.d.linux/fw_packets
  • Puis on le copie dans le dossier des plugins de munin :
sudo mv fw_packets /usr/share/munin/plugins/
ln -s /usr/share/munin/plugins/fw_packets /etc/munin/plugins/fw_packets
chmod +x /etc/munin/plugins/fw_packets
  • Puis on autorise son exécution en root dans la configuration de /etc/munin-node :
sudo vim vim /etc/munin/plugin-conf.d/munin-node
  • Ajoutez la configuration suivante :
[fw_*]
user root
  • Enfin testez son exécution avec munin-run :
munin-run fw_packets
received.value 1857590057
forwarded.value 0
  • Si tout va bien, il ne reste plus qu'à relancer munin-node pour prendre en compte la nouvelle configuration
systemctl restart munin-node

Grapher les paquets rejetés par iptables (fw_reject)

Ce plugin permet de grapher les paquets entrants et sortants rejetés par iptables.

aquets rejetés par iptables (fw_reject) sur Munin
  • Tout d'abord, on créé le fichier du plugin dans le répertoire de munin :
vim /usr/share/munin/plugins/fw_reject
  • Puis copiez/collez le contenu depuis ce lien
  • Ensuite on créé le lien symbolique dans la configuration de munin pour activer ce dernier
ln -s /usr/share/munin/plugins/fw_reject /etc/munin/plugin-conf.d/fw_reject
chmod +x /etc/munin/plugins/fw_reject
  • Editez le fichier de configuration de munin-node :
vim /etc/munin/plugin-conf.d/munin-node
  • Puis ajoutez la configuration suivante :
[fw_reject]
user root
group adm
env.logtail /usr/sbin/logtail
env.logfile /var/log/kern.log
env.service IPTABLES
  • Enfin testez son exécution avec munin-run :
munin-run fw_reject
  • On relance le service munin-node :
systemctl restart munin-node

Grapher des règles iptables (accounting)

Accounting est un plugin pour munin qui permet de compter des règles iptables en fonction d'un commentaire spécifique dans la règles iptables.
Par exemple, je l'utilise pour grapher les blocages iptables par pays.

Grapher des règles iptables (accounting) sur Munin
  • Editez le fichier :
sudo vim /usr/share/munin/plugins/accounting_
  • Puis récupérez et copier/coller le code source depuis ce lien
  • Ensuite il faut ajouter un commentaire ACC- avec le nom aux règles iptables que l'on veut suivre. Cela grâce à l'option -m comment --comment ACCT-XXXX
iptables -I INPUT -d 192.168.0.1/24 -p icmp -m comment --comment ACCT-subnet1-icmp-in
iptables -I INPUT -d 192.168.0.1/24 -p udp -m comment --comment ACCT-subnet1-udp-in
iptables -I INPUT -d 192.168.0.1/24 -p tcp -m comment --comment ACCT-subnet1-tcp-in
iptables -I OUTPUT -s 192.168.0.1/24 -p icmp -m comment --comment ACCT-subnet1-icmp-out
iptables -I OUTPUT -s 192.168.0.1/24 -p udp -m comment --comment ACCT-subnet1-udp-out
iptables -I OUTPUT -s 192.168.0.1/24 -p tcp -m comment --comment ACCT-subnet1-tcp-out

Par exemples ci-dessous, des règles iptables de blocages par pays avec un commentaire ACC par pays pour les compter dans munin.

Chain INPUT (policy ACCEPT 124M packets, 410G bytes)
 pkts bytes target     prot opt in     out     source               destination
12271  508K LOGIPS     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            match-set ipv4-russia src /* ACC-Russie */
 1606 82728 LOGIPS     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            match-set ipv4-indonesia src /* ACC-Indonesie */
  389 20196 LOGIPS     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            match-set ipv4-thailand src /* ACC-Thailande */
12010  617K LOGIPS     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            match-set ipv4-china src /* ACC-Chine */
  • Ensuite on créé un lien symbolique pour chaque graphique que l'on veut compter en fonction du commentaire. Par exemple ci-dessous accounting_Chine qui pointe vers le script. Je répète l'opération pour Russie, Tahilande et Indonésie
ln -s /usr/share/munin/plugins/accounting_ /etc/munin/plugins/accounting_Chine
ln -s /usr/share/munin/plugins/accounting_ /etc/munin/plugins/accounting_Russie
ln -s /usr/share/munin/plugins/accounting_ /etc/munin/plugins/accounting_Thailande
ln -s /usr/share/munin/plugins/accounting_ /etc/munin/plugins/accounting_Indonesie 
  • Puis on édite le fichier de configuration
sudo vim /etc/munin/plugin-conf.d/munin-node
  • Puis on ajoute ceci pour autoriser l'exécution en root :
[accounting_*]
user root
  • Enfin testez le fonctionnement du plugin munin avec munin-run
munin-run fw_reject accounting_Chine
  • Si cela fonctionne, on relance le service afin de commencer à grapher
systemctl restart munin-node

Grapher ipset

Ce plugin compatibilise et graphs le nombre d'éléments de chaque jeu ipset.

Grapher ipset sur Munin
  • On créé le fichier du plugin dans le répertoire de munin :
vim /usr/share/munin/plugins/ipset
  • Puis copiez/collez le contenu depuis ce lien
  • Ensuite on créé le lien symbolique dans la configuration de munin pour activer ce dernier
ln -s /usr/share/munin/plugins/ipset /etc/munin/plugin-conf.d/ipset
chmod +x /etc/munin/plugins/ipset
  • Editez le fichier de configuration de munin-node :
vim /etc/munin/plugin-conf.d/munin-node
  • Puis ajoutez la configuration suivante pour autoriser l'exécution en root
[ipset]
user root
  • Enfin testez son exécution avec munin-run :
munin-run ipset
  • On relance le service munin-node :
systemctl restart munin-node

Grapher fail2ban

Ce plugin compatibilise et graphs le nombre hosts bannis dans chaque jail Fail2ban.

Grapher fail2ban sur Munin
  • On créé le fichier du plugin dans le répertoire de munin :
vim /usr/share/munin/plugins/fail2ban
  • Puis copiez/collez le contenu depuis ce lien
  • Ensuite on créé le lien symbolique dans la configuration de munin pour activer ce dernier
ln -s /usr/share/munin/plugins/fail2ban /etc/munin/plugin-conf.d/fail2ban
chmod +x /etc/munin/plugins/fail2ban
  • Editez le fichier de configuration de munin-node :
vim /etc/munin/plugin-conf.d/munin-node
  • Puis ajoutez la configuration suivante pour autoriser l'exécution en root
[fail2ban]
user root
env.client /usr/bin/fail2ban-client
env.config_dir /etc/fail2ban
  • Enfin testez son exécution avec munin-run :
munin-run fail2ban
  • On relance le service munin-node :
systemctl restart munin-node

Tags: