具有多个 MX 的 OpenDMARC:正确设置服务器之间的信任

具有多个 MX 的 OpenDMARC:正确设置服务器之间的信任

有许多教程介绍如何在您最喜欢的 Linux 版本上设置 OpenDMARC,但它们都侧重于单服务器配置。我的目标是保留备份辅助 MX 服务器,但强制执行RejectFailures trueDMARCp=reject才能真正满足要求。

这导致了一个问题:示例配置TrustedAuthservIDs HOSTNAME包含上游 SPF 和 DKIM 源。如果将其用于列出辅助 MX 服务器,则可以使用单个伪造的标头完全绕过主 MX 上的 OpenDMARC 检查。

Authentication-Results: <HOSTNAME>;
        dkim=pass (1024-bit key; unprotected) header.d=example.com [email protected];

如何在不出现此缺陷的情况下配置主 MX 和辅助 MX 之间的信任?

这是另一个的重写问题在 Security Stack Exchange 上了解服务器故障的范围。

答案1

简而言之:

  • OpenDMARC 可以而且应该独立检查 SPF。
  • OpenDKIM 必须验证签名,即使它已经“验证”过。(在单个 MX 上也是如此!)
  • MX 服务器之间的信任不应该依赖于标头,而应该依赖于 SMTP 连接。

如何配置?

  1. 您可以按照教程进行 (SPF、) OpenDKIM 和 OpenDMARC 的初始配置。

    (此后,Postfix 已将 OpenDKIM 和 OpenDMARC 配置为 SMTP 过滤器。)

  2. 开放DMARC所有 MX 服务器的配置更改/etc/opendmarc.conf

    • 使用 OpenDMARC milter 进行连接阶段拒绝(默认为false):

      RejectFailures true
      
    • 不要信任来自 pypolicyd-spf 或其他替代产品的外部 SPF 检查。执行自己的检查:

      SPFIgnoreResults true
      SPFSelfValidate true
      
  3. OpenDKIM即使标题已经存在,也必须进行配置才能添加标题。/etc/opendkim.conf

    AlwaysAddARHeader yes
    
  4. 一旦每个 MX 都配置了 #1-#3,主 MX 上的 OpenDMARC可以信任其他 MX 服务器所做的检查;伪造的邮件应该已经被辅助 MX 拒绝。不要将它们列在 上TrustedAuthservIDs,因为它容易受到报头伪造的攻击。还有另一种 opendmarc.conf更适合这种情况的选项:

    IgnoreHosts (细绳)

    指定包含主机名、IP 地址和/或 CIDR 表达式列表的文件路径,这些列表标识了过滤器将忽略其 SMTP 连接的主机。如果未指定,则默认为127.0.0.1仅。

    IgnoreHosts /etc/opendmarc-ignorehosts.conf
    

    ...并在新配置文件中列出辅助 MX 服务器的 IP 地址。

相关内容