Question pour les pro du regex avec fail2ban


#1

Bonjour,

Je me suis mis en place un parefeu avec iptables qui fonctionne bien et qui va m’inscrire dans le syslog une ligne avec l’étiquette iptables[DOS].

J’utilise fail2ban et j’aimerais construire un filtre ou je passe la MAC adresse en paramètre afin qu’il le ban car les fripouilles utilisent plusieurs machines infectées ou non par un malware et donc les ip sont différentes mais la mac adresse reste la même… L’idée serait de passer la MAC adresse récupérée en paramètre pour bannir les ip qui y sont liées.

Est-ce qu’il est possible de faire ça avec fail2ban et si oui, pourriez-vous m’indiquer la regex qui permettrait de matcher svp ?

Voici la ligne qui se présente à moi :

6 16:48:10 localhost kernel: [511596.538637] iptables[DOS]: IN=enp1s0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:30:91:e0:df:80:08:00 SRC=198.108.67.136 DST=mon_ip_serveur... etc

D’avance merci à ceux qui pourront m’aider


#2

Normalement, une adresse MAC se présente sous la forme de six octets hexadécimaux. Par exemple :

12:34:56:78:9a:bc

Une expression régulière pour isoler ça est :

([0-9a-f]{2}:){5}[0-9a-f]{2}

Et si l’expression régulière est contenue dans un script bash, il faut échapper les parenthèses comme ça :

\([0-9a-f]{2}:\){5}[0-9a-f]{2}

Et si la syntaxe est exactement celle que tu nous as donnée, l’expression régulière peut devenir :

xx(:xx){6}(:[0-9a-f]{2}){7}

Amicalement.

Jean-Marie


#3

Bonjour Jean-Marie,

Merci pour tes indications, j’avais construit ce regex mais ça ne matchait pas à cause d’un $ placé juste après le

Là je viens de tester le fichier ça fonctionne donc je donne la règle iptables qui permet ce type d’évènement pour l’inscription du log dans le syslog ainsi que la regex configurée dans fail2ban.

Dans le parefeu :
iptables  -A INPUT -m limit --limit 1/second --limit-burst 100 -j LOG --log-prefix "iptables[DOS]: "

Dans le filtre :
failregex = .* iptables\[DOS\]\: IN\=enp1s0 OUT\= MAC\=([0-9|a-f]{2}\:)+[0-9|a-f]{2} SRC\=<HOST>

Voilà, si ça peut servir à quelqu’un c’est chouette de partager la solution si elle plaît…


#4

Salut,

Tu es sûr que tu ne risques pas de bloquer l’adresse Mac d’un routeur avec ce procédé ?


#5

un routeur je ne pense pas mais en revanche j’ai de gros doutes sur la regex que j’ai écrite car le host entre chevrons est l’adresse ip source. Ayant fixé le maxretry à 3, les 3 premières tentatives vont passer à la trape en revanche toutes les autres ip vont être bannies (enfin il me semble), et ce n’est pas ce que je veux… Ce que j’aimerais c’est que la MAC adresse publiée dans le syslog serve de point de repère et bannisse toutes les ip correspondantes…

Donc du coup je n’ai aucune certitude quant au fonctionnement de cette prison là…

Je vais la virer en attendant de trouver la solution adéquat, les premiers chiffres en hexadécimales xx ont été remplacés pour ne pas montrer la vraie mac address. Donc… si vous avez des idées, bah go quoi :wink:


#6

+1
ou du moins si tu arrivais à faire cela tu bloquerais toutes les IP provenant d’un même routeur.

Normal, les adresses MAC source et destination dans les paquets IP sont changées de routeur en routeur. Tous les paquets provenant d’un même routeur présentent donc la même adresse MAC source. Une adresse MAC n’a d’utilité qu’au sein d’un même réseau (un réseau local).


#7

Ok donc cette règle iptable est juste utile à pas grand chose alors en dehors du fait qu’elle peut te garnir ton directory syslog en moins de temps qu’il n’en faut pour le dire… Ou je n’ai pas compris comment je pourrais exploiter cette règle…