Firewall & Fail2Ban

Bonjour,

est-ce qu’il est possible d’avoir un firewall plus précis (type iptables) ?
Est-ce qu’il est prévu de laisser plus de liberté dans le paramétrage du firewall ?
Je préfère gérer moi même les règles firewall plus précisement.

Même question pour Fail2Ban: est-ce qu’il est prévu de laisser une plus grande liberté à l’utilisateur pour la gestion des “filtres” ?

Merci.

@zulf

Bonjour,

Pour fail2ban, tu peux sans problème gérer les “filtres” avec la méthode traditionnelle (jail.local et les scripts).

Pour iptables, je ne me suis pas encore penché sur le problème. Ça m’intéresse aussi de savoir comment personnaliser les règles.

@tilux

Salut,

merci @tilux pour ta réponse :slight_smile:
Ok pour les filtres fail2ban, reste plus qu’a voir comment faire pour avoir un firewall plus personnalisable.

@zulf

Si tu sais gérer le firewall toi-même, tu peux couper les règles de YunoHost par défaut (avec yunohost firewall stop) et mettre les tiennes à la place. Ou utiliser shorewall ou ufw :slight_smile:

Salut je réveille ce topic… Je regarde du coté de fail2ban car en jettant un oeil a mes log sur postfix j’ai découvert ça

Dec 30 20:29:50 totofr postfix/anvil[4351]: statistics: max connection rate 1/60s for (smtp:195.22.126.241) at Dec 30 20:26:29
Dec 30 20:29:50 totofr postfix/anvil[4351]: statistics: max connection count 1 for (smtp:195.22.126.241) at Dec 30 20:26:29
Dec 30 20:29:50 totofr postfix/anvil[4351]: statistics: max cache size 1 at Dec 30 20:26:29

je me suis un peu cassé la tête et je trouve qu’il est dommage de ne pas avoir de lieu ou centraliser les regex pour fail2ban
Ce n’est pas la première fois que je trouve cet outil très intéressant pour gérer la sécurité.
J’ai donc créé une jail ici /etc/fail2ban/jail.d/maxou-smtp-statistics.conf

[smtpmaxconnection]

enabled  = true
port     = smtp,ssmtp,submission
filter   = maxou-smtp-statistics
logpath  = /var/log/mail.log
maxretry = 2
findtime = 900
bantime = 6000

Avec mon filtre de référence ( après le filter = ci dessus )
mon filtre se trouve ici /etc/fail2ban/filter.d/maxou-smtp-statistics.conf
il contient mon regex pour récupérer les noms d’hote que je souhaite bannir

[Definition]
failregex = max connection rate 1/60s for \(smtp:<HOST>.*
ignoreregex =

En le testant dans le log de postfix

root@totofr:/media/disk2/transmission-completed/Partage# fail2ban-regex -v /var/log/mail.log /etc/fail2ban/filter.d/maxou-smtp-statistics.conf 

Running tests
=============

Use   failregex file : /etc/fail2ban/filter.d/maxou-smtp-statistics.conf
Use         log file : /var/log/mail.log


Results
=======

Failregex: 61 total
|-  #) [# of hits] regular expression
|   1) [61] max connection rate 1/60s for \(smtp:<HOST>.*
|      80.82.77.83  Mon Dec 19 03:07:30 2016

Je n’ai pas mis la suite il m’a choppé 61 lignes avec IP good job :slight_smile:
Et au bout d’une minute le couillon qui s’excitait sur mon postfix se fait bannir.

2016-12-30 20:40:33,697 fail2ban.actions[4742]: WARNING [smtpmaxconnection] Ban 195.22.126.241

Au passage on ne peut pas accéder aux logs de fail2ban coté admin web !

Pour accéder au log de fail2ban j’ai modifié le /etc/yunohost/services.yml et ajouté dans la partie fail2ban après les “conffiles” les 2 lignes suivantes : :slight_smile: voir la structure du .yml pour comprendre.

 log: 
  - /var/log/fail2ban.log

Et voilà

Salut,

Ta failregex “max connection rate 1/60s for (smtp:.*” stoppe tout puisque pour chaque connection tu as cette stat d’anvil…

@+

toutes les regex sont ici : /etc/fail2ban/filter.d

Cette ligne apparaît si il y a plus d’une connexion pour 60s mais Pas pour chaque connexion c’est un contrôle sur les statisticq. Mais j’ai vu que cela posait des problème si on était par exemple dans une mailing liste donc j’ai éliminé cette failregex…

Oui je savais celà ma remarque est plutôt sur un site web qui pourrait répertorier les types d’attaque avec les logs qu’il génère et les regex à utiliser.
Afin que nous puissions tous partager nos jails et regex

Non, au moins une connection de la même ip sur 60 S…
donc pour un mail reçu de notre ami google tu as par exemple:
Jan 14 03:04:50 ******* postfix/anvil[17184]: statistics: max connection rate 1/60s for (smtp:209.85.217.169) at Jan 14 03:01:20

Pour fail2ban, dans le filter.d, on dispose de ce qui peut se faire en matiere de connection en brute-force et autre tentative d’authentification.
Pour le reste, fail2ban ne pourra rien faire (je pense par exemple aux attaques en semi connection randomisées)…on ne peut que dropper aux cas par cas (surtout pas de tarpit qui ne peut pas être utilisé contre le random)

un exemple random cote postfix :
Jan 8 18:48:51 ****** postfix/smtpd[45320]: connect from 122-116-3-196.HINET-IP.hinet.net[122.116.3.196]
Jan 8 18:48:51 ****** rmilter[12419]: <96c94ddc0f>; accepted connection from ********.; client: 122.116.3.196:64201 (122-116-3-196.HINET-IP.hinet.net)
Jan 8 18:48:57 ****** postfix/smtpd[45320]: disconnect from 122-116-3-196.HINET-IP.hinet.net[122.116.3.196]
Jan 8 18:52:17 ****** postfix/anvil[45322]: statistics: max connection rate 1/60s for (smtp:122.116.3.196) at Jan 8 18:48:51
Jan 8 18:52:17 ****** postfix/anvil[45322]: statistics: max connection count 1 for (smtp:122.116.3.196) at Jan 8 18:48:51
Jan 8 18:52:17 ****** postfix/anvil[45322]: statistics: max cache size 1 at Jan 8 18:48:51

si tu regardes un random droppé avec tcpdump :

17:00:51.416229 IP 197.14.14.150.42058 > ..*.25: Flags [S], seq 4099968071, win 8192, options [mss 1300,nop,wscale 8,nop,nop,sackOK], length 0
17:00:54.431565 IP 197.14.14.150.42058 > ..
.25: Flags [S], seq 4099968071, win 8192, options [mss 1300,nop,wscale 8,nop,nop,sackOK], length 0
17:01:00.438804 IP 197.14.14.150.42058 > ..
.*25: Flags [S], seq 4099968071, win 8192, options [mss 1300,nop,nop,sackOK], length 0

@+

1 Like