Postfix + Dovecot 与 MySQL 后端:md5 哈希密码和 CRAM-MD5 身份验证

Postfix + Dovecot 与 MySQL 后端:md5 哈希密码和 CRAM-MD5 身份验证

我的问题

在数据库中将 MD5 密码切换到 CRAM-MD5 密码有哪些风险,尤其是考虑到以下情况,以及如何针对现有安装进行处理(假设我知道纯文本密码)?

使用(切换到)CRAM-MD5,

  1. 对于加密/验证,PostfixAdmin 必须doveadm pw在创建用户和更改密码时恢复到外部工具(),因此明文密码至少会短暂地出现在进程列表1中
  2. 我可能会引入一个新的依赖项(同一个工具)
  3. 不确定其他(第三方)工具是否可以解决这个问题

第 2 项可能不是什么大问题,因为我不打算替换 Dovecot(即使替换,在我看来,它也有很好的迁移路径记录)。第 3 项也不是什么大问题然而(因为我不知道有这样的工具)。幕后还有 SASL,如果我没记错的话,它再次在 Dovecot 的帮助下完成了这部分工作(例如smtpd_sasl_type=dovecot在 Postfix 配置中)。但可能是我错过了什么——可能是更多麻烦,也可能是其他选择。

有什么提示吗?除了完全地不同的设置)?

TL;DR(背景)

我正在设置一个新的邮件服务器,使用 Dovecot、Postfix、PostfixAdmin、Sieve 和一些附加组件 - 所有这些都与 MySQL 连接作为后端(大致如下这个德语教程)。到目前为止,我已经完成了所有准备工作,但后来发现它只提供 PLAIN 和 LOGIN 用于 IMAP 身份验证。对于当地的连接(例如同一台机器上的 Roundcube 网络邮件程序)和其他“加密连接”(HTTPS/IMAPS/POP3S/SMTPS)——但我担心有些用户会使用未加密的连接,而我不想完全禁用这些连接(在某些情况下可能需要这些连接)。

因此,我在 Dovecot 中启用了 CRAM-MD5 和 DIGEST-MD5——当然,这不起作用:PostfixAdmin 使用其内部 MD5 程序将密码存储在数据库中,因此 Dovecot 无法匹配它们(请参阅我的答案在这里了解详情)。这基本上给我留下了 3 个选择,其中一个甚至不是这样的:

  • 保持原样(存在上述风险)
  • 在数据库中切换到纯文本密码(哎哟,不行,不行)
  • 在数据库中切换为 CRAM-MD5 密码

更新

通过对“参与者”的调查,我们可以比较以下几种可能性:

                    密码存储 MD5 密码存储 CRAM-DM5
网络邮件(Roundcube)

仅客户端/服务器 HTTPS(HTTP 请求将升级,因此 PLAIN = OK)
IMAP PLAIN PLAIN / CRAM-MD5(内部)²
SMTP PLAIN PLAIN / CRAM-MD5(内部)²

本机客户端(连接到 Postfix/Dovecot)

IMAP³ 普通/登录 普通/登录/CRAM-MD5
SMTP³ 普通/登录 普通/登录/CRAM-MD5
POP3³ 普通/登录 普通/登录/CRAM-MD5
IMAPS 普通/登录 普通/登录/CRAM-MD5
SMTPS 普通/登录 普通/登录/CRAM-MD5
POP3S 普通/登录 普通/登录/CRAM-MD5

Postfix管理员
创建/更新 MD5 (内部) CRAM-MD5 (通过 dovecotadm)⁴

1:postfixadmin/functions.inc.php我刚刚检查了资料来源,在第 928 行发现了以下内容:因此,这个反驳似乎站不住脚。
Use proc_open call to avoid safe_mode problems and to prevent showing plain password in process table

2: roundcube/program/lib/Roundcube/rcube_imap_generic.php第 90ff 行,在function authenticate()

3:PLAIN/LOGIN 通常在未加密的连接上被禁用

4:有可能使用 Roundcube 的代码重写,因为它们都是用 PHP 编写的 – 但是 PostfixAdmin

答案1

由于没有得到答案,我亲自试验了一下,最终进行了切换——一切顺利。正如最初所述,这样做的好处是,如果CRAM-MD5加密传输不可用(是的,这种情况确实会发生),至少可以在未加密传输上进行身份验证——此外,对于那些已经在旧服务器中使用 CRAM-MD5 的人来说,从旧服务器迁移的过程也更加顺利。除此之外,我没有看到任何副作用然而– 尽管这些可能需要一段时间才能出现:)


对于那些感兴趣的人,请按照以下步骤操作:

  • Dovecot:在你的(或你正在使用的相应文件中)将更改为default_pass_scheme,然后添加到MD5-CRYPTCRAM-MD5/etc/dovecot/dovecot-mysql.confcram-md5auth_mechanisms/etc/dovecot/dovecot.conf
  • Postfix:在我的例子中,Postfix 使用 Dovecot 通过 SASL 进行身份验证(smtpd_sasl_type=dovecot)——所以这里无需执行任何操作
  • Postfix管理员:
    • 首先登录 PostfixAdmin WebIF 并保持登录状态 – 否则在配置更改后您将无法这样做:)
    • 中的更改config.inc.php$CONF['encrypt'] = 'md5crypt';必须更改为$CONF['encrypt'] = 'dovecot:CRAM-MD5';。还请检查$CONF['dovecotpw'] = "/usr/sbin/doveadm pw";– 例如在 Debian Wheezy 上,doveadm驻留在/usr/bin,因此需要调整此设置
    • 现在转到 PostfixAdmin WebIf(您仍处于登录状态)并更新用户密码:导航到“虚拟列表”,滚动到“邮箱”,点击每个邮箱的“编辑”链接,然后存储“新密码”(这意味着您要么必须知道他们的密码 - 要么设置“某个”密码并让他们稍后更新。据我所知,没有办法“转换”现有密码)。
      通过“管理员列表”对管理员重复相同的操作 - 否则他们/您将无法再次登录
  • 重启邮件服务。基本上,重启 Dovecot 和 Postfix 就足够了。

完成。现在您可以验证一切是否仍在运行。就我而言,Roundcube 仍能够验证 PLAIN – 远程客户端现在能够使用 CRAM-MD5。对我来说,问题解决了。

答案2

无法评论(每 2 分钟发布一条帖子?!),但这必须说出来……

非常感谢您发布您所做操作的详细信息。这完全说得通,问题肯定是由 PostFixAdmin 软件更新引起的。

我检查了我的设置,发现 PFA 设置没有引用 dovecot 或 cram。我更改了它(保持登录到 WebUI),问题就解决了……解决了!

我所做的其他事情就是按照此处的文章启用密码和登录调试:https://doc.dovecot.org/admin_manual/debugging/debugging_authentication/

所以,是的,确实有一定比例的 RTFM(甚至是小说大小的手册!)参与其中,但你就是粘合剂!

再次,我非常感谢你。你真是我的救星!

+10 点赞

相关内容