オープンリゾルバとは
オープンリゾルバとは、DNSの名前解決を行うサーバやネットワーク機器などのうち、 不特定のクライアントからのDNS (Domain Name System)の問い合わせについて、 最終的な答えが得られるまで繰り返し問い合わせを行う再帰的な名前解決を行い、 結果を回答するDNSサーバなどのことです。
DNSの問い合わせや応答などの通信は、 主にUDP (User Datagram Protocol)を用いてデータがやりとりされます。 UDPは、通信を行う際に送信元や送信先について確認を行わないため、 通信の処理に必要な計算量や時間が少なくて済む反面、 送信元IPアドレスの偽装が比較的容易なことが特徴として挙げられます。 オープンリゾルバは、そうしたUDPが持つ性質から、 サービス拒否攻撃(DoS; denial of service)の中継点(踏み台)として利用されることがあります。
オープンリゾルバを利用したDoS攻撃は、例えば以下のように行われます。
まず、DoS攻撃を行おうとする攻撃者は、 DNSパケットの送信元IPアドレスを攻撃対象のIPアドレスに偽装し、 DNSパケットをオープンリゾルバとなっているDNSサーバなどへ送ります。 そのDNSパケットを受け取ったオープンリゾルバは、 名前解決を行い回答を送信しようとしますが、 実際にDNSパケットを送信した攻撃者ではなく、 DNSパケットに設定されている偽装されたIPアドレス宛、 すなわち攻撃対象宛に送信してしまいます。
攻撃者がこのようなDNS問い合わせを多数のオープンリゾルバに対して行うことで、 攻撃対象へ大量の回答を集中させることができ、 攻撃対象のネットワークやサーバに対して大きな負荷をかけることが可能になります。
オープンリゾルバは昨今注目を浴びていますが、 その理由は名前解決の問い合わせに関する設定が適切になされていない例があるためです。 例えば、DNSサーバの設定によるもの以外にも、 ブロードバンドルーターやCATVのセットトップボックスなどで、 本来外部からの不特定多数の問い合わせに回答する必要がないことが多い機器にも、 それを受け付ける不必要な初期設定が入っていることがあります。 そのような機器などがオープンリゾルバ状態になり、 それが踏み台などにされてしまう事例が多数見られています。
こうした攻撃は古くから知られており、さまざまな対応が行われてきましたが、 根本的な解決には至りませんでした。そうした中、2013年3月、 spam対策組織のSpamhaus Projectが、 オープンリゾルバを用いた過去最大規模のDoS攻撃にさらされる事象があり、 最近になって再び対策に重点が置かれてきています(*1)(*2)
このようなDoS攻撃の発生を抑えるためには、 不用意なオープンリゾルバ自体を無くすことが最も有効な対策です。 具体的には、DNSの応答機能を持つサーバやブロードバンドルータの場合は不要であれば設定で無効にする、 不特定多数の問い合わせに対して再帰的な名前解決を行う応答をしているかどうか確認し(*3)(*4)(*5)、 問題があれば応答しないようにする、などの方法があります。
(*1) オープンリゾルバ(Open Resolver)に対する注意喚起
https://www.nic.ad.jp/ja/dns/openresolver/
(*2) DNSの再帰的な問い合わせを使ったDDoS攻撃に関する注意喚起
https://www.jpcert.or.jp/at/2013/at130022.html
(*3) オープンリゾルバ確認サイト
http://www.openresolver.jp/
(*4) Open Resolver Project
http://www.openresolverproject.org/
(*5) Test for Open Resolvers
http://dns.measurement-factory.com/cgi-bin/openresolvercheck.pl