[Bloqueur / Bannisseur d'IP] Reaction (fail2ban like)

Bambusa29

Chevalier Jedi
10 Avril 2022
411
172
88
Reaction est un 'fail2ban' like écrit en Go que j'utilise désormais à la place de 'Fail2ban' sur mon serveur 'Nginx'.

La page de présentation : https://blog.ppom.me/fr-reaction/
Le wiki : https://reaction.ppom.me/index.html
Le dépot git : https://framagit.org/ppom/reaction

Il a de nombreux avantage par rapport a fail2ban :

- Ecrit en go, donc très rapide
- Gestion des accès nftables ou iptables avec un binaire prenant en charge les adresses IPv4 et IPv6
- Les accès iptables sont très rapide, ce qui évite les détections multiples après un blocage (le temps qu'il se fasse réellement).
- Consommation mémoire et CPU très faible (voir capture 1). 'Fail2ban' consomme pas mal, 'Crowdsec' encore plus.
- Configuration simple via un fichier yaml ou encore mieux un jsonnet (voir capture 2)

J'en ai profité pour revoir tous mes filtres et j'en ai rajouté beaucoup partant du principe que sur un scan de faille, c'est rarement parce que l'on vous veut du bien :D
Du coup je bloque dés le 1er accès pour pas mal de faille (voir capture 3) et je remonte l'IP à mon pare feu en amont.
J'ai fais un reporting par email en live des blocages et une recap journalière, ce qui permet d'avoir une trace et d'analyser les failles les plus recherchées et les bizarreries diverses.

J'ai une règle ramasse miette qui est elle moins strict (plusieurs tentative possible) et qui ne fais que du blocage temporaire au niveau du serveur.

Capture 1 : 12Mo de conso

reaction.png

Capture 2 : Fichier config jsonnet

reaction02.png

Capture 3: Email de reporting des blocages de ces deux derniers jours.

reaction01.png
 
  • J'aime
Réactions: electroger
Reaction est un 'fail2ban' like écrit en Go que j'utilise désormais à la place de 'Fail2ban' sur mon serveur 'Nginx'.

La page de présentation : https://blog.ppom.me/fr-reaction/
Le wiki : https://reaction.ppom.me/index.html
Le dépot git : https://framagit.org/ppom/reaction

Il a de nombreux avantage par rapport a fail2ban :

- Ecrit en go, donc très rapide
- Gestion des accès nftables ou iptables avec un binaire prenant en charge les adresses IPv4 et IPv6
- Les accès iptables sont très rapide, ce qui évite les détections multiples après un blocage (le temps qu'il se fasse réellement).
- Consommation mémoire et CPU très faible (voir capture 1). 'Fail2ban' consomme pas mal, 'Crowdsec' encore plus.
- Configuration simple via un fichier yaml ou encore mieux un jsonnet (voir capture 2)

J'en ai profité pour revoir tous mes filtres et j'en ai rajouté beaucoup partant du principe que sur un scan de faille, c'est rarement parce que l'on vous veut du bien :D
Du coup je bloque dés le 1er accès pour pas mal de faille (voir capture 3) et je remonte l'IP à mon pare feu en amont.
J'ai fais un reporting par email en live des blocages et une recap journalière, ce qui permet d'avoir une trace et d'analyser les failles les plus recherchées et les bizarreries diverses.

J'ai une règle ramasse miette qui est elle moins strict (plusieurs tentative possible) et qui ne fais que du blocage temporaire au niveau du serveur.

Capture 1 : 12Mo de conso

Voir la pièce jointe 13113

Capture 2 : Fichier config jsonnet

Voir la pièce jointe 13115

Capture 3: Email de reporting des blocages de ces deux derniers jours.

Voir la pièce jointe 13114
Salut, c'est intéressant comme projet.
Faudrait que je l'essaye ^^
Tu as intégré comment cet outil à ton NGINX ?
Serait-il possible de l'intégrer à SWAG (c'est le reverse proxy que j'utilise) ?
 
Salut, c'est intéressant comme projet.
Faudrait que je l'essaye ^^
Tu as intégré comment cet outil à ton NGINX ?
Serait-il possible de l'intégrer à SWAG (c'est le reverse proxy que j'utilise) ?
A priori oui, il ne fait que surveiller des fichiers de logs (concrètement chez moi '/var/log/nginx/access.log'), du moment que le fichierde log qu'il soit visible en dehors de Docker (tu dois pouvoir le spécifier dans la pile Docker). Le blocage se fera alors sur le machine hôte hébergeant docker -> A valider que cela fonctionne :)

Mon serveur Nginx est un container Proxmox LXC sous Debian, donc c'est une simple installation d'un paquet Debian.
 
Dernière édition: