オープンリゾルバの危険性|DNSサーバを公開することで発生するセキュリティリスクを理解する

オープンリゾルバの危険性

オープンリゾルバの危険性

DNSサーバを構築する際に注意しなければならない設定の一つがオープンリゾルバです。

BINDやUnboundなどのDNSサーバを初めて構築した際、自分では気付かないうちにオープンリゾルバになってしまうことがあります。

オープンリゾルバは第三者から自由に利用できるDNSサーバのことであり、セキュリティ上の大きな問題となります。

実際に過去にはオープンリゾルバが悪用され、大規模なDDoS攻撃の踏み台として利用された事例も数多く存在します。

本記事ではオープンリゾルバの仕組みや危険性、防止方法について解説します。

オープンリゾルバとは

オープンリゾルバとは、誰からのDNS問い合わせにも応答するキャッシュDNSサーバのことです。

本来キャッシュDNSは社内利用者や契約者向けに提供されるものです。

しかし設定ミスによってインターネット全体へ公開されることがあります。


インターネット
↓
誰でも利用可能
↓
キャッシュDNS

この状態がオープンリゾルバです。

リゾルバとは

リゾルバは名前解決を行うDNSサーバです。


www.example.com
↓
問い合わせ
↓
キャッシュDNS
↓
IPアドレス取得

利用者の代わりに名前解決を行います。

正常な構成

通常は内部利用者のみ許可します。


社内PC
↓
キャッシュDNS
↓
インターネット

外部からの利用は禁止します。

オープンリゾルバの状態


世界中の利用者
↓
キャッシュDNS
↓
名前解決

誰でも利用可能な状態です。

なぜ危険なのか

オープンリゾルバは攻撃者に悪用されます。

特にDNSアンプ攻撃の踏み台として利用されるケースが有名です。

DNSアンプ攻撃とは

攻撃者は送信元IPアドレスを偽装します。


攻撃者
↓
送信元偽装
↓
オープンリゾルバ
↓
大量応答
↓
被害者

被害者へ大量通信が発生します。

増幅攻撃が成立する理由

DNSは小さな問い合わせに対して大きな応答を返すことがあります。


問い合わせ
60byte

応答
4000byte

通信量が数十倍になることがあります。

DDoS攻撃への悪用

多数のオープンリゾルバが利用されると大規模DDoS攻撃になります。


攻撃者
↓
1000台のオープンリゾルバ
↓
被害者

大きな通信量が発生します。

実際の被害事例

過去には数百Gbps規模の攻撃にDNSアンプ攻撃が利用されました。

現在でもオープンリゾルバは攻撃対象として狙われています。

情報収集への悪用

攻撃者はDNSサーバの応答内容から情報収集を行うことがあります。

  • 利用中ドメイン
  • 内部構成
  • DNSソフトウェア情報

攻撃準備に利用されることがあります。

自社が加害者になる危険

オープンリゾルバを放置すると、自社サーバが攻撃の踏み台になります。

その結果、通信事業者から連絡が来ることもあります。

BINDで確認する方法

外部ネットワークから問い合わせます。

$ dig @dns.example.com google.com

応答が返る場合は確認が必要です。

named.confで確認する設定

recursion yes;

再帰問い合わせを許可する設定です。

これだけでは危険です。

allow-recursionとは

利用者を制限する設定です。

allow-recursion {
    192.168.0.0/16;
};

内部ネットワークだけ許可します。

allow-queryとは

問い合わせ可能な範囲を制御します。

allow-query {
    localhost;
    192.168.0.0/16;
};

不要なアクセスを制限できます。

再帰問い合わせ無効化

権威DNSサーバでは再帰機能を無効化することがあります。

recursion no;

安全性向上につながります。

ファイアウォールによる制御

DNSポートへのアクセス制限も有効です。


UDP/53
TCP/53

必要な通信だけ許可します。

BINDの推奨設定例

options {
    recursion yes;

    allow-recursion {
        localhost;
        192.168.0.0/16;
    };
};

社内利用向けの一般的な設定です。

公開DNSとの違い

Google Public DNSなどは意図的に公開されています。

しかし十分な設備と防御策を備えています。

一般企業が同じ運用を行うべきではありません。

ログ確認方法

# journalctl -u named

大量アクセスがないか確認します。

監視すべき項目

  • DNS問い合わせ数
  • 外部アクセス数
  • CPU使用率
  • 帯域使用量

異常増加を監視します。

企業で実施すべき対策

  • allow-recursion設定
  • allow-query設定
  • ファイアウォール制御
  • ログ監視
  • 定期設定監査

複数の対策を組み合わせます。

実務で覚えておきたいポイント

  • オープンリゾルバは誰でも利用可能なDNSサーバである
  • DNSアンプ攻撃の踏み台になる
  • 自社が加害者になる可能性がある
  • allow-recursionで利用者を制限する
  • 権威DNSでは再帰問い合わせを無効化する
  • 定期的な監査が重要である

まとめ

オープンリゾルバはDNSサーバ運用における代表的なセキュリティ問題の一つです。

放置するとDNSアンプ攻撃の踏み台として悪用され、自社が加害者になる可能性があります。

BINDではallow-recursionやallow-queryを適切に設定し、必要な利用者だけに再帰問い合わせを許可することが重要です。

DNSサーバを公開する際は、オープンリゾルバになっていないか必ず確認するようにしましょう。