どうも!とろあ(@tohroa)です。
先日、ネットワークスペシャリスト試験直前!弱点を洗い出して強化しよう!という記事を書きました。苦手分野の学習をインプットするだけでは無く、アウトプットしてみよう!と思い立ち、記事にしてみました。

ネットワークスペシャリストで必要なDNSの知識

DNSはDomain Name Systemの略称で、ドメイン名とIPアドレスの関連を管理し、問い合わせに対して答える仕組みです。

例えば、本サイトのtohroa.netというドメイン名を指定してアクセスしようとした際に、tohroa.netにアクセスするためのIPアドレスを教えてくれるのがDNSサーバです。

ドメイン名に対してIPアドレスを回答する仕組みを名前解決と呼びます。

各レコードの名前と中身

  • SOAレコード:自DNSサーバにて扱うドメイン、シリアル番号、ゾーン情報やキャッシュの有効期限などを記載
  • NSレコード:異なるドメインやサブドメインの問い合わせを他のネームサーバにて行う場合の対応付けを記載
  • MXレコード:メールを送信する際のメールサーバのドメイン名を記載
  • Aレコード:ドメイン名とIPv4のIPアドレスの対応付けを記載
  • AAAAレコード:ドメイン名とIPv6のIPアドレスの対応付けを記載
  • CNAMEレコード:ドメインの別名や略称(エイリアス)を記載
  • TXTレコード:コメントやメモを記載するためのレコードですが、特定のルールに従った記載を行うことによりSPFレコード などのDNSの動作に関わる設定を行う場合もあります。

コンテンツ(権威)サーバ、キャッシュサーバ

DNSサーバは、大きくコンテンツサーバ(権威サーバとも呼ぶ)キャッシュサーバで構成されます。

まず、コンテンツサーバは、自ドメインを管理するサーバとなります。各種レコードの更新や管理を行うことが可能です。

対して、キャッシュサーバは、コンテンツサーバや他ドメインのDNSサーバに問い合わせを行った結果をキャッシュとして保存しておき、効率的に名前解決を行うために動作します。

プライマリサーバとセカンダリサーバ

コンテンツサーバは万が一の故障に備えるためのバックアップなどの目的として、サーバ内の情報をコピーして保有するセカンダリサーバが用意されます。

セカンダリサーバに対して基となる情報を管理しているのがプライマリサーバであり、プライマリサーバが保有している情報をゾーン情報と呼びます。

プライマリサーバからセカンダリサーバにゾーン情報をコピーすることをゾーン転送といいます。

ゾーン転送はSOAレコード内のシリアル番号を参照して、更新されていた場合のみ行われます。

DNSラウンドロビン

DNSサーバを活用した負荷分散の仕組みとして、DNSラウンドロビンというものがあります。

これは「1つのドメイン名に対して複数のIPアドレスを設定」することで、特定のサーバなどへの負荷を分散させる仕組みです。DNSの設定内容としては、1つのドメイン名に対して、複数のAレコードを設定することになります。

例えば…

tohroa.net IN A 192.168.0.1
tohroa.net IN A 192.168.0.2
tohroa.net IN A 192.168.0.3

と複数のAレコードを設定しておけば、
最初のtohroa.net問い合わせに対しては192.168.0.1を回答、2回目は192.168.0.2、3回目は192.168.0.3、4回目以降は最初に戻って繰り返し…という形で負荷分散してくれます。

なお、DNSラウンドロビンを使用する際の注意点として、以下の2つがあります。

名前解決した先のサーバの動作状況は関係無く動作する

DNSサーバは問い合わせのあった内容に対して、純粋に回答するのみであるため、上の例で言うと、もし192.168.0.2でアクセスする先のサーバが故障やメンテナンスのため停止していたとしても、関係なく名前解決を行います

結果、192.168.0.2以外の回答を受けたPCからはサーバにアクセスできるのに、192.168.0.2の回答を受けたPCだけサーバにアクセスできないといった状況もありえるのです。

処理内容を意識した負荷分散ではない

もう一つ、DNSラウンドロビンは単純にAレコードの内容に従い順番に回答するだけなので、処理内容が重いのか、軽いのかは検証されません。

このため、1つ目のサーバに重い処理を必要とするアクセスが集中して忙しいのに、3つ目のサーバは遊休状態…といった状況となることも考えられます。

セキュリティ対策

DNSはインターネット上の他の場所への道標として、行き先を解決してくれる重要な仕組みです。反面、行き先を誘導されて情報漏えいなどの危険性もあるため、セキュリティ対策が重要です。

ゾーン情報の転送制限

コンテンツサーバに登録されているゾーン情報には、ドメイン内のサーバ情報やIPアドレスといった詳細な情報が含まれています。

そのような情報が流出した場合、ネットワーク構成などが把握され、不正アクセスの参考にされかねません。

ゾーン情報の転送は、「プライマリサーバとセカンダリサーバ」で示した通りプライマリサーバ、セカンダリサーバ間では必要ですが、その他にはゾーン転送を行うべきではありません。

プライマリサーバではセカンダリサーバのみゾーン転送を許可し、セカンダリサーバでのゾーン転送は無効としておくことが有効です。

DNS amp(リフレクタ、リフレクション)攻撃

DNS ampはDNSリフレクタやDNSリフレクションなどとも呼ばれるDNSサーバを利用したDDoS攻撃の一種です。

外部からキャッシュサーバに対して、送信元を攻撃対象のIPアドレスに偽装した問い合わせを立て続けに行い、回答を攻撃対象に集中させる攻撃手法となります。

キャッシュサーバがあらゆる問い合わせに回答する設定となっていることをオープンリゾルバと呼び、DDoS攻撃の踏み台とならないよう無効化することが推奨されています。

DNS amp攻撃の送信元IPアドレスは攻撃対象に偽装されているため、送信元IPアドレスを検証してもDNS amp攻撃なのかは検証できない点は覚えておきたいポイントです。

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

システムの内部に用意されたキャッシュサーバの内容を書きかえることによって、目的のページとは異なる宛先に誘導する手法です。

アクセスしている本人は正規のURLなどをしてしているため、アクセス先が不正であることは認識できず、意図せず有害サイトにアクセスしてしまったり、不適切な場所にメールやファイルを転送してしまう恐れがあります。

DNSキャッシュポイズニングの対策は難しいようですが、UDP通信で使用するポート番号のランダム化と、処理中のトランザクションIDのランダム化、および、DNSSECの活用が有効なようです。

DNSSECについて詳細は…長くなったので別途記事にしたいと思います。

(追記)DNSSECについてまとめた記事はこちら。
ネットワークスペシャリスト直前対策「DNSSEC」について学習

最後に…

長々となってしまいましたが、ネットワークスペシャリスト試験対策として重要と思われるポイントは太字で記載しました。

誰かの役に立てば光栄ですが、こうして書いてみると自分自身理解も深まって良いですね!