CARVIEW |
Select Language
HTTP/1.1 200 OK
Date: Mon, 14 Jul 2025 10:54:45 GMT
Content-Type: text/html
Strict-Transport-Security: max-age=2592000
Transfer-Encoding: chunked
設定ガイド:オープンリゾルバー機能を停止するには【BIND編】
株式会社日本レジストリサービス Copyright©2001-2025 Japan Registry Services Co., Ltd.
--------------------------------------------------------------------- ■設定ガイド:オープンリゾルバー機能を停止するには【BIND編】 株式会社日本レジストリサービス(JPRS) 初版作成 2013/04/18(Thu) --------------------------------------------------------------------- ▼はじめに 本資料は、オープンリゾルバーとして動作しているBINDを使ったDNSサーバー の設定を、簡単なステップで修正する事を目的としています。 オープンリゾルバーについての技術的な解説は本資料では行いません。手順 に沿った操作で設定を変更し、読者が運用するDNSサーバーがオープンリゾル バーではなくなることを目指しています。 オープンリゾルバーおよびそれを利用した攻撃についての技術的な解説は以 下をご覧ください。 技術解説:「DNS Reflector Attacks(DNSリフレクター攻撃)」について <https://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 <https://www.isc.org/softwaresupportpolicy> ▽記載内容について 本資料では、BINDの一般的な設定に対するオペレーションを記載していま す。OSやディストリビューションに依存する点があり操作が不明な場合は、 該当するベンダーのサポート窓口や保守業者にお問合せください。 ▼オープンリゾルバーの修正手順 BINDを運用している管理者は、以下の6つの手順を確認の上、適切な設定の修 正を行ってください。これにより、オープンリゾルバーとして外部に公開す る危険性を取り除く事が出来ます。 手順1: 事前確認 手順2: 作業の準備 手順3: 設定の確認 手順4: 設定の修正 手順5: 修正の反映 手順6: 確認 ▽手順1: 事前確認 [説明] 確認用のWebサイトで、オープンリゾルバーかどうかをチェックします。 [実施内容] 自ら運用しているサーバーがオープンリゾルバーかどうかを、公開され ているチェックサイトで確認します。 The Measurement Factory: Open Resolver Test <https://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.