Dmarc

具有多個 MX 的 OpenDMARC:正確設置伺服器之間的信任

  • March 7, 2019

有許多關於如何在您最喜歡的 Linux 風格上設置 OpenDMARC 的教程,但它們都側重於單伺服器配置。我的目標是保留備用輔助 MX 伺服器,但強制RejectFailures true要求 DMARCp=reject真正得到滿足。

這導致了一個問題:範例配置具有TrustedAuthservIDs HOSTNAME上行 SPF 和 DKIM 源。如果這用於列出輔助 MX 伺服器,它將允許在具有單個偽造標頭的主 MX 上完全繞過 OpenDMARC 檢查。

Authentication-Results: <HOSTNAME>;
       dkim=pass (1024-bit key; unprotected) header.d=example.com header.i=@example.com;

如何在沒有此缺陷的情況下配置主 MX 和輔助 MX 之間的信任?

這是對 Server Fault 範圍內關於 Security Stack Exchange的另一個問題的重寫。

簡而言之:

  • OpenDMARC 可以而且應該獨立檢查 SPF。
  • OpenDKIM 必須驗證簽名,即使它已經“驗證”。(在單個 MX 上也是如此!)
  • MX 伺服器之間的信任不應依賴於標頭,而應依賴於 SMTP 連接。

如何配置這個?

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

(此後,Postfix 將 OpenDKIM 和 OpenDMARC 配置為 SMTP milters。) 2. 所有 MX 伺服器的OpenDMARC/etc/opendmarc.conf配置更改:

  • 使用 OpenDMARC milter 進行連接階段拒絕(預設為false):
RejectFailures true
不要相信來自 pypolicyd-spf 或替代方案的外部 SPF 檢查。執行自己的檢查:
FIgnoreResults true
FSelfValidate 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`only。
> 
> 
> 

IgnoreHosts /etc/opendmarc-ignorehosts.conf


...並在該新配置文件中列出輔助 MX 伺服器的 IP 地址。

引用自:https://serverfault.com/questions/957154