インターネットを利用する上で、ドメイン名とIPアドレスを紐付けるDNS(Domain Name System)は欠かせない基盤技術です。

しかし、この便利な仕組みが、設定の不備によってサイバー攻撃の武器に転用されてしまうケースが後を絶ちません。

その代表的な要因となっているのが、「オープンリゾルバ(Open Resolver)」と呼ばれる状態のサーバーです。

オープンリゾルバは、組織外の不特定多数からの問い合わせに回答してしまうDNSサーバーのことを指し、大規模なDDoS攻撃の踏み台として悪用されるリスクを孕んでいます。

本記事では、オープンリゾルバの定義から、悪用されるメカニズム、そして管理者として実施すべきセキュリティ対策までを詳しく解説します。

オープンリゾルバとは何か

オープンリゾルバとは、インターネット上のどのような端末からのDNSクエリ(問い合わせ)に対しても、再帰的な名前解決を行い回答を返してしまうDNSキャッシュサーバーのことです。

本来、DNSサーバーには「権威DNSサーバー」と「キャッシュDNSサーバー(リゾルバ)」の2種類が存在します。

権威DNSサーバーは特定のドメイン情報を管理しており、外部からの問い合わせに回答するのが役割であるため、オープンな状態であるのが通常です。

一方で、キャッシュDNSサーバーは、PCなどのクライアント端末に代わって名前解決を行う役割を担っています。

このキャッシュDNSサーバーは、本来であれば社内ネットワークや契約しているプロバイダーの利用者など、特定の範囲内のユーザーのみが利用できるように制限されていなければなりません。

しかし、設定ミスや古い機器の脆弱性などが原因で、制限なく誰からの問い合わせでも受け付けてしまう状態になっているものがオープンリゾルバです。

オープンリゾルバ自体が直接的に情報を盗み取るような動作をするわけではありませんが、その特性が攻撃者にとって非常に「利用価値の高い道具」となってしまいます。

なぜオープンリゾルバが危険なのか

オープンリゾルバが最大のリスクとされる理由は、大規模なDDoS攻撃である「DNSリフレクション攻撃(DNSアンプ攻撃)」に悪用されるためです。

攻撃者は、オープンリゾルバに対して、送信元を偽装した大量のDNS問い合わせを送りつけます。

このとき、送信元IPアドレスを攻撃対象(ターゲット)のサーバーのものに書き換えておくことがポイントです。

オープンリゾルバは、問い合わせを受け取ると、その偽装された送信元IPアドレス(つまりターゲットのサーバー)に対して応答を返します。

この仕組みにより、攻撃者は自分の身元を隠しながら、ターゲットに対して大量のパケットを送り込むことが可能になります。

さらに、DNSの応答パケットは、問い合わせパケットに比べてサイズが格段に大きくなる傾向があります。

これを「増幅(アンプ)」と呼び、わずかな通信量でターゲットのネットワーク帯域をパンクさせるほどの強力な負荷をかけることができるのです。

DNSリフレクション攻撃の仕組みと増幅率

DNSリフレクション攻撃がどれほど強力であるか、以下の表でパケットサイズの変化を比較してみましょう。

要素パケットサイズ(例)役割・影響
攻撃者の問い合わせ約60バイト送信元IPをターゲットに偽装して送る
サーバーの応答約3,000〜4,000バイト以上ターゲットへ送りつけられる巨大なデータ
増幅率約50倍〜70倍効率的にターゲットの帯域を圧迫する

このように、小さなリクエストで大きなリプライを生成させることで、攻撃者の攻撃効率は劇的に向上します。

特に、DNS拡張機能(EDNS0)を利用した問い合わせでは、さらに大きな応答を生成させることが可能です。

攻撃者は世界中に点在する複数のオープンリゾルバを同時に利用することで、テラビット級の巨大なトラフィックを生み出すことさえあります。

攻撃の踏み台にされることによる被害

自組織のサーバーがオープンリゾルバとして悪用された場合、加害者側として扱われてしまうリスクがあります。

まず、意図しない大量の通信が発生するため、自社のネットワーク帯域が圧迫され、正規の通信が遅延したり遮断されたりします。

サーバーのリソースも不必要な名前解決処理に費やされるため、パフォーマンスの低下やダウンを招く恐れがあります。

また、セキュリティ機関やISPから、攻撃に加担しているサーバーとしてブラックリストに登録されてしまう可能性も否定できません。

ブラックリストに入ると、メールの送信ができなくなったり、特定のWebサービスへのアクセスが制限されたりするなど、業務に多大な支障をきたします。

「自分たちは被害を受けていないから大丈夫」という考え方は通用せず、インターネット社会における責任問題として捉える必要があります。

オープンリゾルバ化する主な原因

なぜ、多くのサーバーや機器がオープンリゾルバになってしまうのでしょうか。

最も多い原因は、DNSサーバーソフト(BINDなど)のデフォルト設定のまま運用しているケースです。

かつてのBINDなどは、初期設定でどこからのクエリでも許可するようになっていたため、その慣習で構築されたサーバーがそのまま残っていることがあります。

次に多いのが、ブロードバンドルーターや家庭用ネットワーク機器の不適切な設定です。

最近のルーターにはDNSプロキシ機能が備わっていますが、WAN側(インターネット側)からのDNSパケットを受け入れてしまう設定になっている場合があります。

また、IoT機器が普及したことにより、管理者が意識していない機器がDNSリゾルバとして動作し、インターネットに露出しているケースも増えています。

ファイアウォールでUDP 53番ポートを適切に制限していないことも、オープンリゾルバを生む大きな要因となります。

自社の環境がオープンリゾルバか確認する方法

まずは、自社のサーバーやネットワーク機器がオープンリゾルバになっていないかを点検することが重要です。

最も手軽な方法は、インターネット上で公開されている「オープンリゾルバ確認サイト」を利用することです。

JPRS(日本レジストリサービス)などが公開しているチェックツールを使用すれば、ブラウザから簡単に状況を確認できます。

また、外部のPCからnslookupコマンドやdigコマンドを使って、自社のサーバーに対して問い合わせを試行することでも確認可能です。

Shell
# 外部ネットワークから自社サーバー(1.2.3.4)に対して名前解決を試行する
dig @1.2.3.4 www.google.com

もし、社外のネットワークから実行して、正常な応答(NOERRORとIPアドレス)が返ってくるようであれば、そのサーバーはオープンリゾルバの状態にあります。

実行結果が「Query refused」やタイムアウトになる場合は、適切に制限がかかっていると判断できます。

オープンリゾルバを解消するためのセキュリティ対策

オープンリゾルバを解消し、攻撃の踏み台にされないためには、複数のレイヤーでの対策が有効です。

DNSサーバーソフトウェアでの設定変更

まずは、DNSサーバー自体の設定で、クエリを許可する範囲を制限しましょう。

最も普及している「BIND」を例にとると、named.conf内のallow-queryやallow-recursionディレクティブを編集します。

Shell
// BINDの設定例: ローカルネットワークのみ許可
options {
    directory "/var/named";
    allow-query { localhost; 192.168.1.0/24; };
    recursion yes;
};

このように設定することで、指定したIPアドレス範囲以外からの問い合わせを拒否することができます。

Unboundを使用している場合は、access-control項目で設定を行います。

Shell
// Unboundの設定例
server:
    access-control: 127.0.0.0/8 allow
    access-control: 192.168.1.0/24 allow
    access-control: 0.0.0.0/0 refuse

このように、「基本はすべて拒否し、許可するものだけを定義する」という「ホワイトリスト方式」で設定するのが鉄則です。

ネットワーク機器・ファイアウォールでの制限

サーバーの設定だけでなく、ネットワークの入り口で遮断することも非常に重要です。

ファイアウォールやルーターのACL(アクセス制御リスト)を使用して、インターネット側から内部のDNSサーバーに向けたUDP/TCP 53番ポートのアクセスをブロックしてください。

権威DNSサーバーとキャッシュDNSサーバーを兼務させている場合は、より慎重な設計が必要です。

可能であれば、外部向けの権威サーバーと内部向けのリゾルバを物理的、または論理的に分離することを強く推奨します。

分離できない場合は、ビュー機能(View機能)などを活用し、問い合わせ元のIPアドレスによって応答内容を分ける設定を検討しましょう。

IoT機器や家庭用ルーターの管理

企業内だけでなく、テレワーク環境などでの個人のルーター管理も注意喚起が必要です。

ファームウェアを常に最新の状態にアップデートし、不要なリモート管理機能やDNS設定が有効になっていないか確認するよう周知しましょう。

UPnP(ユニバーサルプラグアンドプレイ)機能が悪用され、意図せず外部にポートが開放されてしまう事例もあるため、不要な機能はオフにすることが望ましいです。

まとめ

オープンリゾルバは、インターネット全体のセキュリティを脅かす重大な脆弱性の一つです。

悪意のある攻撃者は常に脆弱なサーバーを探しており、一度踏み台にされれば、知らないうちに他者への攻撃に加担してしまうことになります。

管理しているDNSサーバーの設定を今一度見直し、許可されたユーザー以外からのクエリを確実に拒否するよう構成してください。

DNSサーバーの設定、ファイアウォールによるポート制限、そして機器の適切なアップデートという「基本」を徹底することが、オープンリゾルバ対策の鍵となります。

インターネットの健全な運用のために、自組織の資産を適切に管理し、攻撃の踏み台を作らない責任を果たしましょう。