ご契約中のお客さま

DNSサーバーの不適切な設定「オープンリゾルバー」について

DNSサーバーの不適切な設定である「オープンリゾルバー」とは、誰からの再帰検索要求に対しても答えてしまうキャッシュDNSサーバーのことです。自分が管理しているドメインの名前解決(非再帰的)要求にだけ答えるつもりで構築した権威DNSサーバーでも、不適切な設定により管理外のドメインに対する名前解決(再帰的)要求にまで答えてしまうようなケースが多く発生しています。
お客様の管理するDNSサーバーがオープンリゾルバーであると、DDoS攻撃の加害者や踏み台となる恐れがあります。更にお客様OCN回線のトラフィック量が増加し、インターネット接続が不安定になる恐れがあります。DNSサーバーを管理されているお客様はご注意ください。

JPCERT/CC DNS の再帰的な問い合わせを使った DDoS 攻撃に関する注意喚起(2013/4/18) https://www.jpcert.or.jp/at/2013/at130022.html
JPNIC オープンリゾルバー(Open Resolver)について https://www.nic.ad.jp/ja/dns/openresolver/
JPRS DNSサーバーの不適切な設定「オープンリゾルバー」について http://jprs.jp/whatsnew/topics/2013/130418.html
オープンリゾルバー確認サイト https://www.v3.openresolver.jp/

以下に、UNIX系OSでBIND9を利用している場合の参考設定例を記載します。お客様の環境に合わせて内容をご確認ください。


DNSサーバー構築設定例

UNIX系OSでBIND9を利用し権威DNSサーバーを構築する設定例を紹介します。

1.権威DNSサーバーのみ運用している場合

■ named.confファイルの設定

再帰検索要求に対して答える必要は不要のため、その機能を停止します。

[注意]
下記設定例にあるように、recursion no; を設定すると、そのサーバーをキャッシュサーバーとして参照していたPCからの再帰検索要求に応答しなくなります。
設定を行う前に、OCNのキャッシュDNSサーバーを参照する設定*に変更しましょう。

* OCNのネットワークを利用している場合に限ります。

//======================================
// /etc/named.conf
//======================================
//optionsでDNS全般の設定をします.
options {
//一部抜粋
version "unknown"; //BINDのバージョン情報を公開しない
recursion no; //再帰検索要求は受け付けない
allow-query { any; }; //どこからの問合せも受け付ける

};

※設定変更したあとに named .confファイルを reload/restartして変更を反映させます。

2.キャッシュDNSサーバーのみ運用している場合

再帰検索要求に対して答える必要のあるアドレス帯のみ許可するようにします。
下記は、192.168.1.0/24のアドレス帯からのみ再起検索要求に対して答える設定例です。

■ named.confファイルの設定

//======================================
// /etc/named.conf
//======================================
//optionsでDNS全般の設定をします.
options {
//一部抜粋
version "unknown"; //BINDのバージョン情報を公開しない
recursion yes; //再帰検索要求を受け付ける
allow-query { 192.168.1.0/24; }; //192.168.1.0/24以外からの問い合わせを受け付けない

};

※設定変更したあとに named .confファイルを reload/restartして変更を反映させます。

3.権威DNSサーバーとキャッシュDNSサーバーを併用して運用している場合

基本的には権威DNSサーバーとキャッシュDNSサーバーは別々に立ち上げることを推奨しますが、様々な事情によりやむを得なく権威DNSとキャッシュDNSを1つのDNSサーバーで併用する場合は、下記のようにview機能を利用することで、オープンリゾルバーを回避することができます。
下記は、192.168.1.0/24のアドレス帯と自DNSサーバーからのみ再起検索要求に対して答える設定例です。

■ named.confファイルの設定

//======================================
// /etc/named.conf
//======================================
options {
//一部抜粋
allow-query { any; }; //どこからの問合せも受け付ける
version “unknown”; //BINDのバージョン情報を公開しない
  };
};
view "internal" { //内部向けの動作を定義する
  match-clients { //内部と定義するアドレス帯を指定
    127.0.0.1;
    192.168.1.0/24; //お客様ネットワーク
  };
  recursion yes; //再帰検索要求を受け付ける
  zone "." in {
    type hint;
    file "named.root";
  };
  zone "localhost" in {
    type master;
    file "localhost.zone";
  };
  zone "0.0.127.in-addr.arpa" in {
    type master;
    file "0.0.127.in-addr.arpa.zone";
  };
  zone "example.com" in {
    type master;
    file "example.com.zone";
  };
  zone "32.69.168.192.in-addr.arpa" in {
    type master;
    file "32.69.168.192.in-addr.arpa.zone";
  };
};
view “external” { //外部向けの動作を定義する
  match-clients {
    any;
  };
  recursion no; //再帰検索要求を受け付けない
  zone "localhost" in {
    type master;
    file "localhost.zone";
  };
  zone "0.0.127.in-addr.arpa" in {
    type master;
    file "0.0.127.in-addr.arpa.zone";
  };
  zone "example.com" in {
    type master;
    file "example.com.zone";
  };
  zone "32.69.168.192.in-addr.arpa" in {
    type master;
    file "32.69.168.192.in-addr.arpa.zone";
  };
};

※設定変更したあとに named .confファイルを reload/restartして変更を反映させます。

ページトップへ戻る