保护 Zimbra OSE 免受暴力破解和 DoS 攻击

Zimbra 协作套件开源版拥有多种强大的工具来确保信息安全。 他们之中 后屏 - 一种保护邮件服务器免受僵尸网络攻击的解决方案,ClamAV - 一种防病毒软件,可以扫描传入文件和信件是否受恶意程序感染,以及 SpamAssassin的 - 当今最好的垃圾邮件过滤器之一。 然而,这些工具无法保护 Zimbra OSE 免受暴力攻击。 虽然不是最优雅的,但仍然相当有效,使用特殊字典的暴力破解密码不仅充满了成功黑客攻击的可能性以及随之而来的所有后果,而且还会在服务器上创建显着的负载,该服务器处理所有密码。尝试使用 Zimbra OSE 攻击服务器未成功。

保护 Zimbra OSE 免受暴力破解和 DoS 攻击

原则上,您可以使用标准 Zimbra OSE 工具保护自己免受暴力破解。 密码安全策略设置允许您设置密码输入尝试失败的次数,在此之后可能会受到攻击的帐户将被阻止。 这种做法的主要问题是,出现这样的情况:一名或多名员工的账户可能会因为与他们无关的暴力攻击而被封锁,由此导致员工工作停顿,给企业带来巨大损失。公司。 这就是为什么最好不要使用这种针对暴力破解的保护选项。

保护 Zimbra OSE 免受暴力破解和 DoS 攻击

为了防止暴力破解,一种名为 DoSFilter 的特殊工具更适合,它内置于 Zimbra OSE 中,可以通过 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 可能会产生许多问题。 为了避免它们,我们建议使用以下命令将同时连接数从 30 增加到 100 zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100。 另外,我们建议将企业内部网络添加到允许的列表中。 这可以使用命令来完成 zmprov mcf +zimbraHttpThrottleSafeIPs 192.168.0.0/24。 对 DoSFilter 进行任何更改后,请务必使用以下命令重新启动邮件服务器 zmmailboxdctl 重新启动.

DoSFilter的主要缺点是它工作在应用程序级别,因此只能限制攻击者在服务器上执行各种操作的能力,而不能限制北向连接的能力。 因此,发送到服务器进行身份验证或发送信件的请求,尽管显然会失败,但仍然代表着一种古老的 DoS 攻击,无法在如此高的级别上阻止。

为了使用 Zimbra OSE 完全保护您的企业服务器,您可以使用 Fail2ban 等解决方案,该框架可以持续监控信息系统日志中的重复操作,并通过更改防火墙设置来阻止入侵者。 在如此低的级别进行阻止可以让您在 IP 连接到服务器的阶段阻止攻击者。 因此,Fail2Ban 可以完美补充使用 DoSFilter 构建的保护。 让我们了解如何将 Fail2Ban 与 Zimbra OSE 连接,从而提高企业 IT 基础设施的安全性。

与任何其他企业级应用程序一样,Zimbra Collaboration Suite 开源版保留其工作的详细日志。 大部分都保存在文件夹中 /选择/zimbra/日志/ 以文件的形式。 以下只是其中的一些:

  • Mailbox.log — Jetty 邮件服务日志
  • audit.log - 身份验证日志
  • clamd.log — 防病毒操作日志
  • freshclam.log - 防病毒更新日志
  • Convertd.log — 附件转换器日志
  • zimbrastats.csv - 服务器性能日志

Zimbra 日志也可以在该文件中找到 /var/log/zimbra.log,其中保存 Postfix 和 Zimbra 本身的日志。

为了保护我们的系统免受暴力破解,我们将监控 邮箱日志, 审计日志 и zimbra.log.

为了使一切正常工作,必须使用 Zimbra OSE 在您的服务器上安装 Fail2Ban 和 iptables。 如果您使用的是 Ubuntu,则可以使用以下命令来执行此操作 dpkg -s 失败2禁止,如果你使用CentOS,你可以使用命令检查这一点 yum 列出已安装的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, [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

尽管这个示例非常通用,但仍然值得解释一下您在自己设置 Fail2Ban 时可能想要更改的一些参数:

  • 忽略 — 使用此参数,您可以指定 Fail2Ban 不应检查地址的特定 IP 或子网。 通常,企业内部网络和其他可信地址都会被添加到忽略列表中。
  • 班泰姆 — 违规者将被禁止的时间。 以秒为单位测量。 值为 -1 表示永久禁止。
  • 最大重试次数 — 一个IP地址可以尝试访问服务器的最大次数。
  • 发送邮件 — 允许您在触发 Fail2Ban 时自动发送电子邮件通知的设置。
  • 查找时间 — 允许您设置时间间隔,在最大不成功尝试次数用尽后,IP 地址可以再次尝试访问服务器(maxretry 参数)

使用 Fail2Ban 设置保存文件后,剩下的就是使用以下命令重新启动该实用程序 服务fail2ban重启。 重启后,将开始持续监控 Zimbra 主日志是否符合正则表达式。 因此,管理员不仅能够几乎消除攻击者渗透 Zimbra Collaboration Suite 开源版邮箱的可能性,还能保护 Zimbra OSE 中运行的所有服务,并了解任何未经授权的访问尝试。

对于与 Zextras Suite 相关的所有问题,您可以通过电子邮件联系 Zextras Ekaterina Triandafilidi 的代表 [电子邮件保护]

来源: habr.com

添加评论