DMARCレポートを解析してみた

セキュリティ
スポンサーリンク

日々送られてくるDMARCレポートメール。とりあえずはDBに登録させることに成功しましたが、実際の解析をしなければなりません。そのためにはレポートの意味を正しく理解しなければなりません。

DMARCレポートをDBに登録する方法はこちら

スポンサーリンク

サンプル

<version>1.0</version>
<report_metadata>
略
</report_metadata>
<policy_published>
略
</policy_published>
<record>
<row>
  <source_ip>XXX.XXX.XXX.XXX(IPアドレス)</source_ip>
  <count>1</count>
  <policy_evaluated>
    <disposition>none</disposition>
    <dkim>pass</dkim>
    <spf>fail</spf>
  </plicy_evaluated>
</row>
<identifiers>
  <header_from>papamamameyou.com</header_from>
</identifiers>
<auth_results>
  <dkim>
    <domain>papamamameyou.com</domain>
    <result>pass</result>
    <selector>selector1</selector>
  </dkim>
  <spf>
    <domain>example.com</domain>
    <scope>mfrom</scope>
    <result>pass</result>
  </spf>
</auth_results>
</record>

DMARC判定情報

<row>タグはDMARC判定結果を表しています。以下<row>の下位タグの詳細です。

source_ip該当するドメインを利用してメールを送ったサーバーのIPアドレス。(ホスト名がわかるとさらに管理しやすくなりますね)
count送信したメールの回数。
dispositionDMARC認証の結果、受信サーバーが処理した内容。
dkimDKIMアライメント判定結果
spfSPFアライメント判定結果

<identifiers>タグについてはこちらです。(サンプルはheader_fromのみ記載)

header_fromヘッダーFROMドメイン。メールソフトで表示されるメールアドレスのドメイン。
envelope_toエンベロープTOドメイン。実際に送信される時に使用される宛先メールアドレスのドメイン。
envelope_fromエンベロープFROMドメイン。実際に送信した差出人のメールアドレスのドメイン。
詳細な点は情報処理安全確保支援士対策で勉強したよね!

<auth_results>タグ内ではSPF認証とDKIM認証の結果が表示されます。

<dkim>DKIM認証
domain署名ドメイン。メールヘッダーDKIM-Signatureにあるd=のドメイン
resultDKIM認証の判定結果
selectorセレクタ名(DNSのDKIMレコードで設定した値)
<spf>SPF認証
domainエンベロープFROMドメイン。メールヘッダーReturn-Pathのドメイン
(scopeの指定によって参照する値は変わる)
scopeパラメータ値はmfromかhelo
mfrom:送信されたメールの”Mail From”アドレス(Return-Pathまたはenvelope-from)がSPF認証の対象となる。(デフォルトはこちら)
helo:送信元メールサーバーのHELO/EHLOコマンドで指定されたドメインがSPF認証の対象となる。
resultSPF認証の判定結果

DMARC判定をpassするには?

DMARC判定は以下の流れで行われます。

  1. SPF認証とDKIM認証のどちらかの認証をパスしたか?Yesなら2へ。
  2. 上記認証をパスしたほうのアライメントはパスしたか?Yesなら認証成功。NoならDMARC判定fail。

第一段階でSPFとDKIMの認証がどちらか成功しているか確認します。第二段階でさらにアライメントを行いこれもパスしたらDMARC認証成功です。

アライメントとは?

SPF認証やDKIM認証だけはなくDMARCも独自で判定基準を持っています。これによりSFPやDKIMでは判定できない部分をカバーしています。

SPFアライメント

SPF認証が成功した場合、エンベロープFROMドメインとヘッダーFROMドメインの一致を確認します。一致が確認出来たらDMARC認証成功です。

エンベロープFROMドメイン = ヘッダーFROMドメイン
DMARCレポート
エンベロープFROMドメイン = <auth_results><spf><domain>
ヘッダーFROMドメイン   = <identifiers><header_from>

サンプルでは一致しないため<policy_evaluated><spf>がfailになります。

注意!!
エンベロープFROMドメインヘッダーFROMドメインが一致していてもSPF認証<auth_results><spf><result>がfailの時があります。

なぜドメインが一致している(正しいドメインが記載されている)のにSPF認証はfailするのか?
エンベロープFROMドメイン<auth_results><spf><domain>は偽装できる。SPF認証はエンベロープFROMドメインのIPアドレスと送信サーバーのIPアドレスが一致しているか確認しています。ドメインが偽装されている場合、送信サーバーのIPアドレスとエンベロープFROMドメインのIPアドレスが一致しないことが判明しfailとなります。

DKIMアライメント

DKIM認証が成功した場合、署名ドメインとヘッダーFROMドメインの一致を確認します。署名ドメインとはメールヘッダーDKIM-Signatureにあるd=のドメインのことです。DMARCレポートにも記載があります。<auth_results><dkim><domain>タグの中にあるのがこのドメインのことです。一致が確認出来たらDMARC認証成功です。

署名ドメイン = ヘッダーFROMドメイン
DMARCレポート
署名ドメイン     = <auth_results><dkim><domain>
ヘッダーFROMドメイン = <identifiers><header_from>

サンプルでは一致しているので<policy_evaluated><dkim>がpassになります。

まとめ

つまりSPF、DKIMそれぞれが認証するために利用したドメインをヘッダーFROMドメイン一致するか検証するのがDMARC認証です。

結局どこを見ればいいの?

DMARC判定は<policy_evaluated>の<spf><dkim>を確認する。どちらかがpassしているならDMARC判定成功。SFP・DKIMアライメント両方ともfailの場合<policy_evaluated><disposition>の値が実行されたことになります。

サンプルは<dkim>がpassしているのでDMARC判定は成功しています。メールはなりすましではないと判断されました。

まとめ

(SPF認証 or DKIM認証) and DMARC認証 = なりすましではない。OK!

まだ頭の中がまとまっていないようです。間違ってたらすみません。

コメント

タイトルとURLをコピーしました