設定ガイド:オープンリゾルバー機能を停止するには【BIND編】

DNS関連技術情報のトップへ戻る

---------------------------------------------------------------------
しかく設定ガイド:オープンリゾルバー機能を停止するには【BIND編】
 株式会社日本レジストリサービス(JPRS)
 初版作成 2013年04月18日(Thu)
---------------------------------------------------------------------
▼はじめに
 本資料は、オープンリゾルバーとして動作しているBINDを使ったDNSサーバー
 の設定を、簡単なステップで修正する事を目的としています。
 オープンリゾルバーについての技術的な解説は本資料では行いません。手順
 に沿った操作で設定を変更し、読者が運用するDNSサーバーがオープンリゾル
 バーではなくなることを目指しています。
 オープンリゾルバーおよびそれを利用した攻撃についての技術的な解説は以
 下をご覧ください。
 技術解説:「DNS Reflector Attacks(DNSリフレクター攻撃)」について
 <http://jprs.jp/tech/notice/2013-04-18-reflector-attacks.html>
▼本資料の前提
 ▽対象
 BINDを用いたDNSサーバーを運用している管理者、特にDNSサーバーを運用
 しているが、普段設定を自分で変更する事がなく、手順の解説が欲しいと
 思っている管理者を想定して記載しています。
 現行のBIND 9を対象としていますが、ほぼ同様の作業でBIND 8および
 9.4.0より古いBIND 9でもオープンリゾルバーの対策は可能です。この対応
 については文中、以下のマークで注意点を記載します。
 [B8] BIND 8に関する注意点
 [旧B9] 9.4.0より古いBIND 9に関する注意点
 なお、これらの古いBINDは開発元であるISCのサポートが既に終了していま
 す。現在ISCまたはご利用のOSのベンダーによってサポートされている
 BIND 9の導入を推奨します。
 ISCのBIND 9サポート状況は以下のページをご覧ください。
 ISC's Software Support Policy
 <http://www.isc.org/softwaresupportpolicy>
 ▽記載内容について
 本資料では、BINDの一般的な設定に対するオペレーションを記載していま
 す。OSやディストリビューションに依存する点があり操作が不明な場合は、
 該当するベンダーのサポート窓口や保守業者にお問合せください。
▼オープンリゾルバーの修正手順
 BINDを運用している管理者は、以下の6つの手順を確認の上、適切な設定の修
 正を行ってください。これにより、オープンリゾルバーとして外部に公開す
 る危険性を取り除く事が出来ます。
 手順1: 事前確認
 手順2: 作業の準備
 手順3: 設定の確認
 手順4: 設定の修正
 手順5: 修正の反映
 手順6: 確認
 ▽手順1: 事前確認
 [説明]
 確認用のWebサイトで、オープンリゾルバーかどうかをチェックします。
 [実施内容]
 自ら運用しているサーバーがオープンリゾルバーかどうかを、公開され
 ているチェックサイトで確認します。
 The Measurement Factory: Open Resolver Test
 <http://dns.measurement-factory.com/cgi-bin/openresolvercheck.pl>
 このWebページに、対象サーバーのIPアドレス(*1)を入力すると、オー
 プンリゾルバーかどうかの判定が行われます。チェック結果の
 "Status" が"closed"であれば問題ありませんが、"open"と出る場合は
 オープンリゾルバーとなっています。
 オープンリゾルバーであると判明した場合、以下の手順に沿って対策を
 実施してください。
 (*1)対象サーバーがNATの内側にある場合、チェックは外部からアクセス
 されるグローバルアドレスで実施する必要があります。
 ▽手順2: 作業の準備
 [説明]
 修正をするにあたり、必要な情報、権限などを準備します。
 1) 設定ファイルの場所
 2) 権威DNSサーバーか、キャッシュDNSサーバーか
 3) キャッシュDNSサーバーとして答えてよい、クエリ元のアドレスのリスト
 4) BIND設定ファイル編集および再起動の権限
 5) BINDのバージョン
 [実施内容]
 1) 設定ファイルの場所の確認
 BINDの設定は、標準的には以下にあるテキストファイルに記載されま
 す。
 /etc/named.conf もしくは /usr/local/etc/named.conf
 2) 権威DNSサーバーか、キャッシュDNSサーバーか
 作業対象のサーバーが、何の機能を担っているかを確認します。
 3) キャッシュDNSサーバーとして答えてよいクエリ元のアドレスのリスト
 作業対象のサーバーがキャッシュDNSサーバーの場合、その機能を提供
 している先のIPアドレスを全て知る必要があります。
 4) BIND設定ファイル編集および再起動の権限
 設定ファイルの変更後に変更内容を反映させるためには、rndcコマン
 ドを用います。標準的なコマンドの場所は以下になります。
 /usr/sbin/rndc もしくは /usr/local/sbin/rndc
 --------------------------------------------------------------
 [B8] BIND 8の場合は、rndcコマンドの代わりにndcコマンドを用いま
 す。標準的なコマンドの場所は以下になります。
 /usr/sbin/ndc もしくは /usr/local/sbin/ndc
 --------------------------------------------------------------
 なお、設定ファイルの編集及び変更内容の反映にはroot権限が必要な
 場合があります。
 5) BINDのバージョン
 BINDのバージョンはrndcコマンドで確認できます。
 % rndc status
 version: 9.9.2-P2 ← バージョン
 number of zones: 1
 ...
 --------------------------------------------------------------
 [B8] BIND 8の場合は、rndcコマンドの代わりにndcコマンドを用いま
 す。
 % ndc status
 named 8.4.7-REL Mon Apr 15 19:49:23 JST 2013 foo@bar:/tmp/bind/src/bin/named
 ^^^^^^^^^ バージョン
 config (/etc/named.conf) last loaded at age: Tue Apr 16 10:59:46 2013
 ...
 --------------------------------------------------------------
 ▽手順3: 設定の確認
 [説明]
 設定ファイル(named.conf)の中で、オープンリゾルバーとしての動作に
 関連するオプションの設定場所、内容を確認します。
 [実施内容]
 設定ファイルを開き、以下のオプションが記載されている場所と内容を
 確認します。
 - recursion
 - allow-query
 - allow-recursion
 - allow-query-cache
 --------------------------------------------------------------
 [B8][旧B9] allow-query-cacheはBIND 9.4.0で追加されたオプション
 です。BIND 8および9.4.0より古いBIND 9には
 allow-query-cacheのオプションが存在しません。
 allow-query-cacheを指定しなくてもオープンリゾルバー
 を回避する事は可能です。しかし、応答のサイズが大きく
 なる事から、対策として必ずしも十分とはいえません。
 --------------------------------------------------------------
 BINDのデフォルト設定を用いている場合、記載がない場合もあります。
 ex.) オープンリゾルバーの例
 options {
 ...
 recursion yes; // ← リゾルバーとして動作しています
 allow-query { any; }; // ← 何処からのクエリでも受取ります
 allow-recursion { any; }; // ← リゾルバーとしての応答を誰にでも返します
 allow-query-cache { any; }; // ← キャッシュの内容を誰にでも返します
 // [B8][旧B9]BIND 8および9.4.0より古い
 // BIND 9には存在しません
 ...
 };
 ▽手順4: 設定の修正
 [説明]
 設定ファイルを修正します。
 A) 権威DNSサーバーのみを運用している場合は、リゾルバーとしての動
 作は不要であるため、機能を停止する設定を入れます。
 B) キャッシュDNSサーバーを運用している場合は、クエリを許可するア
 ドレスをaclに記載し、そこからのアクセスのみを許す設定にします。
 C) 権威DNSサーバーとキャッシュDNSサーバーを兼用している場合は、こ
 れを分離した構成をとることを推奨します。もし何らかの理由で兼用
 したままにしておく必要がある場合は、以下の[実施内容]B)の設定を
 施した上、allow-queryをanyと指定します。
 [実施内容]
 設定ファイルのrecursion、allow-query、allow-recursionの項と、acl
 を以下のように編集します(*2)。編集の前に、ファイルのバックアップ
 をとるようにしてください。
 (*2)ファイルの変更にはroot権限が必要な場合があります。その場合、
 suもしくはsudoコマンド等でroot権限を得て作業を行ってください。
 A) 権威DNSサーバーのみを運用している場合は、リゾルバーとしての動
 作を禁止します。
 options {
 ...
 recursion no; // リゾルバーとして動作しません
 allow-query-cache { none; }; // キャッシュの内容を返しません
 ...
 };
 ----------------------------------------------------------------
 [B8][旧B9] allow-query-cacheのオプションが存在しないため、該当
 する行は記載しないでください。
 ----------------------------------------------------------------
 B) キャッシュDNSサーバーとして運用している場合は、aclを作りそこか
 らのクエリだけを許可します。
 acl "TRUSTSRC" { // TRUSTSRCというacl作成の設定を追加します
 192.0.2.0/24; // クエリ元のネットワークを記載します
 2001:db8:1::/48; // クエリ元のネットワークを記載します
 localhost; // 標準で入る設定を残します
 localnets; // 標準で入る設定を残します
 };
 options {
 ...
 recursion yes; // リゾルバーとして動作します
 allow-query { TRUSTSRC; }; // TRUSTSRCからのみクエリを許可します
 allow-recursion { TRUSTSRC; }; // TRUSTSRCからのみリゾルバーとして動作します
 allow-query-cache { TRUSTSRC; }; // TRUSTSRCからのみキャッシュの内容を返します
 ...
 };
 ----------------------------------------------------------------
 [B8][旧B9] allow-query-cacheのオプションが存在しないため、該当
 する行は記載しないでください。
 ----------------------------------------------------------------
 ▽手順5: 修正の反映
 [説明]
 修正した設定を反映させます。
 [実施内容]
 rndcコマンドで変更した設定を反映させます。(*3)
 なお、事前にnamed-checkconfコマンドでエラーがないことを確認してお
 くとより安全です。
 % named-checkconf
 % rndc reload
 ------------------------------------------------------------------
 [B8] BIND 8の場合は、rndcコマンドの代わりにndcコマンドを用います。
 また、named-checkconfコマンドはBIND 9で提供されたものであり、
 存在しません。
 % ndc reload
 ------------------------------------------------------------------
 サーバーを再起動してもよいのであればrebootを行う事でも設定は反映
 されます。
 (*3)コマンドの実行にはroot権限が必要な場合があります。その場合、
 suもしくはsudoコマンドでroot権限を得てください。
 ▽手順6: 確認
 [説明]
 修正が正しく行われたことを、再度チェックサイトで確認します。
 [実施内容]
 事前確認で使ったチェックサイトで、再度確認をします(*4)。"open" と
 なっていた項目が"closed"に代わっていれば、正しく修正できています。
 もし、確認結果が"open"のままの場合は、以下の確認を行ったうえで、
 再度手順に従って作業を行ってください。
 - 設定ファイルが正しいか
 - 設定の修正は正しいか
 - 修正の反映が正しく出来ているか
 (*4)Measurement Factory: Open Resolver Testは、現在結果をキャッシュ
 する事で、頻繁なテストを行わないようにしています。再テストを
 行うには、該当サーバーから以下のコマンドを実行し、再テストを
 有効にする必要があります。
 % telnet dns-surveyor.measurement-factory.com 999
 コマンドを実行してしばらく待つと、再テストが行われる旨のメッ
 セージが表示されます。
---------------------------------------------------------------------
▼連絡先
 本文書に関するお問い合わせは <dnstech-info@jprs.jp> までご連絡ください。
▼更新履歴
 2013年04月18日 11:00 初版作成

株式会社日本レジストリサービス Copyright©2001-2025 Japan Registry Services Co., Ltd.

AltStyle によって変換されたページ (->オリジナル) /