この記事の目的とゴール
「DMARCってあれでしょ?なりすましを防ぐやつでしょ?」くらいの理解度のITエンジニアが、DMARCの機能となりすまし防止の仕組みを説明できるようになることです。ただし、DNSレコードの細かい書き方など詳細には踏み込みません。SPFやDKIMなど周辺知識についても解説しますので、ぜひ最後までご覧ください。
前提知識
SPF
まずはざっと以下を読んでください。重要な点は後ほどまとめます。
要するに、送信元メールサーバをDNSで検証します。
検証の流れ
あらかじめ、送信元ドメイン管理者が、正当な送信元メールサーバのIPアドレスをDNSに登録しておきます。
メール受信時の流れは次の通りです。
- 以下が一致するかどうかを確認
- Return-Path のドメイン名を使って引いてきた上記IPアドレス
- 送信元メールサーバのIPアドレス
- 一致していたら正当なメールと判断
限界
- ヘッダFromはいくらでも偽装可能
- 転送メールやメーリングリストを使ったメールが認証に失敗してしまう
DKIM
まずはざっと以下を読んでください。SPFと同じく、重要な点は後ほどまとめます。
要するに、公開鍵暗号方式を使ってメール送信者の正当性とメール内容の完全性を検証します。
検証の流れ
あらかじめ、送信元ドメイン管理者が、公開鍵をDNSに登録しておきます。
メール送受信時の流れは次の通りです。
- 送信元メールサーバは秘密鍵を用いてメールに署名してメール送信
- DKIM署名にあるドメイン名を使って公開鍵を取得
- 公開鍵を使って署名を解読
- 解読して得たハッシュ値と受信側が計算したハッシュ値を比較
- 一致していたら、メール送信者が正当で、メール内容が改竄されていないと判断
限界
- ヘッダFromはいくらでも偽装可能
- 加工された転送メールやメーリングリストを使ったメールが認証に失敗してしまう
DMARC
まずはざっと以下を読んでください。SPFと同じく、重要な点は後ほどまとめます。
要するに、SPFとDKIMの弱点を補完しつつ以下3つの機能を提供する仕組みです。
- ヘッダFrom詐称検出
- ドメイン所有者による処理の明示的指示
- DMARCレポート受信
DMARCが提供する機能
ヘッダFrom詐称検出
SPF、DKIMそれぞれについてDMARC Alignmentをチェックします。SPFで検証するReturn-Path、DKIMで検証するDKIM-Signatureヘッダのドメイン、これらとヘッダFromが一致するかどうかを確認します。
以下ひとつ以上成り立つならDMARC適合したメールとみなされます。
- SPF検査OK かつ SPFのDMARC Alignment検査OK
- DKIM検査OK かつ DKIMのDMARC Alignment検査OK
そういえば、転送メールがSPF認証、DKIM認証で失敗してしまう問題がありましたね。これをカバーするためにARCという仕様があります。ARCとは、メールが複数のメールサーバを経由する際に、認証結果を伝播させることができる仕組みです。
詳細は以下を読んでください。
ドメイン所有者による処理の明示的指示
検査の結果をもってそれぞれのメールをどう処理するのか、ドメイン所有者が指定することができます。SPFやDKIMでは、受信側がメールをどう処理するのか決めます。具体的には以下のようなフローでメールが処理されます。
DMARCレポート受信
受信MTAから日次で送信されます。RUAレポート、RUFレポートというものがあります。
このレポートをいい感じに管理するSaaSがあるので、必要に応じて使うことになります。SaaSを使って、たとえば以下のような作業を実施することが可能です。
- 自社が送信しているメールでDMARC適合していないメールを洗い出す
- SPF、DKIMの設定がうまいこといっていなかったら設定修正などをする
- 自社の名前で他社が送信しているメールでDMARC適合していないメールを洗い出す
- DMARC適合していないと困る場合は、他社に対応をお願いするなり、送信元を自社の名前にしないよう打診したりする
この手のツールで自分が触ったことあるのはPowerDMARCというツールです。
まとめ
- SPFはReturn-Pathのドメインを使って検査する
- DKIMはDKIM-Signatureというヘッダにあるドメインなどを使って検査する
- DMARCはSPFやDKIMの弱点であるヘッダFROM偽装を検知できる
コメント