我遇到了一个超出我能力范围的问题。在我们努力改进网络中现有的安全措施时,我们发现了一个我们不知道该如何修复的缺陷(还有其他缺陷)。
我们在本地拥有基于 MDaemon 的 SMTP 服务器,并且我们聘请了一家专业的托管服务公司,将我们连接到 WAN,他们也有自己的 SMTP 中继,可供公众访问。因此,当邮件通过时,它会从他们的 SMTP 发送到我们的 SMTP,再发送到我们的设备。但我们发现他们的 tcp 端口 587 不要求身份验证,这意味着我们可以伪造他们处理的任何域名的地址,发送任何电子邮件,例如, [电子邮件保护]到[电子邮件保护],使潜在攻击者更容易进行网络钓鱼诈骗。但我们的服务提供商不能仅仅因为我们有流动用户通过手机发送邮件就关闭此端口。以下是我想到的选项,不确定它们是否可行:
- 将他们的 SMTP 用户数据库与我们的数据库同步(或使其成为他们的数据库),这样当有人在端口 587 上的 MSA 上进行 netcat 时,他们就有登录名/密码来强制执行和检查身份验证,
- 不使用他们的 MSA,直接将我们的 MSA 公开,其实际效果与将其减少为仅一个可公开访问的 MSA 相同,该 MSA 具有用户数据库来检查身份验证,
- 找到某种方法将身份验证请求从他们的 MSA 转发到我们的 MSA,进行验证,并向他们的 MSA 返回“接受”或“拒绝”令牌。这可能是理想的选择,但我不知道该怎么做。我知道中继身份验证请求用于链式 LDAP/LDAP 或 Active Directory/LDAP 情况,但不知道它如何实际使用,也不知道它是否适用于 SMTP-AUTH,
- 找到一些反欺骗软件放在我们的服务器上(但它如何检查?邮件总是来自一个可能存在地址的受信任的 MSA)
如果您对我们的问题有任何想法,我提前表示感谢。
答案1
首先,我猜想您的 ISP 的端口 587 是否通过某种方式(除了登录名/密码)进行了保护?一种方法是通过源 IP,这样只有连接到该 ISP 的客户才能访问它,但这会限制手机用户通过该 ISP 进行连接。另一种方法是通过 POP-before-SMTP,但这只有在 ISP 也处理邮件存储并因此可以对用户进行身份验证时才有效。我不推荐这两种方法,但我看到的唯一其他解决方案是开放中继,这是确实这是您想要避免的,它的存在会对您的 ISP 的能力产生不良影响。
根据您提供商的 MSA 和您自己的身份验证服务,可以使用代理身份验证。我不推荐它,因为它似乎很难设置和维护,而且我看不到任何好处。
我会推荐你的第二解决方案:您已经通过 IMAP 将邮件存储暴露在互联网上(我想是这样的!),您已经拥有邮件服务器,您已经设置了 MSA,因此将 MSA 暴露在互联网上不会带来巨大的暴露变化。这样,一切都非常标准,解释起来非常简单,您对 ISP 的依赖性降低,您不会不必要地将敏感的登录/密码信息传输给您的 ISP。当然,存在安全问题,例如字典攻击,但如果我没记错的话,您已经通过让手机用户查看邮件将自己暴露在这些问题中。
可以让我改变看法的事情是
- 用户数量(我不认为我们谈论的是 10000+)
- 您的网站带宽极低或极昂贵(但您已在那里运行邮件服务器)
- 如果你的手机用户只发送邮件,那么就不要从互联网上检查邮件