ドメイン管理者が **まず最初に** 実施するなりすましメール対策（DMARC、SPF、DKIM）

本記事は [Security Advent Calendar](https://qiita.com/advent-calendar/2017/security) 2017の9日目の記事です。

# 背景・概要
メールはかつてインターネットのコミュニケーションの主流でしたが、現在はフィッシングメールや標的型攻撃、BEC(Business E-mail Compromise)に利用されてしまっています。
ここでは、なりすましメールの手法を簡単に説明したあとで、メールやWebサイトを運営する管理者が実施しておきたい、なりすましメール対策を簡単にご紹介します。

# メールのなりすまし手法
## 送信者アドレスのなりすまし（ドメインなりすまし）
メールを表示する際に「送信者」「差出人」と表示されるメールアドレスをなりすます手法です。メールのプロトコル SMTP では**容易になりすますことが可能**です。
![Gmail-5322From1.png](https://qiita-image-store.s3.amazonaws.com/0/13675/5fe72864-051b-d83b-ddfa-02cb4ef92bcb.png)

## 送信者名のなりすまし（display-name なりすまし）
メールを表示する際にアルファベットのメールアドレスではなく日本語や英語で表示される名前の部分をなりすます手法です。こちらもメールのプロトコル SMTP では**容易になりすますことが可能**です。
![Gmail-displayname1.png](https://qiita-image-store.s3.amazonaws.com/0/13675/2719237a-5c62-428d-7247-7732d79ed141.png)

メールアドレスのローカルパート（@マークよりも前の文字列）に 0x00 や 0x0a を含めてメールソフト（MUA, Mail User Agent）を偽装する手法 Mailsploit も原理としてはこの送信者名のなりすましに分類されます。
https://internet.watch.impress.co.jp/docs/news/1095692.html

## 本物に似せたドメイン（ホモグラフドメイン）
例えば、有名なドメインとは異なるが類似しているドメイン（ホモグラフドメイン、カズンドメイン）を取得して、その偽ドメインからメールを送信する手法です。
![Gmail-homograph1.png](https://qiita-image-store.s3.amazonaws.com/0/13675/909b330f-df9b-35d1-504f-322f88859b9e.png)

## 送信メールサーバの不正利用（踏み台送信）
メールを送信するためのサーバ（MSA, Mail Submission Agent）を**不正に利用・乗っ取る**ことで送信元が信頼された正しい出どころに見せる手法です。
![Gmail-Header1.png](https://qiita-image-store.s3.amazonaws.com/0/13675/fc8315b4-985b-24de-32a9-54265b1401e9.png)


## 送信メールの件名や本文の巧妙化
件名に「重要なお知らせ」「セキュリティのお知らせ」といった注意を促す内容を記載したり、本文内容が本物とそっくりな文章にするなど、**巧妙化されたなりすまし**が多くなっています。

# 3つの送信ドメイン認証技術
## DMARC
ドメイン管理者が、**送信者ドメインのなりすましメール**をどのように取り扱って欲しいかを指定する仕組みを DMARC と呼びます。ここで紹介する３つの技術の中で**一番簡単に設定することができます**。この記事のメインはこの DMARC を設定することです。
![technology_compliance_1.png](https://qiita-image-store.s3.amazonaws.com/0/13675/0ac9fc02-f436-9f21-d151-029d220c4c2a.png)


## SPF
ドメイン管理者が、送信メールサーバがどの IP アドレスであるかを指定する仕組みを SPF と呼びます。
![dmarc_history_2.png](https://qiita-image-store.s3.amazonaws.com/0/13675/0e36fef6-4e7a-83ca-5bcb-f58f6fda8bf3.png)

https://www.naritai.jp/dmarc_history1.html

## DKIM
ドメイン管理者が、メールに電子署名を付加することで、作成者や内容が本人であることを明らかにする仕組みを DKIM と呼びます。
![dmarc_history_5.png](https://qiita-image-store.s3.amazonaws.com/0/13675/e496d89f-d148-cd9d-35c4-43e06c39e128.png)

https://www.naritai.jp/dmarc_history2.html

# DMARC の活用
## 送信メールサーバの把握
DMARC ではドメイン管理者が DNS TXT RR に「**受信ポリシー**」「**集約レポートの受取先**」「**失敗レポートの受取先**」などを設定できます。
ドメイン管理者は、まずは以下のような設定をするとよいでしょう。

```_dmarc.example.jp
TXT "v=DMARC1; p=none; rua=mailto:report-rua@example.jp; ruf=mailto:report-ruf@example.jp;"
```
|パラメータ        |値               |説明                           |
|---------------|-----------------|------------------------------|
|v|DMARC1|必須。|
|p|none または quarantine または reject|必須。|
|rua|mailto:メールアドレス|集約レポートを受け取りたい場合に設定する。|
|ruf|mailto:メールアドレス|失敗レポートを受け取りたい場合に設定する。|
パラメータは他にもありますが、**まず最初に**これらを設定することが大切です。
https://www.naritai.jp/guidance_record.html

# メールドメインの対策
p=none でモニタリングを開始しましょう。
SPF や DKIM が未設定だとしても、**モニタリング**は開始しましょう。攻撃者はあなたのドメインを狙っているかもしれません。

ドメイン名: example.jp の場合

```_dmarc.example.jp
TXT "v=DMARC1; p=none; rua=mailto:report-rua@example.jp; ruf=mailto:report-ruf@example.jp;"
```
![technology_compliance_7.png](https://qiita-image-store.s3.amazonaws.com/0/13675/d2bf0491-99cb-6ef6-e5fc-7c32b0794d16.png)


# www ドメインやパークドメインの対策
www.example.com のように Web サーバだけで利用するドメインや、取得だけしたパークドメイン（parked domain）もなりすましの注意が必要です。
p=reject で差出人としてこのドメインをなりすませないようにしましょう。そして、このドメインをあらかじめ**メールで利用していない**ことを宣言しましょう。攻撃者はあなたのドメインを狙っているかもしれません。

ドメイン名: www.example.com の場合

```_dmarc.www.example.com
TXT "v=DMARC1; p=reject; rua=mailto:report-rua@example.com; ruf=mailto:report-ruf@example.com;"
```

```www.example.com
TXT "v=spf1 -all"
```

```*._domainkey.www.example.com
TXT "v=DKIM1; p="
```

```www.example.com
MX 0 .
```

# あなたのドメインの健康診断
check@naritai.jp にあなたの送信メールサーバからメールを送信するだけで送信ドメイン認証がきちんと設定されているか判定してくれます。

	件　名: Sender Authentication Check by naritai.jp
	差出人: check@naritai.jp
	本　文:
	こんにちは あなたのメールアドレス さん

	[総評]
	設定は正しく設定されています。
	
	個別の送信ドメイン認証結果は以下の通りです。
	
	[SPF]
	接続元IPアドレス : 送信元IPアドレス
	認証結果は PASS でした。
	
	[DKIM]
	認証結果は pass でした。
	署名ドメインは example.jp でした。
	
	[DMARC]
	認証結果は pass でした。
	認証ドメインは example.jp でした。
	ポリシーは none でした。
	
	以上です。

https://www.naritai.jp/notice_check_dmarc.html

# DMARC の注意点
* DMARC はスパム対策というよりもなりすましメール対策
DMARC はメールの内容に基づいた判定をしません。あくまで**正規の差出人から正規の経路で届いたメールかどうかを判定**し、そうでないメールを取り除くにすぎません。

* DMARC は全てのなりすまし手法に有効ではない
前半であげた様々ななりすまし手法のうち、「**送信者アドレスのなりすまし**」には有効ですが、それ以外のなりすましには DMARC 単独では不十分です。

* DMARC 以外の対策も実施しなければならない
従って、DMARC 以外の従来の対策だけでなく、今後登場する対策も合わせて実施して行く必要があります。


# 参考になるサイト・サービス
## 情報サイト
迷惑メール対策推進協議会
https://www.dekyo.or.jp/soudan/contents/anti_spam/report.html
一般財団法人インターネット協会
http://salt.iajapan.org/wpmu/anti_spam/
迷惑メール対策カンファレンス
https://www.iajapan.org/anti_spam/event/2017/conf_16-17th/
なりすまし対策ポータル「ナリタイ」
https://www.naritai.jp/
M3AAWG Protecting Parked Domains Best Common Practices
https://www.m3aawg.org/sites/default/files/m3aawg_parked_domains_bp-2015-12.pdf

## DMARC 活用サービス
DMARC/25
https://www.dmarc25.jp/