Ispconfig3 et fail2ban ne banni pas

Tags: #<Tag:0x00007fc9db275b80>

bonjour ,
J’ai pris un serveur VPS (Debian 9 64bits) y a quelques jours , préinstaller avec Ispconfig3 , Apache2, amavis , clamav, etc… (installed ISPConfig-Version: 3.1.15p2)
J’ai configurer le serveur de mail , et tout fonctionne parfaitement sauf fail2ban, qui ne bannie presque pas , le bannissement ce font dans les logs de Apache2 , mais rien a faire dans les logs mail ( /var/log/mail.log)
J’utilise Fail2ban depuis quelques années mais la je sèche , premier serveur préconfigurer avec Ispconfig3, je me demande si c pas le faite d’ajouter des règles de bannissement a la configuration existante?
J’ai plusieurs fois vérifier si les règles fonctionne :
exemple:

#fail2ban-regex /var/log/mail.log /etc/fail2ban/filter.d/postfix-auth.conf /etc/fail2ban/filter.d/postfix-auth.conf:

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

Use   failregex filter file : postfix-auth, basedir: /etc/fail2ban
Use ignoreregex filter file : postfix-auth, basedir: /etc/fail2ban
Use         log file : /var/log/mail.log
Use         encoding : UTF-8



Results
=======

Failregex: 20 total
|-  #) [# of hits] regular expression
|   1) [20] lost connection after (AUTH|UNKNOWN|EHLO|STARTTLS) from (.*)\[<HOST>\]
`-

Ignoreregex: 0 total

mais pourtant aucun bannisement?
Mon Iptables-save:

# Generated by iptables-save v1.6.0 on Fri Dec 13 19:57:22 2019
*raw
:PREROUTING ACCEPT [154061:15739237]
:OUTPUT ACCEPT [122879:36250246]
COMMIT
# Completed on Fri Dec 13 19:57:22 2019
# Generated by iptables-save v1.6.0 on Fri Dec 13 19:57:22 2019
*nat
:PREROUTING ACCEPT [61496:2323032]
:INPUT ACCEPT [61155:2306652]
:OUTPUT ACCEPT [12979:901594]
:POSTROUTING ACCEPT [8763:648634]
COMMIT
# Completed on Fri Dec 13 19:57:22 2019
# Generated by iptables-save v1.6.0 on Fri Dec 13 19:57:22 2019
*mangle
:PREROUTING ACCEPT [154061:15739237]
:INPUT ACCEPT [154061:15739237]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [122879:36250246]
:POSTROUTING ACCEPT [118524:35991702]
COMMIT
# Completed on Fri Dec 13 19:57:22 2019
# Generated by iptables-save v1.6.0 on Fri Dec 13 19:57:22 2019
*filter
:INPUT ACCEPT [2311:136333]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2794:648292]
:f2b-apache-admin - [0:0]
:f2b-apache-badbots - [0:0]
:f2b-apache-botsearch - [0:0]
:f2b-apache-fakegooglebot - [0:0]
:f2b-apache-modsecurity - [0:0]
:f2b-apache-nohome - [0:0]
:f2b-apache-noscript - [0:0]
:f2b-apache-overflows - [0:0]
:f2b-apache-shellshock - [0:0]
:f2b-attack-x00 - [0:0]
:f2b-decode - [0:0]
:f2b-dovecot - [0:0]
:f2b-forbidden - [0:0]
:f2b-ip-scann - [0:0]
:f2b-nullmulti - [0:0]
:f2b-postfix - [0:0]
:f2b-postfix-auth - [0:0]
:f2b-postfix-sasl - [0:0]
:f2b-pure-ftpd - [0:0]
:f2b-scanner-key - [0:0]
:f2b-scanner-script - [0:0]
:f2b-scanner-url - [0:0]
:f2b-smtp-secu - [0:0]
:f2b-sshd - [0:0]
-A INPUT -p tcp -m multiport --dports 25,465,465,587,587 -j f2b-smtp-secu
-A INPUT -p tcp -m multiport --dports 25 -j f2b-postfix-auth
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-attack-x00
-A INPUT -p tcp -j f2b-nullmulti
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-forbidden
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-scanner-script
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-scanner-url
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-scanner-key
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-ip-scann
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-decode
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-apache-admin
-A INPUT -p tcp -m multiport --dports 25 -j f2b-postfix-sasl
-A INPUT -p tcp -m multiport --dports 110,995,143,993,587,465,4190 -j f2b-dovecot
-A INPUT -p tcp -m multiport --dports 25 -j f2b-postfix
-A INPUT -p tcp -m multiport --dports 21 -j f2b-pure-ftpd
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-apache-shellshock
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-apache-modsecurity
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-apache-fakegooglebot
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-apache-botsearch
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-apache-nohome
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-apache-overflows
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-apache-noscript
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-apache-badbots
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A INPUT -s xx.xx.xx.xx/32 -p tcp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8080 -j DROP
-A INPUT -p udp -m udp --dport 8080 -j DROP
-A INPUT -p tcp -m tcp --dport 8081 -j DROP
-A INPUT -p udp -m udp --dport 8081 -j DROP
-A INPUT -p tcp -m tcp --dport 7722 -j DROP
-A INPUT -p tcp -m tcp --dport 21 -j DROP
-A INPUT -p tcp -m tcp --dport 110 -j DROP
-A INPUT -p tcp -m tcp --dport 143 -j DROP
-A INPUT -p tcp -m tcp --dport 8082 -j DROP
-A INPUT -p udp -m udp --dport 8082 -j DROP
-A INPUT -p tcp -m tcp --dport 80 -j DROP
-A OUTPUT -p tcp -m tcp --dport 8080 -j DROP
-A OUTPUT -p udp -m udp --dport 8080 -j DROP
-A OUTPUT -p tcp -m tcp --dport 8081 -j DROP
-A OUTPUT -p udp -m udp --dport 8081 -j DROP
-A OUTPUT -p tcp -m tcp --dport 7722 -j DROP
-A OUTPUT -p tcp -m tcp --dport 21 -j DROP
-A OUTPUT -p tcp -m tcp --dport 110 -j DROP
-A OUTPUT -p tcp -m tcp --dport 143 -j DROP
-A OUTPUT -p tcp -m tcp --dport 8082 -j DROP
-A OUTPUT -p udp -m udp --dport 8082 -j DROP
-A OUTPUT -p tcp -m tcp --dport 80 -j DROP
-A f2b-apache-admin -j RETURN
-A f2b-apache-badbots -j RETURN
-A f2b-apache-botsearch -j RETURN
-A f2b-apache-fakegooglebot -j RETURN
-A f2b-apache-modsecurity -j RETURN
-A f2b-apache-nohome -j RETURN
-A f2b-apache-noscript -j RETURN
-A f2b-apache-overflows -j RETURN
-A f2b-apache-shellshock -j RETURN
-A f2b-attack-x00 -j RETURN
-A f2b-decode -j RETURN
-A f2b-dovecot -j RETURN
-A f2b-forbidden -j RETURN
-A f2b-ip-scann -j RETURN
-A f2b-nullmulti -j RETURN
-A f2b-postfix -j RETURN
-A f2b-postfix-auth -j RETURN
-A f2b-postfix-sasl -j RETURN
-A f2b-pure-ftpd -j RETURN
-A f2b-scanner-key -j RETURN
-A f2b-scanner-script -j RETURN
-A f2b-scanner-url -j RETURN
-A f2b-smtp-secu -j RETURN
-A f2b-sshd -j RETURN
COMMIT
# Completed on Fri Dec 13 19:57:22 2019

J’ai volontairement bloquer les ports de phpmyadmin et ispconfig, pour que juste mon IP est accès.

Une Idée? une aide?

Donc le problème ne vient pas de la détection du spam (au sens web pourriture), mais au niveau du déclenchement des mesures de rétorsion de fail2ban.
Ca mérite donc un test de violation des règles fail2ban, afin d’examiner ce qui se déclenche quand une action matche la surveillance ( modifs iptables, exécution de scripts autres déclarées dns la config iptables, autre).

Désolé pour ma réponse généraliste, mais pas grand chose d’autre ne me vient à l’esprit pour diagnostiquer les détails du problème.

1 J'aime

Voici un extrait de mon fail2ban.log , j’ai également fais un test de violation , come j’ai dit dans les logs de Apache2 pas de souci :

2019-12-13 18:31:29,961 fail2ban.jail           [31017]: INFO    Creating new jail 'postfix-auth'
2019-12-13 18:31:29,966 fail2ban.jail           [31017]: INFO    Jail 'postfix-auth' uses poller {}
2019-12-13 18:31:29,972 fail2ban.jail           [31017]: INFO    Initiated 'polling' backend
2019-12-13 18:31:29,975 fail2ban.filter         [31017]: INFO    Added logfile = /var/log/mail.log
2019-12-13 18:31:29,976 fail2ban.filter         [31017]: INFO    Set findtime = 600
2019-12-13 18:31:29,978 fail2ban.filter         [31017]: INFO    Set maxRetry = 1
2019-12-13 18:31:29,979 fail2ban.actions        [31017]: INFO    Set banTime = 172800
2019-12-13 18:31:29,980 fail2ban.filter         [31017]: INFO    Set jail log file encoding to UTF-8
2019-12-13 18:31:30,007 fail2ban.jail           [31017]: INFO    Creating new jail 'smtp-secu'
2019-12-13 18:31:30,013 fail2ban.jail           [31017]: INFO    Jail 'smtp-secu' uses poller {}
2019-12-13 18:31:30,018 fail2ban.jail           [31017]: INFO    Initiated 'polling' backend
2019-12-13 18:31:30,021 fail2ban.filter         [31017]: INFO    Added logfile = /var/log/mail.log
2019-12-13 18:31:30,022 fail2ban.filter         [31017]: INFO    Set findtime = 600
2019-12-13 18:31:30,024 fail2ban.filter         [31017]: INFO    Set maxRetry = 1
2019-12-13 18:31:30,025 fail2ban.actions        [31017]: INFO    Set banTime = 172800
2019-12-13 18:31:30,026 fail2ban.filter         [31017]: INFO    Set jail log file encoding to UTF-8
2019-12-13 18:31:30,061 fail2ban.jail           [31017]: INFO    Jail 'sshd' started
2019-12-13 18:31:30,078 fail2ban.jail           [31017]: INFO    Jail 'apache-badbots' started
2019-12-13 18:31:30,092 fail2ban.jail           [31017]: INFO    Jail 'apache-noscript' started
2019-12-13 18:31:30,102 fail2ban.jail           [31017]: INFO    Jail 'apache-overflows' started
2019-12-13 18:31:30,112 fail2ban.jail           [31017]: INFO    Jail 'apache-nohome' started
2019-12-13 18:31:30,119 fail2ban.jail           [31017]: INFO    Jail 'apache-botsearch' started
2019-12-13 18:31:30,130 fail2ban.jail           [31017]: INFO    Jail 'apache-fakegooglebot' started
2019-12-13 18:31:30,139 fail2ban.jail           [31017]: INFO    Jail 'apache-modsecurity' started
2019-12-13 18:31:30,147 fail2ban.jail           [31017]: INFO    Jail 'apache-shellshock' started
2019-12-13 18:31:30,163 fail2ban.jail           [31017]: INFO    Jail 'pure-ftpd' started
2019-12-13 18:31:30,172 fail2ban.jail           [31017]: INFO    Jail 'postfix' started
2019-12-13 18:31:30,179 fail2ban.jail           [31017]: INFO    Jail 'dovecot' started
2019-12-13 18:31:30,186 fail2ban.jail           [31017]: INFO    Jail 'postfix-sasl' started
2019-12-13 18:31:30,198 fail2ban.jail           [31017]: INFO    Jail 'apache-admin' started
2019-12-13 18:31:30,219 fail2ban.jail           [31017]: INFO    Jail 'decode' started
2019-12-13 18:31:30,228 fail2ban.jail           [31017]: INFO    Jail 'ip-scann' started
2019-12-13 18:31:30,239 fail2ban.jail           [31017]: INFO    Jail 'scanner-key' started
2019-12-13 18:31:30,248 fail2ban.jail           [31017]: INFO    Jail 'scanner-url' started
2019-12-13 18:31:30,256 fail2ban.jail           [31017]: INFO    Jail 'scanner-script' started
2019-12-13 18:31:30,265 fail2ban.jail           [31017]: INFO    Jail 'forbidden' started
2019-12-13 18:31:30,273 fail2ban.jail           [31017]: INFO    Jail 'nullmulti' started
2019-12-13 18:31:30,283 fail2ban.jail           [31017]: INFO    Jail 'attack-x00' started
2019-12-13 18:31:30,290 fail2ban.jail           [31017]: INFO    Jail 'postfix-auth' started
2019-12-13 18:31:30,298 fail2ban.jail           [31017]: INFO    Jail 'smtp-secu' started
2019-12-13 18:31:32,391 fail2ban.actions        [31017]: NOTICE  [scanner-url] Ban xxx.xxx.xxx
2019-12-13 18:41:15,088 fail2ban.filter         [31017]: INFO    [forbidden] Found xxx.xxx.xxx
2019-12-14 00:59:51,937 fail2ban.filter         [31017]: INFO    [apache-fakegooglebot] Ignore xxx.xxx.xxx by command
2019-12-14 01:37:02,350 fail2ban.filter         [31017]: INFO    [scanner-url] Found xxx.xxx.xxx
2019-12-14 01:37:02,351 fail2ban.filter         [31017]: INFO    [scanner-url] Found xxx.xxx.xxx
2019-12-14 01:37:02,367 fail2ban.filter         [31017]: INFO    [apache-admin] Found xxx.xxx.xxx
2019-12-14 01:37:02,391 fail2ban.actions        [31017]: NOTICE  [scanner-url] Ban xxx.xxx.xxx
2019-12-14 01:37:03,381 fail2ban.filter         [31017]: INFO    [apache-admin] Found xxx.xxx.xxx
2019-12-14 02:07:15,500 fail2ban.filter         [31017]: INFO    Log rotation detected for /var/log/syslog
2019-12-14 02:32:34,485 fail2ban.filter         [31017]: INFO    [forbidden] Found xxx.xxx.xxx

Le souci est que le déclenchement ne ce fait pas dans /var/log/mail.log ou mail.warn pour postfix ou devecot :
j’ai revérifier une règle qui devrait bannir souvent " postfix-auth"

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

Use   failregex filter file : postfix-auth, basedir: /etc/fail2ban
Use ignoreregex filter file : postfix-auth, basedir: /etc/fail2ban
Use         log file : /var/log/mail.log
Use         encoding : UTF-8


Results
=======

Failregex: 34 total
|-  #) [# of hits] regular expression
|   1) [34] lost connection after (AUTH|UNKNOWN|EHLO|STARTTLS) from (.*)\[<HOST>

Il y a bien 14 violation de plus que hier:
hier -> Failregex: 20 total pour la même règle.

la règle de Postfix-auth dans Jail.local :

[postfix-auth]
enabled = true
port = smtp
filter = postfix-auth
logpath = /var/log/mail.log
maxretry = 1

Postfix-auth.conf:

[Definition]
failregex = lost connection after (AUTH|UNKNOWN|EHLO|STARTTLS) from (.*)\[<HOST>\]
ignoreregex =

est-ce possible que ispconfig3 qui a un firewall lui-même bloque fail2ban sur les logs du seveur mail? J’ai vu qu’il utilisait bastille-firewall mais je ne vois aucun log
bastill-firewall.cfg

Bonjour,

Le retour de tes commandes fail2ban-regex n’est pas complet. On ne voit pas le nombre de correspondances global en fin de retour.

Par ailleurs fail2ban-regex peut bien trouver 20 lignes correspondant à une expression régulière et fail2ban ne bannir aucune IP si ces lignes correspondent à des IP différentes. Par exemple, si fail2ban est réglé pour bannir au bout de 3 tentatives, tu peux avoir 10 IP différentes qui font chacune deux tentatives (20 hits pour fail2ban-regex) et aucun bannissement.

1 J'aime

bonjour Bruno , merci pour ton aide ,
voici retour du fail2ban-regex complet:

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

Use   failregex filter file : postfix-auth, basedir: /etc/fail2ban
Use ignoreregex filter file : postfix-auth, basedir: /etc/fail2ban
Use         log file : /var/log/mail.log
Use         encoding : UTF-8
Results
=======

Failregex: 35 total
|-  #) [# of hits] regular expression
|   1) [35] lost connection after (AUTH|UNKNOWN|EHLO|STARTTLS) from (.*)\[<HOST>                                      \]
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [2092] (?:DAY )?MON Day 24hour:Minute:Second(?:\.Microseconds)?(?: Year)?
`-

Lines: 2092 lines, 0 ignored, 35 matched, 2057 missed
[processed in 0.88 sec]

Missed line(s): too many to print.  Use --print-all-missed to print all 2057 lines

J’ai regler le bannissement sur " maxretry = 1" donc devrait bannir à la première expression d’une IP, non?
S’est ce qui ce passe bien avec les logs de Apache2 , pourquoi pas avec ceux de mail.log?

Pardon, je n’avait pas vu le maxretry=1. Il faudrait aussi vérifier bantime et findtime.
Les test avec fail2ban-regex trouve bien 35 correspondance dans les logs, donc potentiellement de nombreuses IP bannies.
Sinon pour le filtre postfix-auth.conf, j’aurais mis :

[INCLUDES]
before = common.conf

[Definition]
_daemon = postfix(-\w+)?/(?:submission/|smtps/)?smtp[ds]

failregex = ^%(__prefix_line)slost connection after (AUTH|UNKNOWN|EHLO|STARTTLS) from .*\[<HOST>\]$

J’ai modifier le filtre comme ci-dessus , et redemarrer fail2ban ,
voici le démarrage de la règle avec Bantime et findtime:

2019-12-14 17:20:36,740 fail2ban.jail           [27068]: INFO    Creating new jail 'postfix-auth'
2019-12-14 17:20:36,746 fail2ban.jail           [27068]: INFO    Jail 'postfix-auth' uses poller {}
2019-12-14 17:20:36,752 fail2ban.jail           [27068]: INFO    Initiated 'polling' backend
2019-12-14 17:20:36,754 fail2ban.filter         [27068]: INFO    Set jail log file encoding to UTF-8
2019-12-14 17:20:36,755 fail2ban.actions        [27068]: INFO    Set banTime = 172800
2019-12-14 17:20:36,756 fail2ban.filter         [27068]: INFO    Set findtime = 600
2019-12-14 17:20:36,758 fail2ban.filter         [27068]: INFO    Added logfile = /var/log/mail.log
2019-12-14 17:20:36,761 fail2ban.filter         [27068]: INFO    Set maxRetry = 1

le retour de Fail2ban-client status postfix-auth:

Status for the jail: postfix-auth
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- File list:        /var/log/mail.log
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:

Je viens de tester ton filtre tel que tu l’as fait sur un serveur de courrier (postfix+dovecot) et les IP sont bien bannies. Je pense donc que le problème ne vient pas de fail2ban. Désolé pour les fausses pistes…

Pas de souci Bruno1 , merci pour ton aide comme même , mais s’est comme bizarre cette histoire , un vrai casse-tête , j’avais déja un serveur mail , postfix,dovecot , postfixadmin , rspam , mais sans ispconfig3 et j’avais pas ce problème , avec les même règles .
Je voulais pas perdre tu temps a tout installer moi-même avec le nouveau serveur , donc j’ai pris un serveur préinstaller avec ipsconfig3.

Il y a encore un truc que je n’avais pas remarqué dans ta config :

[postfix-auth]
enabled = true
port = smtp

Là tu ne bloque les IP que sur le port 25. Il est fort probable que ton serveur utilise aussi submission et même smtps, donc au minimum :

port = 25,587,465

voire en plus les ports imap, imaps, pop, pop3s si dovecot est utilisé pour l’authentification.

bon ce matin ,j’ai désinstaller et purger fail2ban , j’ai modifier postfix-auth , ajouter les ports ,
pour le moment , y a rien dans le fichier mail.log , donc attendont…

un petit retour, après plusieurs tentative, et test , réinstallation je pense avoir trouver pourquoi cela ne bannissait pas dans mail.log , j’ai remarque que la date de mail.log était décaler de 2h , pourquoi aucune idée? J’ai donc en premier relancer tout les services , pas de changement, puis rebooter tout la machine. Maintenant les dates des logs sont a l’heures , depuis hier soir cela fonctionne :slight_smile:

Me reste juste encore a trouver et a réussir de faire une règle pour bannir :

 imap-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=<HOST>,  *lip=xxx.xxx.xxx.xxx, TLS handshaking: SSL_accept() syscall failed: Connection reset by peer, session=<feez2sx5xs> 

Cela me polluer mes logs, j’ai déja tenter a crée une règle mais sans succès jusqu’a maintenant , ou y a t’il une règle toute faite?