Zimbra Collaboration Suite开源版在其工具库中提供了许多用于确保信息安全的强大工具。 其中,
Postscreen是一种保护邮件服务器免受僵尸网络攻击的解决方案; ClamAV是一种防病毒软件,可以扫描传入文件和信件中是否存在恶意软件感染,而
SpamAssassin是迄今为止最好的垃圾邮件过滤器之一。 但是,这些工具无法保护Zimbra OSE免受暴力攻击。 在特殊词典中,密码并不是最优雅的方法,但仍然非常有效地枚举,不仅充满了成功破解所有后继后果的可能性,而且还带来了服务器上大量负载的创建,该负载处理了所有使用Zimbra OSE破解服务器的未成功尝试。

原则上,您可以使用标准Zimbra OSE工具保护自己免受暴力侵害。 密码安全策略设置允许您设置密码尝试失败的次数,此后将阻止可能受到攻击的帐户。 这种方法的主要问题是,可能会发生这样的情况:一个或多个员工的帐户可能由于暴力攻击而被封锁,而他们对此毫无关系,并且员工的简单工作可能给公司带来巨大损失。 这就是为什么最好不要采用这种防止暴力的选择。

为了防止暴力,Zimbra OSE内置了一个称为DoSFilter的特殊工具,它可以通过HTTP自动与Zimbra OSE断开连接。 换句话说,DoSFilter的操作原理类似于PostScreen的操作原理,仅用于其他协议。 最初旨在限制单个用户可以执行的操作数量,DoSFilter也可以提供针对暴力的保护。 它与Zimbra内置工具的主要区别在于,经过一定次数的不成功尝试后,它不会阻止用户本人,而是阻止进行多次尝试登录到一个或另一个帐户的IP地址。 因此,系统管理员不仅可以保护自己免受暴力侵害,还可以通过简单地将其公司的内部网络添加到受信任的IP地址和子网列表中来避免阻止公司员工。
DoSFilter的一大优点是,除了多次尝试登录一个或另一个帐户外,您还可以使用此工具自动阻止那些拥有员工身份验证数据的网络罪犯,然后成功登录其帐户并开始向服务器发送数百个请求。
您可以使用以下控制台命令配置DoSFilter:
- zimbraHttpDosFilterMaxRequestsPerSec-使用此命令可以设置一个用户允许的最大连接数。 默认情况下,此值为30个连接。
- zimbraHttpDosFilterDelayMillis-使用此命令,可以设置超出上一命令设置的限制的连接的延迟(以毫秒为单位)。 除了整数值之外,管理员还可以指定0以便根本没有延迟,还可以指定-1以便简单地中断所有超过指定限制的连接。 默认情况下,此值为-1。
- zimbraHttpThrottleSafeIPs-使用此命令,管理员可以指定不受上述限制影响的受信任IP地址和子网。 请注意,此命令的语法可能会根据所需结果而有所不同。 因此,例如,通过输入命令zmprov mcf zimbraHttpThrottleSafeIPs 127.0.0.1 ,您可以完全重写整个列表,并在其中仅保留一个IP地址。 如果输入命令zmprov mcf + zimbraHttpThrottleSafeIPs 127.0.0.1 ,则输入的IP地址将添加到白名单中。 同样,使用减号,您可以从允许的列表中删除任何IP。
请注意,使用Zextras Suite Pro扩展程序时,DoSFilter可能会导致许多问题。 为了避免它们,我们建议使用命令
zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100将同时连接的数量从30
增加到100 。 另外,我们建议将企业的内部网络添加到允许的列表中。 可以使用命令
zmprov mcf + zimbraHttpThrottleSafeIPs 192.168.0.0/24来完成。 对DoSFilter进行任何更改之后,请确保使用
zmmailboxdctl restart命令重新启动邮件服务器。
DoSFilter的主要缺点是它可以在应用程序级别运行,因此只能限制攻击者在服务器上执行各种操作的能力,而不能限制连接到北方的能力。 因此,尽管认证请求或发送给服务器的信件显然是失败的,但它们仍将是一种很好的旧DoS攻击,无法在如此高的级别上阻止。
为了使用Zimbra OSE完全保护公司服务器,可以使用Fail2ban之类的解决方案,该框架可以不断监视信息系统日志中是否存在重复操作,并通过更改防火墙设置来阻止入侵者。 如此低的阻止水平可让您在与服务器的IP连接阶段立即禁用攻击者。 因此,Fail2Ban可以完美补充使用DoSFilter构建的保护。 让我们了解如何使用Zimbra OSE结识Fail2Ban朋友,从而提高企业IT基础架构的安全性。
像任何其他企业级应用程序一样,Zimbra Collaboration Suite开源版维护其工作的详细日志。 它们大多数以文件形式存储在
/ opt / zimbra / log /文件夹中。 这里只是其中一些:
- Mailbox.log-码头邮件服务日志
- audit.log-身份验证日志
- clamd.log-防病毒日志
- freshclam.log-防病毒更新日志
- convertd.log-附件转换器日志
- zimbrastats.csv-服务器性能日志
Zimbra日志也可以在
/var/log/zimbra.log文件中找到,该文件中维护了Postfix和Zimbra本身的日志。
为了保护我们的系统免受暴力侵害,我们将监视
mailbox.log ,
audit.log和
zimbra.log 。
为了使所有功能正常工作,必须使用Zimbra OSE在您的服务器上安装Fail2Ban和iptables。 如果使用Ubuntu,则可以使用
dpkg -s fail2ban命令执行此
操作 ,但是如果使用CentOS,则可以使用
安装的
yum list fail2ban命令进行验证 。 如果您没有安装Fail2Ban,则安装它不会有问题,因为该软件包几乎在所有标准存储库中。
安装所有必需的软件之后,您可以继续配置Fail2Ban。 为此,创建一个配置文件
/etc/fail2ban/filter.d/zimbra.conf ,在其中我们为Zimbra OSE日志编写正则表达式,该表达式将对应于错误的登录尝试并触发Fail2Ban机制。 这是zimbra.conf内容的示例,其中包含一组正则表达式,它们对应于身份验证尝试失败时Zimbra OSE生成的各种错误:
# 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 =
编译Zimbra OSE的正则表达式后,该开始编辑Fail2ban本身的配置了。 该实用程序的设置位于
/etc/fail2ban/jail.conf文件中。 为了以防万一,我们将使用
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak命令
对其进行备份 。 之后,让我们将该文件转换为以下格式:
# 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
尽管此示例相当通用,但值得解释一下自己设置Fail2Ban时可能要更改的一些参数:
- Ignoreip-使用此参数,您可以指定特定的IP或子网,即不应该从中检查Fail2Ban的地址。 通常,企业的内部网络和其他受信任地址将添加到忽略列表中。
- 禁止时间-入侵者将被禁止的时间。 以秒为单位。 值-1表示无限制。
- Maxretry-一个IP地址可以尝试访问服务器的最大次数。
- Sendmail-一种设置,使您可以自动发送有关Fail2Ban操作的电子邮件警报。
- Findtime-一种设置,允许您设置时间间隔,在该时间间隔内,尝试失败的最大次数已用完之后,IP地址可以再次尝试访问服务器(maxretry参数)
使用Fail2Ban设置保存文件后,仅使用
service fail2ban restart命令重新启动此实用程序。 重新启动后,将连续监视Zimbra主日志中的正则表达式匹配。 因此,管理员几乎可以消除入侵者进入Zimbra Collaboration Suite开源版邮箱的任何可能性,而且还可以保护Zimbra OSE内运行的所有服务,并知道进行未经授权访问的任何尝试。
有关Zextras Suite的所有问题,您可以通过电子邮件katerina@zextras.com与Zextras代表联系,Ekaterina Triandafilidi。