Proteger Zimbra OSE de fuerza bruta y ataques DoS

Zimbra Collaboration Suite Open-Source Edition tiene varias herramientas poderosas de seguridad de la información en su arsenal. Entre ellos Postpantalla - una solución para proteger el servidor de correo de ataques de botnets, ClamAV - un antivirus que puede escanear archivos y cartas entrantes en busca de infecciones de malware, así como SpamAssassin Uno de los mejores filtros de spam de la actualidad. Sin embargo, estas herramientas no pueden proteger a Zimbra OSE de este tipo de ataques, como la fuerza bruta. La fuerza bruta de contraseñas, que no es la más elegante, pero sí bastante efectiva, utilizando un diccionario especial, conlleva no solo la probabilidad de un hack exitoso con todas las consecuencias consiguientes, sino también la creación de una carga significativa en el servidor que procesa todos los intentos fallidos. Hackear el servidor con Zimbra OSE.

Proteger Zimbra OSE de fuerza bruta y ataques DoS

En principio, puedes protegerte de la fuerza bruta utilizando las herramientas estándar de Zimbra OSE. La configuración de la política de seguridad de contraseñas le permite establecer la cantidad de intentos fallidos de ingreso de contraseña, después de los cuales se bloquea la cuenta potencialmente atacada. El principal problema de este enfoque es que hay situaciones en las que las cuentas de uno o más empleados pueden ser bloqueadas debido a un ataque de fuerza bruta en el que no tienen nada que ver, y el consiguiente tiempo de inactividad en el trabajo de los empleados puede traer grandes consecuencias. pérdidas para la empresa. Por eso lo mejor es no utilizar esta opción de protección contra la fuerza bruta.

Proteger Zimbra OSE de fuerza bruta y ataques DoS

Para protegerse contra la fuerza bruta, es mucho más adecuada una herramienta especial llamada DoSFilter, que está integrada en Zimbra OSE y puede finalizar automáticamente la conexión a Zimbra OSE a través de HTTP. En otras palabras, el principio de DoSFilter es similar al principio de PostScreen, sólo que se utiliza para un protocolo diferente. Originalmente diseñado para limitar la cantidad de acciones que puede realizar un solo usuario, DoSFilter también puede brindar protección contra la fuerza bruta. Su principal diferencia con la herramienta integrada en Zimbra es que después de una cierta cantidad de intentos fallidos, no bloquea al usuario en sí, sino la dirección IP desde la cual se realizan múltiples intentos para iniciar sesión en una cuenta en particular. Gracias a esto, el administrador del sistema no sólo puede protegerse de la fuerza bruta, sino también evitar el bloqueo de los empleados de la empresa simplemente agregando la red interna de su empresa a la lista de direcciones IP y subredes confiables.

La gran ventaja de DoSFilter es que, además de numerosos intentos de iniciar sesión en una cuenta en particular, con esta herramienta puede bloquear automáticamente a los intrusos que tomaron posesión de los datos de autenticación del empleado, y luego iniciaron sesión con éxito en su cuenta y comenzaron a enviar cientos. de solicitudes al servidor.

Puede configurar DoSFilter usando los siguientes comandos de consola:

  • zimbraHttpDosFilterMaxRequestsPerSec - Con este comando, puedes establecer el número máximo de conexiones permitidas por usuario. De forma predeterminada, este valor es 30 conexiones.
  • zimbraHttpDosFilterDelayMillis - Con este comando, puede establecer un retraso en milisegundos para las conexiones que excederán el límite especificado por el comando anterior. Además de los valores enteros, el administrador puede especificar 0 para que no haya ningún retraso, así como -1 para simplemente terminar todas las conexiones que excedan el límite especificado. De forma predeterminada, este valor es -1.
  • zimbraHttpThrottleSafeIPs - Con este comando, el administrador puede especificar subredes y direcciones IP confiables que no se verán afectadas por las restricciones enumeradas anteriormente. Tenga en cuenta que la sintaxis de este comando puede variar según el resultado deseado. Entonces, por ejemplo, ingresando el comando zmprov mcf zimbraHttpThrottleSafeIPs 127.0.0.1, sobrescribirá completamente toda la lista y dejará solo una dirección IP en ella. Si ingresas el comando zmprov mcf +zimbraHttpThrottleSafeIPs 127.0.0.1, la dirección IP que ingresó se agregará a la lista blanca. De manera similar, usando el signo de resta, puede eliminar cualquier IP de la lista permitida.

Tenga en cuenta que DoSFilter puede crear una serie de problemas al utilizar las extensiones de Zextras Suite Pro. Para evitarlos recomendamos aumentar el número de conexiones simultáneas de 30 a 100 mediante el comando zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100. Además, le recomendamos agregar la red interna de la empresa a la lista de permitidos. Puedes hacer esto con el comando zmprov mcf +zimbraHttpThrottleSafeIPs 192.168.0.0/24. Después de realizar cambios en DoSFilter, asegúrese de reiniciar el servidor de correo con el comando reiniciar zmmailboxdctl.

La principal desventaja de DoSFilter es que funciona a nivel de aplicación y, por lo tanto, sólo puede limitar la capacidad de los atacantes para realizar diversas acciones en el servidor, sin limitar la capacidad de conectarse al servidor. Debido a esto, las solicitudes enviadas al servidor para autenticación o envío de cartas, aunque obviamente fallarán, seguirán siendo un viejo ataque DoS que no se puede detener a un nivel tan alto.

Para proteger completamente su servidor corporativo con Zimbra OSE, puede utilizar una solución como Fail2ban, que es un marco que puede monitorear constantemente los registros del sistema de información en busca de acciones repetitivas y bloquear al intruso cambiando la configuración del firewall. El bloqueo a un nivel tan bajo le permite desactivar los intrusos directamente en la etapa de conexión IP al servidor. Por tanto, Fail2Ban puede complementar perfectamente la protección creada con DoSFilter. Descubramos cómo puede hacerse amigo de Fail2Ban Zimbra OSE y así aumentar la seguridad de la infraestructura de TI de su empresa.

Como cualquier otra aplicación de clase empresarial, Zimbra Collaboration Suite Open-Source Edition mantiene registros detallados de su trabajo. La mayoría de ellos se almacenan en la carpeta. /opt/zimbra/log/ en forma de archivos. Éstos son sólo algunos de ellos:

  • mailbox.log: registros del servicio de correo Jetty
  • audit.log - registros de autenticación
  • clamd.log - registros de operaciones antivirus
  • Freshclam.log: registros de actualización de antivirus
  • convertd.log - registros del convertidor de archivos adjuntos
  • zimbrastats.csv: registros de rendimiento del servidor

También se pueden encontrar registros de Zimbra en el archivo. /var/log/zimbra.log, donde se guardan los registros de Postfix y Zimbra.

Para proteger nuestro sistema de la fuerza bruta, monitorearemos buzón.log, registro de auditoría и zimbra.log.

Para que todo funcione, necesita tener Fail2Ban e iptables instalados en su servidor Zimbra OSE. En el caso de que estés usando Ubuntu, puedes hacerlo usando los comandos dpkg -s fallo2ban, si está utilizando CentOS, puede verificar esto usando los comandos lista yum instalada fail2ban. En el caso de que no tengas instalado Fail2Ban, instalarlo no será un problema, ya que este paquete se encuentra en casi todos los repositorios estándar.

Una vez instalado todo el software necesario, puede comenzar a configurar Fail2Ban. Para hacer esto, necesita crear un archivo de configuración. /etc/fail2ban/filter.d/zimbra.conf, en el que escribimos expresiones regulares para los registros de Zimbra OSE, que coincidirán con los intentos de inicio de sesión no válidos y activarán los mecanismos Fail2Ban. A continuación se muestra un ejemplo del contenido de zimbra.conf con un conjunto de expresiones regulares correspondientes a varios errores emitidos en Zimbra OSE cuando falla un intento de autenticación:

# Fail2Ban configuration file
 
[Definition]
failregex = [ip=<HOST>;] account - authentication failed for .* (no such account)$
                        [ip=<HOST>;] security - cmd=Auth; .* error=authentication failed for .*, invalid password;$
                        ;oip=<HOST>;.* security - cmd=Auth; .* protocol=soap; error=authentication failed for .* invalid password;$
                        ;oip=<HOST>;.* security - cmd=Auth; .* protocol=imap; error=authentication failed for .* invalid password;$
                        [oip=<HOST>;.* SoapEngine - handler exception: authentication failed for .*, account not found$
                        WARN .*;ip=<HOST>;ua=ZimbraWebClient .* security - cmd=AdminAuth; .* error=authentication failed for .*;$

ignoreregex =

Una vez compiladas las expresiones regulares para Zimbra OSE, es hora de comenzar a editar la configuración de Fail2ban. La configuración de esta utilidad se encuentra en el archivo /etc/fail2ban/jail.conf. Por si acaso, haremos una copia de seguridad del mismo usando el comando cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak. Después de eso, llevaremos este archivo al siguiente formulario:

# Fail2Ban configuration file
 
[DEFAULT]
ignoreip = 192.168.0.1/24
bantime = 600
findtime = 600
maxretry = 5
backend = auto
 
[ssh-iptables]
enabled = false
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, [email protected], [email protected]]
logpath = /var/log/messages
maxretry = 5
 
[sasl-iptables]
enabled = false
filter = sasl
backend = polling
action = iptables[name=sasl, port=smtp, protocol=tcp]
sendmail-whois[name=sasl, [email protected]]
logpath = /var/log/zimbra.log
 
[ssh-tcpwrapper]
enabled = false
filter = sshd
action = hostsdeny
sendmail-whois[name=SSH, dest=support@ company.ru]
ignoreregex = for myuser from
logpath = /var/log/messages
 
[zimbra-account]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-account]
sendmail[name=zimbra-account, [email protected] ]
logpath = /opt/zimbra/log/mailbox.log
bantime = 600
maxretry = 5
 
[zimbra-audit]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-audit]
sendmail[name=Zimbra-audit, [email protected]]
logpath = /opt/zimbra/log/audit.log
bantime = 600
maxretry = 5
 
[zimbra-recipient]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-recipient]
sendmail[name=Zimbra-recipient, [email protected]]
logpath = /var/log/zimbra.log
bantime = 172800
maxretry = 5
 
[postfix]
enabled = true
filter = postfix
action = iptables-multiport[name=postfix, port=smtp, protocol=tcp]
sendmail-buffered[name=Postfix, [email protected]]
logpath = /var/log/zimbra.log
bantime = -1
maxretry = 5

Si bien este ejemplo es bastante genérico, vale la pena explicar algunas de las configuraciones que quizás quieras cambiar al configurar Fail2Ban tú mismo:

  • ignorar - Con este parámetro, puede especificar una IP o subred específica, direcciones desde las cuales Fail2Ban no debe verificar. Como regla general, la red interna de la empresa y otras direcciones confiables se agregan a la lista de ignoradas.
  • Bantime - El tiempo durante el cual el infractor estará suspendido. Medido en segundos. Un valor de -1 significa una prohibición indefinida.
  • maxretry - El número máximo de veces que una dirección IP puede intentar acceder al servidor.
  • Sendmail - Una configuración que le permite enviar automáticamente notificaciones por correo electrónico sobre el funcionamiento de Fail2Ban.
  • tiempo de busqueda - Una configuración que le permite establecer el intervalo de tiempo después del cual la dirección IP puede volver a intentar acceder al servidor después de que se haya agotado el número máximo de intentos fallidos (parámetro maxretry)

Después de guardar el archivo con la configuración de Fail2Ban, solo queda reiniciar esta utilidad usando el comando reinicio del servicio fail2ban. Después de reiniciar, los registros principales de Zimbra serán monitoreados constantemente en busca de expresiones regulares. Gracias a esto, el administrador podrá eliminar virtualmente cualquier posibilidad de que un atacante penetre no solo en los buzones de correo de Zimbra Collaboration Suite Open-Source Edition, sino también proteger todos los servicios que se ejecutan dentro de Zimbra OSE y estar al tanto de cualquier intento de obtener acceso no autorizado. .

Para todas las preguntas relacionadas con Zextras Suite, puede comunicarse con el Representante de Zextras Ekaterina Triandafilidi por correo electrónico [email protected]

Fuente: habr.com

Añadir un comentario