JPドメイン名のサービス案内、ドメイン名・DNSに関連する情報提供サイト


JPRS トピックス&コラム No.020


DNSの安全性・安定性向上のためのキホン~お使いのDNSサーバーは大丈夫ですか?~


DNSサーバーの安全性と安定性を高めるには、それぞれのサーバーの機能や特性に応じた適切な管理運用が必要です。あなたがお使いのDNSサーバーを再確認してみましょう。

2種類の「DNSサーバー」に注意

 DNSサーバーには、権威DNSサーバーとキャッシュDNSサーバーの2種類があります。
 権威DNSサーバーは権威サーバーやDNSコンテンツサーバーなどとも呼ばれ、ドメイン名の階層構造を構成し、名前情報を管理します。それに対し、キャッシュDNS サーバーはキャッシュサーバーやDNSリゾルバーなどとも呼ばれ、ユーザー(クライアント)の要求を受け権威DNSサーバー群によるドメイン名の階層構造をたどり、名前解決サービスを提供します(図1)。

図
図 1 権威DNS サーバーとキャッシュDNSサーバー

▼権威/キャッシュDNS サーバーの分離

このように、権威DNSサーバーとキャッシュDNSサーバーは本来別の機能を担当しており、サービス対象やその提供範囲も異なっています(表1)。

表
表 1 機能・サービス対象・サービス提供範囲の違い

 DNSサーバーの代表的な実装の一つとして長年利用されているBINDでは、権威DNSサーバーとキャッシュDNSサーバーの機能を一つのサーバーで兼用することができます。しかし、兼用による影響やセキュリティ上のリスク(*1)などを考慮した場合、双方を共有することは好ましくなく、現在では開発元のISCにおいても双方を別のサーバーに分離することを推奨しています(*2)
 また、DNS Amp攻撃(*3)やDNSキャッシュポイズニング(*4)のリスクを軽減する観点からも、権威/キャッシュDNSサーバーの分離が強く推奨されています。

▼分離の際は権威DNSサーバーの変更がお奨め

 多数のユーザー(クライアント)に一度公開したキャッシュDNSサーバーのIPアドレス変更は、ユーザー側での追加作業や予期しないトラブル発生のリスクを伴います。これに対し、ルートサーバー以外の権威DNSサーバーのIPアドレス変更では、自身が管理するゾーン情報と上位ゾーン(レジストリなど)の登録情報のみを変更すればよく、キャッシュDNSサーバーに比べ、変更は比較的容易であるといえます。
そのため、権威DNS サーバーとキャッシュDNS サー バーの分離を図る場合、DNS サーバーを新たに準備し (*5)権威DNSサーバーの機能のみを新しいサーバーに分離する方法で実施するのがよいでしょう(図2)。

図 2 権威DNS サーバーの分離手順
図 2 権威DNS サーバーの分離手順

DNSサーバーの安全性・安定性を高める

 権威DNS サーバーとキャッシュDNSサーバーを分離することでそれぞれのサーバーに応じた適切な設定が可能になり、DNS サーバーの安全性・安定性を高めることができます。以下、分離後の権威DNS サーバーとキャッシュDNS サーバーそれぞれにおいて、特に注意すべきポイントを解説します。

権威DNSサーバーにおけるポイント

▼再帰検索要求の受け付けを無効化

権威DNSサーバーではキャッシュDNSサーバーの機能を提供する必要がありません。そのため、キャッシュDNSサーバーでのみ必要となる、再帰検索要求の受け付けを無効に設定しておきます(図3)。

図 3 BIND 9 における設定例
図 3 BIND 9 における設定例

 これにより、キャッシュDNS サーバー機能に脆弱性が発見された場合でも、その影響を回避することが可能になります。また、後述するキャッシュDNSサーバー機能に存在するセキュリティ上のリスクを回避できます。

キャッシュDNSサーバーにおけるポイント

▼適切なアクセスコントロールの実施

 通常、キャッシュDNS サーバーではサービス対象となるユーザー(クライアント)からのアクセスのみを許可すればよく、インターネット全体にサービスを公開する必要はありません。そのため、サービス対象以外からの利用を制限するアクセスコントロールを実施することで、外部からの不正使用を防止できます(図4)。

図 4 BIND9における設定例
図 4 BIND9における設定例

 アクセスコントロールは、DNS Amp攻撃の踏み台となるリスクや、DNSキャッシュポイズニングのリスクを軽減するのにも役立ちます。他の組織やユーザーに迷惑をかけないようにするためにも、キャッシュDNSサーバーにおけるアクセスコントロールは重要です。

▼ポート番号のランダム化は必須事項

 2008年に発表されたカミンスキー型攻撃手法により、未対策のキャッシュDNS サーバーに対し数秒以内にDNSキャッシュポイズニングを成功させることが可能になり、攻撃に対するリスクが急速に高まりました。
 このため、緊急対策(*6)としてキャッシュDNSサーバーのDNS問い合わせ用ポート番号をランダム化し、外部からの予測を困難にする対策が実施されました(図5)。

図 5 ポート番号のランダム化による効果
図 5 ポート番号のランダム化による効果

ポート番号のランダム化に対応していないキャッシュDNS サーバーを使い続けることは極めて危険であり、早急に対応版に切り替える必要があります。また、キャッシュDNS サーバーの設定内容や途中のネットワーク機器の仕様などにより、ランダム化に対応した実装であってもポート番号を外部から推測可能な状態になってしまう場合があるため、注意が必要です。

より詳細な解説を『実践DNS』に掲載

本コラムで取り上げた内容を含む、DNS サーバーの安全性・安定性を高めるための設定・運用方法に関する解説を、JPRS 監修による書籍『実践DNS』にまとめています。併せてご利用ください。



機能の分離により、一方の機能に不具合や脆弱性が発見された場合にも、その影響を回避可能です。【↑】

2ISC Technical Note: Running An Authoritative-Only BIND Nameserver
https://ftp.isc.org/isc/pubs/tn/isc-tn-2002-2.html【↑】

「JPRS トピックス&コラム」No.3 を参照。【↑】

「JPRS トピックス&コラム」No.9No.13 を参照。【↑】

必ずしも物理的に別のサーバーにする必要はなく、例えば1台のサーバー上に複数のIP アドレスを設定する形で分離する方式も可能です。【↑】

より根本的な対策として、DNSSEC の導入が進められています。【↑】


掲載内容は2012年1月のものです。