テーマ別解説

DNSリソースレコードとSPF・DKIM・DMARC

riss
1
DNS Resource Record

DNSリソースレコード

DNSサーバに記録するDNSリソースレコードによって、DNSプロトコルを実現する。

Aレコード

ホスト名に対してIPv4アドレスを返す(名前解決)。ホスト名からIPアドレスを取得することを正引きという。ブラウザ(スタブリゾルバ)からURLをDNSサーバに送信すると、DNSサーバのAレコードがIPアドレスをブラウザに応答し、ブラウザはそのIPアドレスにアクセスする。

www.a-sha.co.jp. IN A x.y.z.10
「ホスト名www.a-sha.co.jpのIPアドレスは、x.y.z.10です。」

ホスト名の後には「.」を記載する(他のレコードも同じ)。

AAAAレコード

ホスト名に対してIPv6アドレスを返す。

www.a-sha.co.jp. IN AAAA a:b:c:d::e
「ホスト名www.a-sha.co.jpのIPアドレスは、a:b:c:d::eです。」

PTRレコード

IPアドレスに対してホスト名を返す。IPアドレスからホスト名を取得することを逆引きという。Webサイトの訪問者のアクセス元の調査やメールの送信元の確認などに利用される。Windowsは「nslookupコマンド」、Linuxは「digコマンド」でPTRレコードの値(ホスト名)を確認できる。

a.b.c.d. in-addr.arpa. IN PTR www.a-sha.co.jp.
「a.b.c.dのホスト名はa-sha.co.jpです。」

a:b:c:d::e ip6.arpa. IN PTR www.a-sha.co.jp.
「a:b:c:d::eのホスト名はa-sha.co.jpです。」

NSレコード

ドメインのゾーン情報を管理する権威DNAサーバのホスト名を返す。

a-sha.co.jp. IN NS dns1.a-sha.co.jp.
「ドメイン名a-sha.co.jpの権威DNSサーバのホスト名は、dns1.a-sha.co.jpです。」

MXレコード

ドメイン名に対するメールサーバのホスト名を返す。数値(以下の例の「20」)は複数メールサーバがある場合の優先度を表し、低い数値ほど優先度が高くなる。

a-sha.co.jp. IN MX 20 mail.a-sha.co.jp.
「ドメイン名a-sha.co.jpのメールサーバのホスト名は、mail.a-sha.co.jpです。優先度は20です。」

CNAMEレコード

ホスト名・ドメイン名に対する別のホスト名・ドメイン名を返す。1つのサーバで複数のサービスを提供している場合や複数のドメインをリダイレクトするCDN(Content Delivery Network)を利用する場合などに使用する。

www.a-sha.co.jp. IN CNAME server1.a-sha.co.jp.
「ホスト名www.a-sha.co.jpの別名は、server1.a-sha.co.jpです。」

CAAレコード

ドメインのデジタル証明書の発行を許可するCA(認証局)のドメイン名を返す。証明書の誤発行の防止や不正な証明書発行要求の検知に使用する。以下の例の「0」はflag、「issue」はtagというが、情報処理安全確保支援士試験のレベルを超える。認証局のドメイン名は""で囲む(valueという。)。

a-sha.co.jp. IN CAA 0 issue "CA.XXXXX.jp"
「ドメイン名a-sha.co.jpの認証局のドメイン名は、CA.XXXXX.jpです。」

TXTレコード

任意の文字列を返す。SPFDKIMDMARCで使用する。テキスト形式で表すため、""で文字列を囲む。

a-sha.co.jp. IN TXT "v=spf1 +ip4:x.y.z.10 -all"
「ドメイン名a-sha.co.jpには、"v=spf1 +ip4:x.y.z.10 -all"の情報があります。」

TXTレコードを悪用した攻撃

TXTレコードに不正なマルウェアをダウンロードするコードを埋め込み、DNS通信により取得したTXTレコードを実行される攻撃が出題される。

SOAレコード

ゾーン情報に関する情報などを返す。

@IN SOA dns.a-sha.co.jp
「プライマリDNSサーバはdns.a-sha.co.jpです。」

@IN SOA 3600;Refresh
「ゾーン転送の間隔は3,600秒です。」

2
SPF Record

SPFレコード

SPFのしくみ

SPF(Sender Policy Framework)は、IPアドレスを検証することによりメール送信元の真正性を検証するしくみである。

メールの受信

メールを受信し、SMTP通信においてMAIL FROMコマンドで通知された送信元ドメイン(エンベロープFROMに記載されたドメイン)を取得する。

SPFレコードの問合せ

送信元ドメインのSPFレコードをキャッシュDNSサーバに問い合わせる(再帰的問合せ)。キャッシュDNSサーバがSPFレコードをキャッシュしていない場合、権威DNSサーバに問い合わせる(反復問合せ)。

SPFレコードの応答

DNSサーバからSPFレコードが返される。

SPF検証

SMTP通信の接続元IPアドレスとSPFレコードに含まれるIPアドレスを照合する。検証に失敗した場合は、メールを受信拒否するか、受信した上でSPF検証の結果をメールヘッダに書き込む。

SPFレコード

SPFレコードは、TXTレコードで表す。

a-sha.co.jp. IN TXT "v=spf1 +ip4:x.y.z.10 +x.y.z.20 -all"
「ドメイン名a-sha.co.jpは、IPアドレスx.y.z.10とx.y.z.20の通信を許可し、それ以外を許可しない。」
「v=spf1」 SPFレコードであることを表す。
「+」 許可
「-」 許可しない

3
DKIM Recordl

DKIMレコード

DKIMのしくみ

DKIM(DomainKeys Identified Mail)は、デジタル署名を検証することによりメール送信元の真正性を検証するしくみである。

デジタル署名の付与

送信側のメールサーバが、送信メールに秘密鍵で署名を付与し、DKIM-Signatureヘッダのbパラメタに格納する。

メールの受信

受信したメールのDKIM-Signatureヘッダのdパラメタで指定された送信側のドメインを取得する。

DKIMレコードの問合せ

送信側ドメインのDKIMレコードをキャッシュDNSサーバに問い合わせる(再帰的問合せ)。キャッシュDNSサーバがDKIMレコードをキャッシュしていない場合、権威DNSサーバに問い合わせる(反復問合せ)。

DKIMレコードの応答

DNSサーバからDKIMレコードが返される。

DKIM検証

メールに付与された署名をDKIMレコードに含まれる公開鍵で検証する。検証に失敗した場合は、メールを受信拒否するか、受信した上でSPF検証の結果をメールヘッダに書き込む。

DKIMレコード

DKIMレコードは、TXTレコードで表す。

abcd._domainkey.a-sha.co.jp. IN TXT "v=DKIM1; k=rsa; p=KFKE3fRK…"
「ドメイン名a-sha.co.jpの署名アルゴリズムはRSA、公開鍵はKFKE3fRK…」
「abcd.」 公開鍵を識別するラベル(セレクタ)
「_domainkey.」 DKIMレコードの固定表記 
「v=DKIM1;」 DKIMレコードであることを表す。
「k=rsa」 署名アルゴリズムはRSAであることを表す。
「p=KFKE3fRK…」 公開鍵

4
DMARC Record

DMARCレコード

DMARCのしくみ

DMARC(Domain-based Message Authentication, Reporting & Conformance)は、SPFとDKIMの両方又はDMARCの検証に失敗した場合、DMARCレコードのポリシーに従ってメールを処理するしくみである。

メールの受信

受信したメールのヘッダFromの送信側ドメインを取得する。

DMARCレコードの問合せ

送信側ドメインのDMARCレコードをキャッシュDNSサーバに問い合わせる(再帰的問合せ)。キャッシュDNSサーバがDMARCレコードをキャッシュしていない場合、権威DNSサーバに問い合わせる(反復問合せ)。

DMARCレコードの応答

DNSサーバからDMARCレコードが返される。

送信ドメイン認証

SPF及びDKIM又はその両方による送信ドメイン認証を行う。

DMARC検証

メールのヘッダFromのドメインとエンベロープFromのドメインの照合と、ヘッダFromのドメインとDKIM-Signatureヘッダのドメインの照合を行う。

メール処理

送信ドメイン認証又はDMARC検証に失敗した場合、DMARCレコードのポリシーに従ってメールを処理する。

通知

送信ドメイン認証及びメール処理に関する集計レポートや失敗レポートを通知する。

DMARCレコード

DMARCレコードは、TXTレコードで表す。

_dmarc.a-sha.co.jp. IN TXT "v=DMARC1; p=reject; aspf=r; adkim=r.
rua=mailto: mailservice@a-sha.co.jp;
ruf=mailto: mailservice@a-sha.co.jp;"

「ドメイン名a-sha.co.jpのDMARCポリシーは拒否とし、集計レポートの通信先はmailservice@a-sha.co.jp、失敗レポートはmailto: mailservice@a-sha.co.jpとする。」
「_dmarc.」 DMARCレコードの固定表記
「v=DMARC1;」 DMARCレコードであることを表す。
「p=reject;」 DMARCポリシーは「拒否」であることを表す。
「aspf=r」 ヘッダFromとエンベロープFromの照合の方法を表す。
「adkim=r」 ヘッダFromとDKIM-Signatureヘッダの照合の方法を表す。
「rua=」 集計レポートの通知先を表す。
「ruf=」 失敗レポートの通知先を表す。

ポリシーの種類
  • none 何もしない。
  • quarantine メールを隔離する。
  • reject メールを拒否する。

記事URLをコピーしました