Zimbra Collaboration Suite Open-Source Edition tiene en su arsenal varias herramientas poderosas para garantizar la seguridad de la información. Entre ellos,
Postscreen es una solución para proteger el servidor de correo de ataques de botnets, ClamAV es un antivirus que puede escanear archivos entrantes y cartas en busca de infecciones de malware, y
SpamAssassin es uno de los mejores filtros de spam hasta la fecha. Sin embargo, estas herramientas no pueden proteger el OSE de Zimbra de una forma de ataque como la fuerza bruta. No es la enumeración de contraseñas más elegante, pero aún bastante efectiva, en un diccionario especial está cargada no solo con la probabilidad de un pirateo exitoso con todas las consecuencias resultantes, sino también con la creación de una carga significativa en el servidor, que procesa todos los intentos fallidos de piratear el servidor con Zimbra OSE.

En principio, puede protegerse de la fuerza bruta utilizando las herramientas estándar de Zimbra OSE. La configuración de la política de seguridad de contraseña le permite establecer el número de intentos fallidos de contraseña, después de lo cual se bloquea la cuenta potencialmente atacada. El principal problema con este enfoque es que surgen situaciones en las que las cuentas de uno o más empleados pueden bloquearse debido a un ataque de fuerza bruta, a lo que no tienen nada que hacer, y el trabajo simple resultante de los empleados puede traer grandes pérdidas a la empresa. Es por eso que esta opción de protección contra la fuerza bruta es mejor no aplicar.

Para protegerse contra la fuerza bruta, una herramienta especial llamada DoSFilter es mucho mejor, que está integrada en Zimbra OSE y puede desconectarse automáticamente de Zimbra OSE a través de HTTP. En otras palabras, el principio de funcionamiento de DoSFilter es similar al principio de funcionamiento de PostScreen, que solo se utiliza para otro protocolo. Originalmente diseñado para limitar el número de acciones que puede realizar un solo usuario, DoSFilter también puede proporcionar protección contra la fuerza bruta. Su diferencia clave con la herramienta incorporada en Zimbra es que después de un cierto número de intentos fallidos, no bloquea al usuario, sino la dirección IP desde la cual se realizan múltiples intentos para iniciar sesión en una u otra cuenta. Gracias a esto, el administrador del sistema no solo puede protegerse de la fuerza bruta, sino también evitar bloquear a los empleados de la compañía simplemente agregando la red interna de su compañía a la lista de direcciones IP y subredes de confianza.
La gran ventaja de DoSFilter es que, además de los numerosos intentos de iniciar sesión en una u otra cuenta, con esta herramienta puede bloquear automáticamente a los ciberdelincuentes que tomaron posesión de los datos de autenticación del empleado, y luego inició sesión con éxito en su cuenta y comenzó a enviar cientos de solicitudes al servidor.
Puede configurar DoSFilter utilizando los siguientes comandos de la consola:
- zimbraHttpDosFilterMaxRequestsPerSec : con este comando puede establecer el número máximo de conexiones permitidas para un usuario. Por defecto, este valor es de 30 conexiones.
- zimbraHttpDosFilterDelayMillis : con este comando, puede establecer el retraso en milisegundos para las conexiones que exceden el límite establecido por el comando anterior. Además de los valores enteros, el administrador puede especificar 0 para que no haya ningún retraso, y también -1 para que todas las conexiones que excedan el límite especificado simplemente se interrumpan. Por defecto, este valor es -1.
- zimbraHttpThrottleSafeIPs : con este comando, el administrador puede especificar direcciones IP y subredes confiables que no se verán afectadas por las restricciones anteriores. Tenga en cuenta que la sintaxis de este comando puede variar según el resultado deseado. Entonces, por ejemplo, al ingresar el comando zmprov mcf zimbraHttpThrottleSafeIPs 127.0.0.1 , reescribe completamente la lista completa y deja solo una dirección IP en ella. Si ingresa el comando zmprov mcf + zimbraHttpThrottleSafeIPs 127.0.0.1 , la dirección IP que ingresó se agregará a la lista blanca. Del mismo modo, utilizando un signo de resta, puede eliminar cualquier IP de la lista de permitidos.
Tenga en cuenta que DoSFilter puede causar una serie de problemas al usar las extensiones de Zextras Suite Pro. Para evitarlos, recomendamos aumentar el número de conexiones simultáneas de 30 a 100 utilizando el comando
zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100 . Además, recomendamos agregar la red interna de la empresa a la lista de permitidos. Esto se puede hacer usando el comando
zmprov mcf + zimbraHttpThrottleSafeIPs 192.168.0.0/24 . Después de realizar cualquier cambio en DoSFilter, asegúrese de reiniciar el servidor de correo utilizando el comando
zmmailboxdctl restart .
La principal desventaja de DoSFilter es que funciona a nivel de aplicación y, por lo tanto, solo puede limitar la capacidad de los atacantes para realizar diversas acciones en el servidor, sin limitar la capacidad de conectarse al norte. Debido a esto, las solicitudes de autenticación o envío de cartas enviadas al servidor, aunque obviamente son fallas, seguirán siendo un buen ataque DoS antiguo, que no se puede detener a un nivel tan alto.
Para asegurar completamente su servidor corporativo con Zimbra OSE, puede usar una solución como Fail2ban, que es un marco capaz de monitorear constantemente los registros del sistema de información para acciones repetidas y bloquear al atacante cambiando la configuración del firewall. El bloqueo a un nivel tan bajo le permite deshabilitar a los atacantes justo en la etapa de conexión IP al servidor. Por lo tanto, Fail2Ban puede complementar perfectamente la protección construida con DoSFilter. Veamos cómo puede hacerse amigo de Fail2Ban con Zimbra OSE y, de este modo, aumentar la seguridad de la infraestructura de TI de su empresa.
Al igual que 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 / como archivos. Estos son solo algunos de ellos:
- buzón.log - Registros del servicio de correo Jetty
- audit.log - registros de autenticación
- clamd.log - registros de antivirus
- freshclam.log - registros de actualizaciones de antivirus
- convertd.log - registros del convertidor de archivos adjuntos
- zimbrastats.csv - registros de rendimiento del servidor
Los registros de Zimbra también se pueden encontrar en el archivo
/var/log/zimbra.log , donde se mantienen los registros de Postfix y Zimbra.
Para proteger nuestro sistema de la fuerza bruta, supervisaremos
buzón.log ,
audit.log y
zimbra.log .
Para que todo funcione, es necesario que Fail2Ban e iptables estén instalados en su servidor con Zimbra OSE. Si usa Ubuntu, puede hacerlo usando los
comandos dpkg -s fail2ban , pero si usa CentOS, puede verificar esto usando los
comandos de fail2ban instalados en la lista yum . En el caso de que no tenga instalado Fail2Ban, instalarlo no será un problema, ya que este paquete se encuentra en casi todos los repositorios estándar.
Después de instalar todo el software necesario, puede proceder a configurar Fail2Ban. Para hacer esto, cree un archivo de configuración
/etc/fail2ban/filter.d/zimbra.conf , en el que escribamos expresiones regulares para los registros de Zimbra OSE que corresponderán a intentos de inicio de sesión incorrectos y activarán mecanismos Fail2Ban. Aquí hay un ejemplo del contenido de zimbra.conf con un conjunto de expresiones regulares correspondientes a varios errores generados por 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 =
Después de compilar 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, lo haremos con el comando
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak . Después de eso, llevemos 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, dest=admin@company.ru, sender=fail2ban@company.ru] 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, dest=support@company.ru] 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, dest=support@company.ru ] 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, dest=support@company.ru] 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, dest=support@company.ru] 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, dest=support@company.ru] logpath = /var/log/zimbra.log bantime = -1 maxretry = 5
Aunque este ejemplo es bastante universal, vale la pena explicar algunos parámetros que quizás desee cambiar al configurar Fail2Ban usted mismo:
- Ignoreip : con este parámetro puede especificar una IP o subred específica, la dirección desde la cual Fail2Ban no debe verificar. Por lo general, la red interna de la empresa y otras direcciones confiables se agregan a la lista ignorada.
- Bantime : el tiempo durante el cual el intruso prohibirá. Medido en segundos. Un valor de -1 significa una prohibición ilimitada.
- Maxretry : la cantidad máxima de veces que una dirección IP puede intentar acceder al servidor.
- Sendmail : una configuración que le permite enviar automáticamente alertas por correo electrónico sobre el funcionamiento de Fail2Ban.
- Findtime : 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 con el
comando service fail2ban restart . Después del reinicio, los registros principales de Zimbra comenzarán a monitorearse constantemente para verificar el cumplimiento de las expresiones regulares. Gracias a esto, el administrador podrá eliminar virtualmente cualquier posibilidad de que un atacante penetre no solo en los buzones de Zimbra Collaboration Suite Open-Source Edition, sino que también proteja todos los servicios que se ejecutan dentro del Zimbra OSE, así como también estará al tanto de cualquier intento de obtener acceso no autorizado.
Para todas las preguntas relacionadas con la Suite Zextras, puede contactar al representante de la empresa "Zextras" Ekaterina Triandafilidi por correo electrónico katerina@zextras.com