使用 Fail2ban 阻止代理 dovecot 密码尝试

使用 Fail2ban 阻止代理 dovecot 密码尝试

我对此进行了大量搜索,但无法找到解决方案。

最简单的解释方法是,我以前只有 1 台电子邮件服务器,现在有 2 台。第一台电子邮件服务器仅接受 SSL 连接,并将非 SSL(即 110、143 等)转发到第二台服务器(这是因为客户端已设置好电子邮件并使用指向第一台电子邮件服务器的 DNS 条目)。

我想在第二台服务器上使用 Fail2ban 来阻止登录失败,但我不知道如何做,因为 Dovecot 只能“看到”第一台服务器的 IP 地址。

我可以在服务器 1 上的 iptables 上打开日志记录,但看不到如何将连接与服务器 2 上失败的密码尝试“关联”。

答案1

一些可能的解决方案:

  1. 在 server1 上启动 Dovecot,并配置它使用登录推荐将客户端发送到服务器 2。如果您的客户端支持登录引用,这可能是最简单的解决方案。每次新登录都会带来短暂的延迟,因为客户端连接到服务器 1,然后被发送到服务器 2。

  2. 在server1上启动Dovecot,并进行配置代理连接到 server2。Dovecot wiki 列出了两种代理方法:

    • 将密码转发到 server2。我猜只要您可以在 server2 上配置 Dovecot 以从代理连接记录客户端的 IP 地址,这样 Fail2ban 就可以使用它,这就可以工作。

    • 在 server1 上执行身份验证。然后您可以在 server1 上设置 Fail2ban。缺点是您必须使用主密码登录 server2。

答案2

也许一个更简单的解决方案是让所有东西都在 server1 上运行,然后仅将 pop/pop 和 imap/imaps 隧道传输到 server2(autossh 是一个简单的解决方案,但可能还有一些更好的方法)。

如果运行autossh以维护从 server2 到 server1 的 ssh 连接:

autossh -M 3319 -4 -R 993:localhost:993 -R 995:localhost:995 -NC server1 -f

/etc/rc.local您可以采用快速而又简单的方法使用此行。

  • -M 3319必须指向一个可用端口(它也将使用 3320)。autossh 使用它来控制隧道是否启动。(请参阅 autossh 的手册页)
  • -4限制为 ipv4(另请参阅手册页)

如果你从 server1 发起到 server2 的连接,则-R变为-L大号局部而不是R表情)。

相关内容