テクノロジ編 PR

【応用情報】DNSの仕組みとDNSキャッシュポイズニング、DNSSECについて解説

記事内に商品プロモーションを含む場合があります

この記事では応用情報で問われるDNSの全てについてIT初心者にも分かりやすく解説します。

IPアドレスとドメイン名

  • IPアドレスはスマホやPCに割り当てられる番号で、ネットワーク上の住所のようなもの。
  • ドメイン名はIPアドレスを人間用に分かりやすくした文字列。

DNS

  • DNSはIPアドレスとドメイン名を対応付けて管理し、お互いに変換するシステム。
  • IPアドレスとドメイン名をお互いに変換することを名前解決と呼び、特にドメイン名からIPアドレスに変換することを正引き、IPアドレスからドメイン名に変換することを逆引きと呼ぶ。

DNSサーバ

  • DNSサーバにはDNSキャッシュサーバDNS権威サーバがある。
  • クライアントPCがIPアドレスとドメイン名の対応を問い合わせるのはキャッシュサーバで、キャッシュサーバが問い合わせるのは権威サーバ。
  • 権威サーバはリソースレコードという形でIPアドレスとドメイン名の対応を管理している。
  • キャッシュサーバが権威サーバに問い合わせをするときは、IDと一緒に問い合わせる。IDをランダムにすることでDNSキャッシュポイズニング攻撃への対策になる。

DNSキャッシュポイズニング攻撃

  • DNSキャッシュポイズニング攻撃は、悪意ある攻撃者が権威サーバに成りすまして、キャッシュサーバにIPアドレスを応答し、それを受取ったクライアントPCが攻撃者のWebサイトに誘導されてしまう攻撃。

DNSSEC

  • DNSSECは、ディジタル署名を使って正規の権威サーバからの応答だと検証できる仕組み。

応用情報ではDNSの仕組み、DNSキャッシュポイズニング攻撃、DNSSECに関する問題が出題されます。是非最後までご覧ください。

IPアドレスとドメイン名

現実世界の住所のように、インターネットに接続している全てのコンピュータにはIPアドレスが割り当てられています。IPアドレスはコンピュータを識別するために使うものなので、重複はありません。

現実世界で郵便物を届ける時に住所を使うように、インターネットの世界でデータを届ける時はIPアドレスを使ってどのコンピュータに送ればいいのかを判断します

IPアドレスの形式には32ビットの2進数を使うIPv4と128ビットの2進数を使うIPv6があります。しかし、どちらの表記にしてもただの数字の羅列なので、人間には分かりにくいものになっています。

ここで出てくるのがドメイン名です。

ドメイン名

人間には分かりにくいIPアドレスに対して、分かりやすいように別の文字列に変換したものがドメイン名です。ドメイン名があるおかげで、人間が簡単にWebサイトを検索できるようになりますし、メールアドレスも間違えにくくなります。

DNSサーバ

DNS(Domain Name System)はコンピュータが使うIPアドレスと人間が使うドメイン名を対応付けて管理するシステムです。ドメイン名とIPアドレスをお互いに変換することを名前解決と呼び、特にドメイン名からIPアドレスに変換することを正引き、IPアドレスからドメイン名に変換することを逆引きと呼びます。

キャッシュサーバと権威サーバ

DNSサーバにはキャッシュサーバ権威サーバがあります。
キャッシュサーバと権威サーバの役割は次の通りです。

キャッシュサーバ
・クライアントPCから名前解決の問合せを受け付ける
・IPアドレスとドメイン名の対応を権威サーバに問い合わせる
・権威サーバから受取ったIPアドレスとドメイン名は一時的に保管する
・名前解決の問合せの内容を保管していたら、その内容をクライアントPCに返す

権威サーバ
・IPアドレスとドメイン名の対応を管理する
・キャッシュサーバにIPアドレスとドメイン名の対応を返す

キャッシュサーバと権威サーバの役割を図で見てみましょう。

  1. クライアントPCはキャッシュサーバに名前解決を依頼します。
  2. キャッシュサーバの中にIPアドレスに対するドメイン名が記録されていれば、
    クライアントPCに答えを返します。答えがなければ③に進みます。
  3. キャッシュサーバに記録が無ければ、権威サーバに名前解決を依頼します。
  4. 権威サーバはキャッシュサーバにドメイン名を返します。
    権威サーバはドメイン名とIPアドレスの対応をリソースレコードと呼ばれる形で管理しており、キャッシュサーバにもリソースレコードを返します。
  5. キャッシュサーバはIPアドレスとドメイン名の対応を記録しておきます。
  6. キャッシュサーバはクライアントPCにドメイン名を返します。

権威サーバに問い合わせをするときはIDを付ける

キャッシュサーバが権威サーバに問い合わせをするときは、IDを付けて問い合わせをします。こうすることで、複数問い合わせをしても、どれに対する答えなのかが分かるようになるんですね。

DNSキャッシュポイズニング攻撃

DNSキャッシュポイズニングは偽のドメイン情報をキャッシュサーバに記憶させて、悪意のあるURLに誘導する攻撃です。攻撃者は正しいIPアドレスに偽装して、偽のIPアドレスをキャッシュサーバに送ります。キャッシュサーバはこの偽のIPアドレスをクライアントPCに返してしまうので、ユーザは偽のサイトへ誘導されてしまいます。

DNSキャッシュサーバは問合せで指定したIDと受け取ったパケット内のIDが同じ場合、正しい権威サーバと勘違いしてしまいます。なので、攻撃者が指定したIDと同じIDで偽のIPアドレスをキャッシュサーバに送れば、それをクライアントPCに送ってしまうんです

IDを固定にしていると、攻撃者が一度でもIDを当てたら、ずっと騙し続けるなんてことが可能になってしまいます。なので、IDを毎回ランダムにするだけで、DNSキャッシュポイズニング攻撃を受ける確率を下げることができるようになります

DNSSEC

DNSキャッシュポイズニング攻撃の問題点は、正規の権威サーバじゃないコンピュータからの応答を信じてしまうことでした。これを解決するのがDNSSECです。
DNSSECではディジタル署名の技術を使って、DNSキャッシュポイズニング攻撃に対策します。

ディジタル署名

ディジタル署名は正規の送信者からのデータなのか、データが改ざんされていないかを確かめるために、公開鍵暗号方式を応用した暗号方式です。送信者は「送信者が作成した暗号化鍵」で暗号化を行い、受信者は「送信者が作成した復号鍵」で復号します

ディジタル署名では復号鍵が不特定多数に公開されています。受信者はデータを受け取ったら、公開されている復号鍵でデータの復号を行います。データの暗号に使う暗号化鍵は正規の送信者しか持っていないはずなので、正しくデータの復号が行えるということは正規の送信者から送られたデータであるということが分かります。

ディジタル署名についてもっと詳しく知りたい方はこちらの記事をご覧ください。

【応用情報】共通鍵暗号方式・公開鍵暗号方式・ディジタル署名を解説 この記事では共通鍵暗号方式と公開鍵暗号方式とディジタル署名についてIT初心者にも分かりやすく解説します。 共通鍵暗号方...

DNSSECの仕組み

ディジタル署名を使ったDNSSECの仕組みのイメージを下図で表しました。

  1. 権威サーバはリソースレコードを秘密鍵で暗号化して、それをキャッシュサーバに送ります。
  2. 暗号化されたリソースレコードを受取ったキャッシュサーバは、権威サーバが公開している公開鍵で復号化します。
  3. ちゃんと復号化できたということは、権威サーバの秘密鍵で暗号化されたリソースレコードだと分かります。要するに、正規の権威サーバから送られたデータだと判断できるわけですね。

応用情報技術者試験での出題例

令和6年度秋期問33

応用情報技術者
午前試験 
令和6年度秋期問33

DNSに関する記述のうち,適切なものはどれか。

ア DNSサーバのホスト名を登録するレコードをMXレコードという。
イ DNSサーバに問い合わせを行うソフトウェアをレゾリューションという。
ウ IPアドレスに対応するホスト名を調べることを逆引きとする。
エ ホスト名に対し別名を登録するレコードをNSレコードという。

正解と解説

正解は”ウ”

IPアドレスに対応するホスト名を調べることを逆引きと呼びます。
逆にホスト名に対応するIPアドレスを調べることを正引きと呼びます。

情報処理試験では、DNSは「IPアドレスとドメイン名を対応付ける」と言ったり、「IPアドレスとホスト名を対応付ける」と言ったりすることがありますが、この場合のドメイン名とホスト名は同じ意味だと思ってもらって大丈夫です。

令和6年度秋期問42

応用情報技術者
午前試験 
令和6年度秋期問42

DNSキャッシュポイズニング攻撃に対して有効な対策はどれか。

ア DNSサーバにおいて,侵入したマルウェアをリアルタイムに隔離する。
イ DNS問合せに使用するDNSヘッダー内のIDを固定せずにランダムに変更する。
ウ DNS問合せに使用する送信元ポート番号を53番に固定する。
エ 外部からのDNS問合せに対しては,宛先ポート番号53のものだけに応答する。

正解と解説

正解は”イ”

DNSキャッシュサーバは「ID」を付けてDNS権威サーバに問い合わせします。
こうすることで、複数の問合せをしていても、どれに対する答えなのか分かります。

DNSキャッシュポイズニング攻撃は偽のドメイン情報をキャッシュサーバに記憶させて、悪意のあるURLに誘導する攻撃です
DNSキャッシュサーバは問合せで指定したIDと受け取ったパケット内のIDが同じ場合、正しい権威サーバと勘違いしてしまいます。なので、攻撃者が指定したIDと同じIDで偽のIPアドレスをキャッシュサーバに送れば、それをクライアントPCに送ってしまうんです
このIDを固定にすると、攻撃者がIDを予測しやすくなってしまいます。なので、ランダムに変更するだけでDNSキャッシュポイズニング攻撃には有効だと言えます。

ちなみに、DNSのポート番号は53番ですが、これをランダムにすると、攻撃者がポート番号も当てないといけなくなるので、これもDNSキャッシュポイズニング攻撃に対して有効な対策となります。なので、ポート番号は固定にせず、ランダムにする方が良いです。

令和6年度秋期問44

応用情報技術者
午前試験 
令和6年度秋期問44

DNSSECの仕様はどれか。

ア DNSキャッシュサーバで,権威DNSサーバに名前を問い合わせるときの送信元ポート番号を問合せのたびにランダムに変える。

イ 権威DNSサーバで公開鍵を公開し,秘密鍵を使ってリソースレコードにデジタル署名を付与する。DNSキャッシュサーバで,権威DNSサーバから受信したリソースレコードのデジタル署名を検証する。

ウ 電子メールを送信するメールサーバのIPアドレスを権威DNSサーバに登録する。電子メールを受信するメールサーバで,権威DNSサーバに登録されている情報を用いて,送信元メールサーバのIPアドレスを検証する。

エ 電子メールを送信するメールサーバの公開鍵を権威DNSサーバで公開し,秘密鍵を使って電子メールにデジタル署名を付与する。電子メールを受信するメールサーバで,電子メールのデジタル署名を検証する。

正解と解説

正解は”イ”

DNSSECは、権威サーバの秘密鍵でリソースレコードを暗号化し、それを受取ったキャッシュサーバが公開鍵で復号化し、デジタル署名を検証します。

よって、答えはイです。

令和6年度春期問36

応用情報技術者
午前試験 
令和6年度春期問36

企業のDMZ上で1台のDNSサーバを,インターネット公開用と,社内のPC及びサーバからの名前解決の問合せに対応する社内用とで共用している。このDNSサーバが,DNSキャッシュポイズニング攻撃による被害を受けた結果,直接引き起こされ得る現象はどれか。

ア DNSサーバのハードディスク上に定義されているDNSサーバ名が書き換わり,インターネットからDNSサーバに接続できなくなる。

イ DNSサーバのメモリ上にワームが常駐し,DNSを参照元に対して不正プログラムを送り込む。

ウ 社内の利用者が,インターネット上の特定のWebサーバにアクセスしようとすると,本来とは異なるWebサーバに誘導される。

エ 社内の利用者間の電子メールについて,宛先メールアドレスが書き換えられ,送信ができなくなる。

正解と解説

正解は”ウ”

DNSキャッシュポイズニング攻撃を受けると、攻撃者が送ってきたIPアドレスを正規のIPアドレスと勘違いしてしまい、本来とは異なるWebサーバに誘導されることになります。

よって、答えはウです。

令和6年度春期問37

応用情報技術者
午前試験 
令和6年度春期問37

DNSSECで実現できることはどれか。

ア DNSキャッシュサーバが得た応答の中のリソースレコードが,権威DNSサーバで管理されているものであり,改ざんされていないことの検証

イ 権威DNSサーバとDNSキャッシュサーバとの通信を暗号化することによる,ゾーン情報の漏えいの防止

ウ 長音”ー”と漢数字”一”などの似た文字をドメイン名に用いて,正規サイトのように見せかける攻撃の防止

エ 利用者のURLの入力誤りを悪用して,偽サイトに誘導する攻撃の検知

正解と解説

正解は”ア”

DNSSECでは、リソースレコードが正規の権威サーバで管理されたものであり、改ざんされていないことを確認できます。

令和5年度秋期問45

応用情報技術者
午前試験 
令和5年度秋期問45

DNSSECについての記述のうち,適切なものはどれか。

ア DNSサーバへの問合せ時の送信元ポート番号をランダムに選択することによって,DNS問合せへの不正な応答を防止する。

イ DNSの再帰的な問合せの送信元として許可するクライアントを制限することによって,DNSを悪用したDoS攻撃を防止する。

ウ 共通鍵暗号方式によるメッセージ認証を用いることによって,正当なDNSサーバからの応答であることをクライアントが検証できる。

エ 公開鍵暗号方式によるデジタル署名を用いることによって,正当なDNSサーバからの応答であることをクライアントが検証できる。

正解と解説

正解は”エ”

DNSSECでは、ディジタル署名によって、正当な権威サーバからの応答であることを検証できます。