Linux Fail2ban + Imap

K.D.S

Pro
Se incorporó
20 Enero 2006
Mensajes
529
Estimados, en el servidor de correos zimbra estoy teniendo ataques de fuerza bruta por el puerto de imap y no logro hacer funcionar el fail2ban con ese filtro, lo tengo funcionando son postfix, sasl y webmail del zimbra, esto es lo que tengo en la configuración del fail2ban.

Código:
Algunos de los ataques en el archivo mailbox.log
2017-08-12 20:30:18,001 INFO  [ImapSSLServer-4858] [ip=218.75.150.254;] imap - authentication failed for [juanito] (invalid password)
2017-08-12 20:27:23,633 INFO  [ImapSSLServer-4858] [ip=218.94.106.115;] imap - authentication failed for [[email protected]] (invalid password)

Código:
Lo mismo pero en el archivo audit.log
2017-08-12 20:30:18,001 WARN  [ImapSSLServer-4858] [ip=218.75.150.254;] security - cmd=Auth; [email protected]; protocol=imap; error=authentication failed for [juanito], invalid password;
2017-08-12 20:27:23,633 WARN  [ImapSSLServer-4858] [ip=218.94.106.115;] security - cmd=Auth; [email protected]; protocol=imap; error=authentication failed for [[email protected]], invalid password;

Código:
Esto es lo que tengo en el archivo /filter.d/imap.conf


# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 510 $
#


[Definition]


failregex = \[ip=<HOST>;\] imap - authentication failed for .* \(invalid password\)$


ignoreregex =

Código:
Esto en el archivo jail.conf

[imap]
enabled = true
port = imap
filter = imap
action = iptables-multiport[name=Imap, port=imap, protocol=tcp]
logpath = /opt/zimbra/log/mailbox.log
bantime = 628800
maxretry = 0

Código:
Al reinicar el servicio de fail2ban no muestra ningun error, pero aun asi no funciona el filtro

root@mail:~# fail2ban-client status imap
Status for the jail: imap
|- filter
|  |- File list:        /opt/zimbra/log/mailbox.log
|  |- Currently failed: 0
|  `- Total failed:     0
`- action
  |- Currently banned: 0
  |  `- IP list:
  `- Total banned:     0
root@mail:~#

Código:
Descubrí como correr un test con el filtro configurado y acá me dice que encontró 75 coincidencias, eso quiere decir que el filtro funciona pero no se esta ejecutando la acción de baneo

root@mail:~# fail2ban-regex /opt/zimbra/log/mailbox.log /etc/fail2ban/filter.d/imap.conf


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


Use   failregex file : /etc/fail2ban/filter.d/imap.conf
Use         log file : /opt/zimbra/log/mailbox.log




Results
=======


Failregex: 75 total
|-  #) [# of hits] regular expression
|   1) [75] \[ip=<HOST>;\] imap - authentication failed for .* \(invalid password\)$
`-


Ignoreregex: 0 total


Date template hits:
|- [# of hits] date format
|  [44098] Year-Month-Day Hour:Minute:Second[,subsecond]
`-


Lines: 44969 lines, 0 ignored, 75 matched, 44894 missed
Missed line(s):: too many to print.  Use --print-all-missed to print all 44894 lines
 
Última modificación:

K.D.S

Pro
Se incorporó
20 Enero 2006
Mensajes
529
Me di cuenta y agregue el port de imaps pero aun asi no funcionaba el filtro, hasta que me fije en la hora de los log del zimbra y estaban con 1 hora de retraso, actualice la zona horaria, lo puse a la hora y listo comenzó a capturar los ataques por imaps
clapping.gif
, malditos cambios de hora, siempre dando la cacha.
 
Upvote 0

Miguelwill

I am online
Miembro del Equipo
MOD
Se incorporó
23 Febrero 2004
Mensajes
12.278
xD si, estos cambios suelen dar jugo con ese tipo de filtros

ojo que en las nuevas versiones de zimbra vía cli se pueden habilitar filtros similares a los que usa fail2ban, bloqueando la IP remota en caso de varios logins fallidos
el filtro que incluye vía panel web solo permitía bloquear la cuenta después de un umbral de logins fallidos y un periodo de tiempo

Enviado desde mi MSM8916 for arm64 mediante Tapatalk
 
Upvote 0

Miguelwill

I am online
Miembro del Equipo
MOD
Se incorporó
23 Febrero 2004
Mensajes
12.278
Desde ayer que empezo a correr el filtro llevo mas de 100 ip bloqueadas, me tienen de casero estos ctm...
para esos casos comienzo a aplicar filtro por rangos de IP
revisa cuáles son los más recurrentes , suelen venir de China y Europa del este
algunos de Alemania o de usa

Enviado desde mi MSM8916 for arm64 mediante Tapatalk
 
Upvote 0

K.D.S

Pro
Se incorporó
20 Enero 2006
Mensajes
529
Lo que estoy haciendo es filtrar el log del fail2ban y hago una lista con esas ip y las agrego a mi blacklist permanente y las bloqueo por iptables, pq una vez intente bloquear rangos de ip y después no llegaban correos de ciertas partes que si debian llegar xD
 
Upvote 0

Miguelwill

I am online
Miembro del Equipo
MOD
Se incorporó
23 Febrero 2004
Mensajes
12.278
Lo que estoy haciendo es filtrar el log del fail2ban y hago una lista con esas ip y las agrego a mi blacklist permanente y las bloqueo por iptables, pq una vez intente bloquear rangos de ip y después no llegaban correos de ciertas partes que si debian llegar xD
claro, pero para eso está whois, así puedes ver cuáles son de países seguros y cuáles potenciales rangos dinámicos

Enviado desde mi MSM8916 for arm64 mediante Tapatalk
 
Upvote 0

K.D.S

Pro
Se incorporó
20 Enero 2006
Mensajes
529
Gracias, estoy revisando algunas ip y la mayoria son de china, rusia, india y canada entre otras, asi que estoy aplicando bloqueos de rangos de ip como lo indica la pagina, saludos
 
Upvote 0

K.D.S

Pro
Se incorporó
20 Enero 2006
Mensajes
529
Hola , tengo el mismo problema , podrías compartir como lo hiciste con imap ssl ?

sldss

Revisa la hora de tus log, tanto de la maquina fisica, como los de zimbra y los de var/log mi problema era ese, por los cambios de hora habia un log con 1 hr de retraso y no permitia que funcionara el Fail2ban
 
Upvote 0

rickygm

Miembro Activo
Se incorporó
6 Octubre 2018
Mensajes
3
Hola , la hora la tengo correcta tanto en mi sistema como en los log , esto tengo dentro de mi jail.local

[imap]
enabled = true
port = imaps
filter = imap
action = iptables-multiport[name=Imap, port=imaps, protocol=tcp]
logpath = /opt/zimbra/log/mailbox.log
bantime = 628800
maxretry = 3

y el filtro del imap.conf



[Definition]

failregex = \[ip=<HOST>;\] imap - authentication failed for .* \(invalid password\)$

ignoreregex =


slds
 
Upvote 0

K.D.S

Pro
Se incorporó
20 Enero 2006
Mensajes
529
la configuración parece estar bien, prueba realizando un test con tu filtro y ve si esta funcionando:

root@mail:~# fail2ban-regex /opt/zimbra/log/mailbox.log /etc/fail2ban/filter.d/imap.conf

Si el resultado es positivo quiere decir que tu problema puede ser también la hora de los log, asi que revisa bien
 
Upvote 0

rickygm

Miembro Activo
Se incorporó
6 Octubre 2018
Mensajes
3
La hora la tengo bien

Sat Oct 6 21:06:22 CST 2018

los log del archivo audit.log :

2018-10-06 21:06:43,267 WARN [ImapSSLServer-19] [ip=192.168.50.31;oip=167.250.65.234;via=192.168.50.32(nginx/1.7.1);ua=Zimbra/8.8.8_GA_3008;cid=790;] security - cmd=Auth; [email protected]; protocol=imap; error=authentication failed for [[email protected]], invalid password;
1 2018-10-06 21:06:28,348 WARN [ImapSSLServer-19] [ip=192.168.50.31;oip=36.89.81.53;via=192.168.50.32(nginx/1.7.1);ua=Zimbra/8.8.8_GA_3008;cid=789;] security - cmd=Auth; [email protected]; protocol=imap; error=authentication failed for [[email protected]], account lockout;
1 2018-10-06 21:06:17,967 WARN [ImapSSLServer-19] [ip=192.168.50.31;oip=47.180.63.37;via=192.168.50.32(nginx/1.7.1);ua=Zimbra/8.8.8_GA_3008;cid=788;] security - cmd=Auth; [email protected]; protocol=imap; error=authentication failed for [[email protected]], invalid password;


mira la salida del filtro , no esta detectando nada .

fail2ban-regex /opt/zimbra/log/mailbox.log /etc/fail2ban/filter.d/imap.conf


Running tests

=============


Use failregex filter file : imap, basedir: /etc/fail2ban

Use log file : /opt/zimbra/log/mailbox.log

Use encoding : UTF-8



Results

=======


Failregex: 0 total


Ignoreregex: 0 total


Date template hits:

|- [# of hits] date format

| [161796] Year(?P<_sep>[-/.])Month(?P=_sep)Day 24hour:Minute:Second(?:,Microseconds)?

`-


Lines: 162017 lines, 0 ignored, 0 matched, 162017 missed

[processed in 28.73 sec]


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

K.D.S

Pro
Se incorporó
20 Enero 2006
Mensajes
529
Zorry la demora pero no estuve disponible, me logre conectar al servidor en la oficina y esta es mi configuración:

En el jail.conf solo tengo activado el filtro dovecot

Código:
[dovecot]

enabled = true
port    = smtp,ssmtp,submission,imap2,imap3,imap,imaps,pop3,pop3s
filter  = dovecot
logpath = /opt/zimbra/log/mailbox.log
bantime = 628800
maxretry = 0
y esto es lo que tengo en el filtro dovecot.conf

Código:
# Fail2Ban filter Dovecot authentication and pop3/imap server
#

[INCLUDES]

before = common.conf

[Definition]

_daemon = (auth|dovecot(-auth)?|auth-worker)

failregex = ^%(__prefix_line)s(pam_unix(\(dovecot:auth\))?:)?\s+authentication failure; logname=\S* uid=\S* euid=\S* tty=dovecot ruser=\S* rhost=<HOST>(\s+user=\S*)?\s*$
            ^%(__prefix_line)s(pop3|imap)-login: (Info: )?(Aborted login|Disconnected)(: Inactivity)? \(((no auth attempts|auth failed, \d+ attempts)( in \d+ secs)?|tried to use (disabled|disallowed) \S+ auth)\):( user=<\S*>,)?( method=\S+,)? rip=<HOST>, lip=(\d{1,3}\.){3}\d{1,3}(, session=<\w+>)?(, TLS( handshaking)?(: Disconnected)?)?\s*$
            ^%(__prefix_line)s(Info|dovecot: auth\(default\)): pam\(\S+,<HOST>\): pam_authenticate\(\) failed: (User not known to the underlying authentication module: \d+ Time\(s\)|Authentication failure \(password mismatch\?\))\s*$
#           (.*)\[ip=<HOST>;\] imap - authentication failed for .* \(invalid password\)$
#         (.*)\[ip=<HOST>;\] imap - authentication failed for .* \(account lockout\)$
#         (.*)\[ip=<HOST>;\] imap - authentication failed for .* \(account(or domain) status is closed\)$
#           (.*)\[ip=<HOST>;\] account - authentication failed for .*$
         (.*)\[ip=<HOST>;\] .* authentication failed for .*$

ignoreregex = 

# DEV Notes:
# * the first regex is essentially a copy of pam-generic.conf
# * Probably doesn't do dovecot sql/ldap backends properly
#
# Author: Martin Waschbuesch
#         Daniel Black (rewrote with begin and end anchors)

Ejecuta un test con ese filtro y ve si arroja algún resultado.

Esta demás decir que revises la hora del contenido de los log y que este registrando acorde a la hora del sistema, no vasta con revisar la hora del sistema, pq esa vez al igual que tu decía que tenia la hora correcta pero en los registros de los log se escribían con 1 hr de retraso, pq ni idea xD al final creo que reinicie el servicio de log y se arreglaron, service rsyslog restart
 
Upvote 0

Eliezar

mi gato :D
Se incorporó
1 Febrero 2007
Mensajes
4.792
seguramente el failregex no sirve para ese log , prueba a apuntar al audit.log , el log varia
 
Upvote 0
Subir