『なりすまし』を防ぐDMARCとは?

『なりすまし』を防ぐDMARCとは?

この記事は DMARC: Domain-based Message Authentication, Reporting & Conformance の抄訳です。

DMARCとは?

特定の会社やブランドの名前を騙った、不審なメールを受け取ったことがある方も多いのではないでしょうか?こうしたフィッシングメールでは、メール受信者の個人情報を盗むためにドメインスプーフィング(なりすまし)をする場合が多いようです。現在のメールインフラの規格は完全ではなく、時に悪用されることがあります。それでは、どうやって自身のドメインやブランドをこうした ”なりすまし” から守れば良いのでしょうか?

DMARC(Domain-based Message Authentication, Reporting & Conformance)に参加するという方法があります。DMARCは、「SPFDKIMのどちらの認証にも失敗した場合に、受信サーバはどうすべきか」を示したものです。これはつまり、「なりすましメールを受け取った時に、受信サーバはどうすべきか」ということです。

SendGridでDMARCを使うには?

メールシステムにDMARCを適用することは、なりすましなど名前の悪用を防ぐのに非常に有効です。ただし、小さいドメインであればDMARCなしでもまず問題ありませんし、全ての人にとって必要という訳ではありません。ただし、過去にフィッシング詐欺に悪用されたことがある場合や、金融系のビジネスをしている場合はDMARCに参加した方がいいかもしれません。

業界で支持されているという安心を得たいのであれば、Silver以上のプランで利用可能な固定IPアドレスを使って、DMARCに参加することをオススメします。DMARCのレポートは機械読み取り可能なように設計されており、人間がその意味を理解するのはなかなか難しいものです。レポートを収集し、実用的な洞察につながる有意義な情報を提示してくれるDMARCレポートのモニタリングサービス(Return Path の Email Brand MonitorAgari など)も利用するといいでしょう。

DMARCを使うには、5つの段階があります。

1. SendGridの独自ドメイン利用(Whitelabeling)で、DKIMとSPFを有効化
まずは独自ドメイン利用の設定を済ませてください。これにより、SendGrid経由で送信されるメールは、お客様の独自ドメイン用のDKIMおよびSPFで適切に署名されるようになります。

2. 適切に独自ドメインで署名されていることを確認
確認手順がよく分からない場合、テストメールを送ってみてください。メールヘッダを見ると、ご自身のドメインでホワイトラベル化されたDKIMおよびSPFの署名が確認できると思います。両方とも ”pass” していればOKです。
メールヘッダの署名を確認

3. DMARCレコードをDNSに追加し、挙動を確認
ご自身のドメインホストのDNSレジストラ(お名前.com など)で、DMARCの設定を記述したTXTレコードを追加します(※追加手順は独自ドメイン利用の設定でDNSレコードを追加したときと同様です)。その際、サブドメインではなく親ドメインに追加してください。このレコードは、受信メールサーバが送信元のDMARCの設定を確認するために参照されます。
DMARCレコードの追加

DMARCレコードの例

"v=DMARC1; p=quarantine; pct=100; rua=mailto:dmarc.rua@whitelabeldomain.com"
  • v=DMARC1;
    プロトコルのバージョン。
    現在のところ version 1 しかないので、ここは常に 1 になります。

  • p=quarantine;
    DMARCレコードのポリシー(詳細は後述)。
    quarantine(隔離)は、未認証メール(=DMARCのチェックを通過しないメール)は隔離しなさい、という受信メールサーバへの指示です。これは一般的に「迷惑メールとして振り分ける」ことを意味しています。

  • pct=100;
    DMARCを適用する割合。
    100の場合、そのドメインから来たとされる全てのメールを評価します。ここには1〜100の任意の数値を指定できます。

  • rua=mailto:dmarc.rua@whitelabeldomain.com
    集計レポートの報告先URI。
    この例では、集計レポートを dmarc.rua@whitelabeldomain.com に送信します。ご自身の管理下にあり、厳重に監視されたメールアドレスを設定してください。

* この例では p=quarantine ポリシーを適用していますが、最初は p=none から始めます。

DMARCレコードのポリシーについて

ここは重要なポイントです。DMARCレコードのポリシーとは、「DMARCレコード設定済のドメインから来たとされるメールがSPFやDKIM認証を通過出来なかった場合に、DMARCに参加している受信メールサーバはどうすべきか」について指示するものです。指定できるのは、p=none, p=quarantine, p=reject の3つです。

  • p=none
    未認証メールを受け取ったときに受信サーバで取るべきアクションについて、特に規定しないというポリシーです。受信したメールは、受信メールサーバが自身で処理します。
    発生した全てのエラーレポートはDMARCレコードの mailto: に送信されます。

  • p=quarantine
    未認証メールは、受信サーバで隔離します。
    一般的には迷惑メールフォルダに振り分けられ、復帰させることもできる状態です。これは、「メールがどこから来るかは全て分かっているが、100%確信するまでは未認証メールを SoftFail にしたい」といった場合に有効です。

  • p=reject
    未認証メールは完全に拒否し、受信しません。
    この場合、正規のドメインで署名されていると100%証明されたメールのみが受信ボックスに入ります。未認証メールは全て飲み込まれ、バウンスも発生しないため、誤判定をキャッチすることはできません。
    メールを送信するサーバやサービスが全て分かっており、各サービスで署名していて、未認証メールを全て完全に拒否したい場合に有効です。

4. 受け取ったフィードバックの分析と調整
DMARCに参加している受信メールサーバに未認証メールが来た場合、受信メールサーバはレポートを作成し、DMARCレコードで指定されている mailto: アドレスに送り戻されます。これらのレポートは、どのサービスがなりすましメールを送信しているかを見つけ出すのに役立ちます。

以下はレポートのサンプルです。

<!--?xml version="1.0" encoding="UTF-8" ?-->
<feedback>
    <report_metadata>
        <org_name>receiver.com</org_name>
        <email>noreply-dmarc-support@receiver.com</email>
        <extra_contact_info>http://receiver.com/dmarc/support</extra_contact_info>
        <report_id>9391651994964116463</report_id>
        <date_range>
            <begin>1335571200</begin>
            <end>1335657599</end>
        </date_range>
    </report_metadata>
    <policy_published>
        <domain>sender.com</domain>
        <adkim>r</adkim>
        <aspf>r</aspf>
        <p>none</p>
        <sp>none</sp>
        <pct>100</pct>
    </policy_published>
    <record>
        <row>
            <source_ip>72.150.241.94</source_ip>
            <count>2</count>
            <policy_evaluated>
                <disposition>none</disposition>
                <dkim>fail</dkim>
                <spf>pass</spf>
            </policy_evaluated>
        </row>
        <identifiers>
            <header_from>sender.com</header_from>
        </identifiers>
        <auth_results>
            <spf>
                <domain>sender.com</domain>
                <result>fail</result>
            </spf>
        </auth_results>
    </record>
</feedback>

* 集計レポートはzip形式の添付ファイルで送られてきます。そのため、指定したアドレスがこのタイプの添付ファイルを受信可能な状態であることを確認してください。
* ファイル名のフォーマットは以下の通りです。
ファイル名 = 受信者 “!” ポリシードメイン “!” 開始タイムスタンプ “!” 終了タイムスタンプ “.” 拡張子
(例: receiver.org!sender.com!1335571200!1335657599.zip)

5. DMARCポリシーの段階的な引き上げ(none → quarantine → reject)
テストとメールストリームの調整が終わったら、ポリシーを引き上げます。
これまで p=none でレポートを受け取ってきて、メールがどこから来るかは大体把握できたと思います。次は、受信メールサーバがなりすましメールを受け取ったときの挙動をコントロールするために、DMARCレコードのポリシーを調整します。

各ポリシーの違いについては、上記「DMARCレコードのポリシーについて」をご参照ください。

参考リンク(英語)

dmarc.org
Overview
Frequently Asked Questions
Specification
SendGrid
What is DMARC and Why Should You Care?
SPF project
SPF Record Syntax
Return Path
The DMARC Record: Your first step in outbound phishing protection.
Agari
About DMARC
Kitterman Technical Services
SPF record validator
DMARC record validator

参考リンク(日本語)

送信ドメイン認証のための5ステップ
Google
DMARCについて
ヤフー株式会社
DMARC Technology Overview[PDF]
有害情報対策委員会
SPF
DKIM