JPドメイン名のサービス案内、ドメイン名・DNSに関連する情報提供サイト
JPRS トピックス&コラム No.020
DNSサーバーの安全性と安定性を高めるには、それぞれのサーバーの機能や特性に応じた適切な管理運用が必要です。あなたがお使いのDNSサーバーを再確認してみましょう。
2種類の「DNSサーバー」に注意
DNSサーバーには、権威DNSサーバーとキャッシュDNSサーバーの2種類があります。
権威DNSサーバーは権威サーバーやDNSコンテンツサーバーなどとも呼ばれ、ドメイン名の階層構造を構成し、名前情報を管理します。それに対し、キャッシュDNS サーバーはキャッシュサーバーやDNSリゾルバーなどとも呼ばれ、ユーザー(クライアント)の要求を受け権威DNSサーバー群によるドメイン名の階層構造をたどり、名前解決サービスを提供します(図1)。
▼権威/キャッシュDNS サーバーの分離
このように、権威DNSサーバーとキャッシュDNSサーバーは本来別の機能を担当しており、サービス対象やその提供範囲も異なっています(表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)。
DNSサーバーの安全性・安定性を高める
権威DNS サーバーとキャッシュDNSサーバーを分離することでそれぞれのサーバーに応じた適切な設定が可能になり、DNS サーバーの安全性・安定性を高めることができます。以下、分離後の権威DNS サーバーとキャッシュDNS サーバーそれぞれにおいて、特に注意すべきポイントを解説します。
権威DNSサーバーにおけるポイント
▼再帰検索要求の受け付けを無効化
権威DNSサーバーではキャッシュDNSサーバーの機能を提供する必要がありません。そのため、キャッシュDNSサーバーでのみ必要となる、再帰検索要求の受け付けを無効に設定しておきます(図3)。
これにより、キャッシュDNS サーバー機能に脆弱性が発見された場合でも、その影響を回避することが可能になります。また、後述するキャッシュDNSサーバー機能に存在するセキュリティ上のリスクを回避できます。
キャッシュDNSサーバーにおけるポイント
▼適切なアクセスコントロールの実施
通常、キャッシュDNS サーバーではサービス対象となるユーザー(クライアント)からのアクセスのみを許可すればよく、インターネット全体にサービスを公開する必要はありません。そのため、サービス対象以外からの利用を制限するアクセスコントロールを実施することで、外部からの不正使用を防止できます(図4)。
アクセスコントロールは、DNS Amp攻撃の踏み台となるリスクや、DNSキャッシュポイズニングのリスクを軽減するのにも役立ちます。他の組織やユーザーに迷惑をかけないようにするためにも、キャッシュDNSサーバーにおけるアクセスコントロールは重要です。
▼ポート番号のランダム化は必須事項
2008年に発表されたカミンスキー型攻撃手法により、未対策のキャッシュDNS サーバーに対し数秒以内にDNSキャッシュポイズニングを成功させることが可能になり、攻撃に対するリスクが急速に高まりました。
このため、緊急対策(*6)としてキャッシュDNSサーバーのDNS問い合わせ用ポート番号をランダム化し、外部からの予測を困難にする対策が実施されました(図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.9、No.13 を参照。【↑】
必ずしも物理的に別のサーバーにする必要はなく、例えば1台のサーバー上に複数のIP アドレスを設定する形で分離する方式も可能です。【↑】
より根本的な対策として、DNSSEC の導入が進められています。【↑】
掲載内容は2012年1月のものです。