オープンリゾルバは何が危険なのかさっぱりわからないから調べてみた

グーグルさんで調べると、オープンリゾルバは危険だから使うなという記事が山ほどでてきます。

しかし、何が危険なのか全くわからないものが多いので、僕なりにまとめてみました。

※オープンリゾルバが問題になったのが数年前のため内容としては古いですが、これからDNSサーバーを設置してみようと思う人は知っておくべき内容だと思います。

オープンリゾルバとはなに?

オープンリゾルバとは誰でも使用できる、DNSフルサービスリゾルバのこと。

DNSフルサービスリゾルバは、パソコンやスマホからドメイン名を受け取って、IPアドレス変換(名前解決という)に必要な処理をおこなってくれるDNSサーバーです。

名前解決は、デフォルトではISP(インターネットサービスプロバイダ)が用意したDNSフルサービスリゾルバが使用されます。
基本的に、ISPのリゾルバは契約者のみが使用できます。

しかしオープンリゾルバを利用するには、何の資格もいらなため、誰でも使用できるのです。

いわゆるパブリックDNSもオープンリゾルバですね。

オープンリゾルバの問題点

JPドメインの管理を行っている株式会社日本レジストリサービス(JPRS)によると、オープンリゾルバーには大きな問題があるようです。

オープンリゾルバーは、大規模なDDoS攻撃への加担など、悪意のある第三者に意図せず利用されるリスクがあります。

どんなリスクなのか今一つピンとこないので、調べてみました。

DNSキャッシュポイズニング

ポイズニングとは毒で汚染すること。
DNSのキャッシュを偽の情報に置き換えてしまう攻撃方法です。

キャッシュが汚染されるとどうなる?

DNSのキャッシュとは、ドメインとIPアドレスの対応を一時的に保管したものです。
キャッシュが汚染されると、IPアドレスが本来の元と異なるものに置き換わってしまいます。

例えばaffi-sapo.comのIPアドレスが『111.11.11.11』だとします。
しかし悪い人が、affi-sapo.comとそっくりな詐欺サイトを『222.22.22.2』で作ってしまいました。

詐欺サイト

悪い人は自分が作った詐欺サイトを多くの人に見てもらいたいので、DNSキャッシュポイズニング攻撃をおこない、DNSのキャッシュ内のaffi-sapo.comの内容を『222.22.22.2』に置き換えることに成功しました。

DNSキャッシュポイズニング攻撃

以降、同じDNSサーバーを使用している人はみんな、詐欺サイトを見ることになります。

DNSキャッシュポイズニング攻撃 結果

怖いですね。

DNSキャッシュポイズニングの手法

DNSサーバーは、権威サーバーに0から65535の範囲でランダムな数値(ID)を添えて問い合わせをおこないます。

権威サーバーは、問い合わせの答えと、IDを一緒に返信します。

DNSサーバーは、送信元のIPアドレスIDを見て、問い合わせの答えと判断します。

DNSサーバー 権威サーバー やり取り

このときの問題が次の二つ。

反復問い合わせの問題点
  1. 送信元のIPアドレスは偽装できる
    DNSはサーバー間の通信プロトコルにUDPとTCPを使用する。
    ※通信データが少なくてすむことから、主にUDPが使用される。
    UDPはTCPと比べて、送信元のチェックが甘いため、IPアドレスの偽装が容易。
  2. 65536分の一の確率でIDが一致する
    数打てば当たる

※DNSサーバー(フルサービスリゾルバ)から権威サーバーへの問い合わせを反復問い合わせといいます

この問題点を利用した攻撃が、DNSキャッシュポイズニングです。

DNSキャッシュポイズニングの手口

①攻撃者がオープンリゾルバになっているDNSサーバーで、名前解決をおこなう。

②DNSサーバーが権威サーバーに問い合わせをおこなう。

③権威サーバーから応答が返るまえに、攻撃者が権威サーバーからの応答を偽装したデータをDNSサーバーに送り付ける。

④IDが一致すれば、攻撃成功

DNSキャッシュポイズニング

IDは65536通りありますが、権威サーバーからの応答が返ってくるまで何度でも送ることができるので、成功する確率が高いのも大きな問題点です。

カミンスキー・アタック

名前解決したドメインはキャッシュに保存され、TTLという有効期限までキャッシュのデータを使用します。

DNSキャッシュ期限内はキャッシュから。期限切れは権威サーバーから

そのためDNSキャッシュポイズニングは、有効期限が切れたタイミングのみ実施できます。
タイミングがとてもシビアな攻撃ですね。

しかしセキュリティ研究者のダン・カミンスキーさんが考案した方法なら、いつでも攻撃が可能なんだそうです。

ドメインの名前解決はルートサーバーから順に、IPアドレスを知っているならIPアドレスを、知らなければ知っていそうな権威サーバーを返します。
そしてIPアドレスを取得できるまで、返信されてきた権威サーバーに対して問い合わせをします。

カミンスキー・アタックは、この仕組みを利用します。

カミンスキー・アタックの手口

※affi-sapo.comを乗っ取りたい場合

①攻撃者はオープンリゾルバになっているDNSサーバーに対して、適当なサブドメイン.affi-sapo.comの名前解決をおこなう。

②適当なサブドメイン.affi-sapo.comは、キャッシュに存在しないので、DNSサーバーは権威サーバーに問い合わせをおこなう。

③権威サーバーから応答が返るまえに、IPを知っている権威サーバーが「affi-sapo.com」そのIPが「222.22.22.2」という情報を偽装して、DNSサーバーに送り付ける。

④IDが一致すれば、攻撃成功

カミンスキー・アタックの前に、攻撃者は「222.22.22.2」のサーバーに権威サーバーを設置して、適当なサブドメイン.affi-sapo.comの名前解決をおこなえるようにしておきます。

この攻撃で問題なのが、一部のDNSサーバーでキャッシュの有無にかかわらず経路上のドメインを上書きしてしまうこと。
今回の例では、affi-sapo.comのIPが「222.22.22.2」に書き換えられてしまう可能性があるのです。

また、サブドメインを変更することで、何度でも攻撃できるのも問題点です。

DNSリフレクター攻撃

何それかっこいい。
僕もやってみたいDNSリフレクター攻撃。
いやいや、やっちゃダメ。

攻撃されるのはオープンリゾルバではなく、特定のIPアドレス。
オープンリゾルバは、攻撃の踏み台として利用される。

原理は簡単。

自分のIPを偽装して、攻撃対象のIPから問い合わせが来たように見せかける。
すると、問い合わせ結果が攻撃対象に返信される。

DNSリフレクター攻撃

複数のオープンリゾルバを経由して、攻撃対象に大量のデータを送ることでDDoS攻撃が成立する。

しかも攻撃したのはオープンリゾルバのIPになり、攻撃者の特定が難しいのも問題である。

オープンリゾルバは基本的に悪

オープンリゾルバの対策として挙げられるのが、アクセス元の端末やIPを固定にすること。
つまり、『オープンリゾルバやめろ』である。

それ対策じゃないよねと思うけれど、DDoS攻撃の踏み台になるなどのデメリットを考えると、一律でやめろというのも頷けます。

VPSなどをレンタルすれば個人で簡単にDNSサーバーを設置できます。
しかし安易な気持ちで、設置するのはやめた方がいいですね。

パブリックDNSも悪?

パブリックDNSとは、だれでも利用できるDNSフルサービスリゾルバです。
つまりオープンリゾルバです。

ではパブリックDNSも悪なのでしょうか。

パブリックDNSは、オープンリゾルバの問題点について対策されたDNSサーバーです。
そのため、今のところ存在していても問題ないとされています。

しかし今誰も思いつかない攻撃方法を、今対策することはできません。
あるとき悪意ある攻撃者が、天才的なひらめきで全く新しい攻撃方法を思いついたら、その攻撃に対処することができないのです。

いつ爆発するかわからない爆弾ですね。

ブロードバンドルーターもオープンリゾルバの可能性あり

ブロードバンドルーターには、DNSサーバとしての機能を持っているものがあります。
これはローカル環境側からの問い合わせを目的としたものですが、古いタイプのブロードバンドルーターは、インターネット側からの名前解決要求を処理してしまっていたようです。

つまりオープンリゾルバとして機能していたということです。

古い機器を使い続けている人は、一度確認してみたほうがいいかもしれません。

今使用しているDNSサーバーがオープンリゾルバかどうかの確認

今使用しているDNSサーバーやブロードバンドルーターが、オープンリゾルバかどうか確認してみましょう。

次のWebサイトにアクセスしてみてください。

オープンリゾルバ確認サイト

オープンリゾルバ確認サイト

オープンリゾルバを確認するをクリック。

同意確認画面が表示されるので、同意にチェックして、確認ボタンを押す。

オープンリゾルバ確認サイトの仕組み

1.内部で問い合わせ用のサブドメインが用意され、名前解決が行われます。
2.パソコンやスマホのインターネット側の出口(ブロードバンドルーター)のIPアドレスに対して、オープンリゾルバのチェックをおこないます。

※動きを見た上での考察のため、実際は異なる処理をしているかもしれません。

次のように、『オープンリゾルバではありません』と表示されれば問題はありません。

オープンリゾルバ確認サイト 結果

『オープンリゾルバです』と表示された場合、次のリンク先の「III. 対策」を参考にして対処しましょう。
オープンリゾルバ確認サイト公開のお知らせ