DMARC - SPF/DKIMを統合するメール認証の最終防衛線
これは何?
DMARC(Domain-based Message Authentication, Reporting and Conformance)は、SPFとDKIMの検証結果を統合し、認証失敗時のポリシー(拒否・隔離・通過)を指定するメール認証技術です。さらに、認証結果のレポートを受け取ることで、なりすましメールの実態を把握できます。
DMARCレコードは、DNSのTXTレコードに以下の形式で設定します:
_dmarc.example.com. IN TXT "v=DMARC1; p=reject; rua=mailto:[email protected]; ruf=mailto:[email protected]; pct=100"
この設定は「SPFまたはDKIMの認証に失敗したメールは拒否せよ。集約レポート(rua)と詳細レポート(ruf)を指定されたメールアドレスに送れ」という意味です。
なぜ重要なのか
SPFとDKIMだけでは不十分な理由があります:
- ポリシーが明示されない: SPFやDKIMが失敗しても、受信側がどう扱うかは受信側次第
- 可視性の欠如: 自分のドメインがなりすまされているかどうか分からない
- 緩い運用: SPF/DKIM単体では、認証失敗でも受信されることが多い
DMARCを導入すると、以下のメリットがあります:
- 明確なポリシー: 認証失敗時の処理(拒否・隔離・通過)を送信側が指定
- レポート機能: 誰があなたのドメインからメールを送信しているか把握できる
- 段階的導入:
none→quarantine→rejectと徐々に厳格化できる - ブランド保護: なりすましメールがユーザーに届く前にブロック
2024年以降、Gmail、Yahoo!などは、一定量以上のメールを送信するドメインにDMARC設定を義務化しています。設定しないと、正規のメールも届きにくくなります。
攻撃の仕組み
DMARCがない、または緩い設定(p=none)の場合、以下のような攻撃が容易になります:
フィッシングメールの送信
-
攻撃者: あなたのドメインを騙るメールを作成
From: [email protected] Subject: パスワードリセットのお願い 本文: 以下のリンクからパスワードをリセットしてください... -
SPF/DKIM失敗: 攻撃者のサーバーから送信するため、SPFとDKIMの検証は失敗
-
DMARCなしの場合: 受信側は認証失敗を検出するが、明確なポリシーがないため、メールを受け入れるか判断が曖昧
-
DMARC
p=rejectの場合: 受信側は明確に拒否し、メールは配送されない
ビジネスメール詐欺(BEC)
経営陣を装った送金指示メールも、DMARCがあれば大幅に防げます:
From: [email protected]
To: [email protected]
Subject: 緊急送金依頼
財務部長へ
至急、以下の口座に500万円を送金してください。
詳細は後ほど説明します。
CEO
このメールがSPF/DKIM認証に失敗すれば、DMARC p=rejectにより拒否されます。
実際の被害事例
米国税務当局(IRS)を装ったフィッシング(2018年)
IRSを騙る大規模なフィッシングキャンペーンが発生し、数千人が個人情報を盗まれました。当時IRSはDMARCを設定していましたが、p=none(監視のみ)のため、なりすましメールがブロックされませんでした。その後、p=rejectに変更し、被害が大幅に減少しました。
PayPalのなりすまし対策
PayPalは早期からDMARC p=rejectを導入し、なりすましメールを徹底的にブロックしています。同社の報告によれば、DMARC導入後、フィッシングメールの報告が約半分に減少しました。
日本企業のBEC被害
2021年、国内の製造業が経営陣を装ったメールにより約1億円の被害を受けました。メールはSPF/DKIM認証に失敗していましたが、DMARCが未設定のため受信者に届いてしまいました。DMARC p=rejectがあれば、このメールは配送されませんでした。
Nyambushでの検出内容
Nyambushは、以下の項目をチェックします:
- DMARCレコードの存在:
_dmarc.example.comにTXTレコードがあるか - ポリシーの厳格性:
p=reject(推奨): 認証失敗メールは拒否p=quarantine(許容): 迷惑メールフォルダに隔離p=none(監視のみ): レポートのみで何もしない
- レポート設定:
rua(集約レポート)とruf(詳細レポート)のメールアドレス - サブドメインポリシー:
sp=でサブドメインの扱いを指定 - アライメント設定:
aspf(SPF)とadkim(DKIM)のアライメントモード
スキャン結果では、ポリシーが緩い場合、段階的な厳格化プランを提案します。
対策方法
1. 現状の把握
まず、SPFとDKIMが正しく設定されているか確認します。DMARCはこれらの上に成り立つため、SPF/DKIMが不完全だとDMARCも機能しません。
# SPFを確認
dig example.com TXT | grep spf
# DKIMを確認(セレクタ名は環境により異なる)
dig default._domainkey.example.com TXT
2. 段階的導入: Phase 1 - 監視モード
いきなりp=rejectにすると、正規のメールも拒否される可能性があります。まずはp=noneで監視し、レポートを分析します:
_dmarc.example.com. IN TXT "v=DMARC1; p=none; rua=mailto:[email protected]; pct=100"
パラメータの説明:
v=DMARC1: DMARCバージョン1p=none: 認証失敗でも何もしない(レポートのみ)rua=mailto:...: 集約レポートの送信先(日次・週次で届く)pct=100: ポリシーを適用するメールの割合(100%)
3. レポートの分析
数週間後、ruaに指定したメールアドレスに集約レポートが届きます。XMLフォーマットですが、以下のような情報が含まれます:
- 送信元IP
- SPF/DKIMの認証結果
- メールの件数
- 認証失敗の理由
レポートを分析し、以下を確認します:
- 正規の送信元が認証に失敗していないか: 失敗している場合、SPF/DKIMを修正
- 不正な送信元: 知らないIPからあなたのドメインでメールが送信されていないか
レポート解析ツール(dmarcian.com、postmark.comなど)を使うと、XMLを可視化できます。
4. 段階的導入: Phase 2 - 隔離モード
レポートを分析し、正規のメールがすべて認証に成功することを確認したら、p=quarantineに変更します:
_dmarc.example.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]; pct=100"
これにより、認証失敗メールは迷惑メールフォルダに隔離されます。数週間様子を見て、問題がなければ次のステップへ。
5. 段階的導入: Phase 3 - 拒否モード
最終的にp=rejectにし、なりすましメールを完全にブロックします:
_dmarc.example.com. IN TXT "v=DMARC1; p=reject; rua=mailto:[email protected]; ruf=mailto:[email protected]; pct=100; adkim=r; aspf=r"
追加パラメータ:
ruf=mailto:...: 詳細レポート(個別の認証失敗ごとに送信)adkim=r: DKIM Relaxedアライメント(サブドメイン許容)aspf=r: SPF Relaxedアライメント
6. サブドメインの保護
サブドメインもなりすまされる可能性があるため、sp=で保護します:
v=DMARC1; p=reject; sp=reject; rua=mailto:[email protected]
これにより、subdomain.example.comからのメールもDMARC検証されます。
7. 継続的な監視
DMARCレポートは継続的に届くため、定期的に確認します:
- 新しい送信元が追加されていないか
- 不正ななりすまし試行がないか
- SPF/DKIMの設定変更が必要ないか
Nyambushの有料プランでは、DMARCレポートの解析と可視化も提供予定です。
まとめ
DMARCは、SPFとDKIMを統合し、メール認証の最終防衛線を構築します。p=rejectに設定すれば、あなたのドメインを騙るなりすましメールはほぼ完全にブロックできます。
導入は段階的に行い、none→quarantine→rejectと徐々に厳格化することで、正規のメールへの影響を最小限に抑えられます。レポート機能を活用すれば、誰があなたのドメインからメールを送信しているか、可視化できます。
GmailやYahoo!がDMARCを義務化した今、設定は「やるべきこと」ではなく「やらなければならないこと」になっています。Nyambushの無料スキャンで、今すぐあなたのドメインのDMARC設定を確認してみてください。