目前,我们所有的电子邮件都存储在内部网络中的 Dovecot IMAP 服务器上。网络上的客户端计算机可以连接并访问其电子邮件。
现在,我们希望允许某些用户使用 IMAP 从外部连接并查看他们的电子邮件。我们目前有一个带有专用(未使用的)DMZ 端口的防火墙/路由器。在我看来,我们有两个选择:
- 在路由器上设置端口转发,将端口 585 或 993 上的任何 IMAP 请求转发到服务器;然后服务器可以验证用户。
- 将反向代理 IMAP 服务器连接到路由器的 DMZ;这反过来可以将 IMAP 请求转发到内部网络上的服务器(在执行此操作之前可以选择验证用户名)。
有人对这两种方法的优点有什么建议/意见吗?
我发现很难想象在三脚防火墙的 DMZ 中拥有额外的反向代理会有什么好处,因为它几乎只是有效地进行端口转发。……还是我遗漏了什么?
答案1
将 IMAP 从 Internet 端口转发到 LAN 意味着添加一个非常有选择性的转发规则。您不会在服务器端遇到诸如动态端口分配之类的麻烦(就像 FTP 或 MSRPC 等协议那样)。在我看来,对 LAN 的暴露是最小的。您依赖 IMAP 服务器上的 IP 堆栈不做任何愚蠢的事情(因为您向服务器提供了未经请求的入站 IP 访问权限),并且您依赖 IMAP 服务器软件本身不做任何愚蠢的事情。
使用您描述的 DMZ 方案,您可以限制 IMAP 服务器与 Internet 的直接 IP 连接,并限制 IMAP 服务器执行某些愚蠢操作可能给您带来的风险程度。您将直接 IP 连接到 IMAP 服务器的风险与直接 IP 连接到 IMAP 代理服务器的风险进行交换,并且您依赖 IMAP 代理服务器软件不会执行任何愚蠢操作。在这种情况下,仍然有可能通过 IMAP 代理利用 IMAP 服务器中的漏洞,具体取决于 IMAP 代理的“状态”程度以及它执行的“健全性检查”程度。
在我看来,DMZ 方法增加了移动部件和复杂性,而没有增加多少实际安全性。我认为您最好将端口转发到 LAN,并使用您在 DMZ/IMAP 代理方法上花费的精力,确保您拥有 IMAP 服务器的良好日志记录、可抵御暴力破解密码的密码/锁定策略,以及一个警报机制,如果您看到 IMAP 服务器的意外流量(“前所未见”的分析),它会通知您。
答案2
我遇到了类似的问题,我通过在我的身份验证数据库中添加“allow_remote_login”列解决了该问题,然后我将用于验证用户的 sql 命令更改为:
SELECT email as user, password FROM users WHERE email='%u' AND (allow_remote OR %a != 144);
在 dovecot.conf 中,我将监听行更改为列出端口 143 和 144;其中 144 是外部端口转发指向的端口:
listen = *:143 [::]:143 *:144 [::]:144