2015年6月21日日曜日

オープンリゾルバ注意喚起

オープンリゾルバ(Open Resolver)に対する注意喚起

DNSの不特定からの問い合わせに応答する(*1)、 サーバやネットワーク機器は、オープンリゾルバと呼ばれています。 最近、 適切な対策が施されていないオープンリゾルバが踏み台(*2)として利用され、 国内外のサーバに対する大規模なDDoS攻撃(*3)が行われていることが報告されています。
これを受けて、本来、 オープンリゾルバである必要のないサーバやネットワーク機器を減らし、 踏み台となってしまうことへの対策をとるための活動が行われています。
ご確認と対策をお願いいたします。
(*1) ここではドメイン名の名前解決のために行われる問い合わせを指しています。 この問い合わせを受けた、 DNSのリゾルバと呼ばれるプログラムモジュールは、 複数のネームサーバに問い合わせを行い、 その結果を問い合わせ側に応答する仕組みになっています。
(*2) ここではインターネットを通じた攻撃パケットの、 送信元IPアドレスを詐称した不正な通信のために 攻撃する者によって悪用されるホストのことを意味します。
(*3) 通信サービス等を不能にする分散型の攻撃でDistributed Denial of Serviceの略語です。

対策が必要なオープンリゾルバとは

オープンリゾルバの中には、 デフォルト設定のままであるなどの理由で、 本来はDNSサーバを意図したものではないにも関わらず、 管理者や利用者が気づかないうちにDNSの応答機能が有効になっているものがあります(*4)。
(*4) DNSの問い合わせ応答の仕組みを利用したオンラインの攻撃手法にDNSリフレクション攻撃があります。 DNSリフレクション攻撃はDNSサーバを踏み台として行われます。 以下の"DNSサーバにおける対策"をご覧ください。
オープンリゾルバとなっているサーバやネットワーク機器は、 DDoS攻撃の踏み台になってしまう恐れがあるため、 対策をとることが必要です。
(ご注意)オープンリゾルバの中にはDDoS攻撃の踏み台などに悪用されないように、 対策が取られているものがあります。

DDoS攻撃のために踏み台として悪用された場合の影響

踏み台を利用したDDoS攻撃は、 送信元IPアドレスが踏み台のホストであるため、 そのサーバや機器によって攻撃が行われているように見えてしまいます。 インターネットを経由した不正行為に対しては、 その送信元に連絡を取って停止するように要請されることが多く、 踏み台として海外に対するDDoS攻撃に悪用された場合、 外国語で対応する必要があることが報告されています。

オープンリゾルバに関する対策

はじめに、以下の注意喚起をご参照ください。
次に対策について述べます。以下の3点が挙げられます。
  1. DNSの応答機能が有効になっているソフトウェアにおける対策
    サーバソフトウェア(仮想サーバやルータ製品のオペレーティングシステムを含む)の設定を変更し、オープンリゾルバにならないようにします。
    オペレーティングシステムのパッケージや仮想サーバ、ネットワーク製品のために、デフォルト設定のテンプレートを作成している場合には、そのテンプレートを確認し、配布先でオープンリゾルバにならないようにします。 設定例をAppendix Iに示します。
  2. ネットワーク機器における対策
    まずネットワーク機器自体がオープンリゾルバとなっていないことを確認します。本来は経由するはずのないIPアドレスのパケットをフィルタリングします。
    ブロードバンドルータ、ケーブルテレビのセットトップボックス等、CPE(Customer Premises Equipment)の設定のテンプレートを作成している場合には、そのテンプレートを確認し、配布先でオープンリゾルバにならないようにします。 対策となる設定はBCP38やSource Address Validationと呼ばれています。設定例をAppendix IIに示します。
  3. DNSサーバにおける対策
    DNSサーバの設定を確認し、オープンリゾルバにならないようにします。そのためには、不必要なDNSの再帰問い合わせに応答しないように設定します。問い合わせに対する応答がDDoS攻撃にならないようにするための手法として、Response Rate Limiting in the Domain Name System (DNS RRL) (DNSにおける応答のレート制限) があります。設定例をAppendix IIIに示します。

確認方法

オープンリゾルバかどうかを確認することのできるWebサービスを以下に示します。
(ご注意)多くのオープンリゾルバを探す用途には使えません。 多くのオープンリゾルバを探す疑いのある操作が行われた場合、 セキュリティインシデントとして扱われる可能性があります。 

対策を取られる方へ

  • ソフトウェア設定やネットワーク機器設定のテンプレートを作成されている方
    テンプレートとなる設定にオープンリゾルバとなるものが入ってしまわないよう、 ご確認と対策をお願いいたします。
  • ブロードバンドルータ、セットトップボックス等、CPEの設定のテンプレートを作成されている方
    テンプレートとなる設定にオープンリゾルバとなるものが入ってしまわないよう、 ご確認と対策をお願いいたします。
  • ISPの方
    DNSサーバとルータなどのネットワーク機器の、ご確認と対策をお願いいたします。
  • サーバを管理運用されている方
    サーバが意図せずオープンリゾルバになってしまわないよう、 ご確認と対策をお願いいたします。

Appendix I. DNSの応答機能が有効になっているサーバ、および、DNSキャッシュサーバにおける設定例

問い合わせを許可するIPアドレスを、 自組織のネットワークや顧客のネットワークに制限し、 DDoS攻撃の原因となるような問い合わせに応答しないように設定します。
  • BINDの設定例
    DNSの応答機能が有効になっているサーバ、 およびDNSキャッシュサーバの場合 (named.conf):
    acl "trusted" {
            192.168.0.0/16;
            localhost;
    }; // 問い合わせを許可するIPアドレスを指定する。
    
    options {
            recursion yes;
            allow-recursion { trusted; };
    };
                    
  • Unboundの設定例
    DNSの応答機能が有効になっているサーバ (unbound.conf):
    server:
            access-control: localhost allow
            access-control: 192.168.0.0/16 allow
            ## 問い合わせを許可するIPアドレスを指定する。
                    

Appendix II. ネットワーク機器の設定例

ネットワーク機器のインターネット側のインターフェースにuRPF (unicast reverse path forwarding)を設定します。
  • Cisco製ルータの設定例
    ○LooseモードのuRPFの設定
    (ご注意)設定によってルータの負荷が上がるなどの影響がある場合があります。
    Router(config)#ip cef enable
    Router(config)#interface <インタフェース名> <インタフェース番号>
    Router(config-if)# ip verify unicast source reachable-via any
    Router(config-if)# end
                    
  • Juniper製ルータの設定例
    ○LooseモードのuRPFの設定
    (ご注意)設定によってルータの負荷が上がるなどの影響がある場合があります。
    user@juniper# edit interface
    [edit interfaces]
    user@juniper# set <インタフェース名> unit <unit番号> family inet rpf-check mode loose
                    

Appendix III. DNSサーバの設定例

対策を行うDNSサーバがDNSの名前解決のために設置されたDNSキャッシュ サーバである場合には、Appendix Iの設定を行います。
  • BINDの設定例
    ○権威DNSサーバの場合 (named.conf):
    options {
            fetch-glue no; // BIND8の場合に記述する
            recursion no; // 再帰問い合わせに応答しない。
    };
                      
    ○DNSキャッシュサーバと権威DNSサーバが同一である場合 (named.conf):
    acl "trusted" {
            192.168.0.0/16; // 問い合わせを許可するIPアドレスを指定する。
            localhost;
    };
    
    options {
            fetch-glue no; // BIND8の場合に記述する
            recursion yes; // 再帰問い合わせに応答する。
            allow-query { any; };
            allow-recursion { trusted; };
            allow-query-cache { trusted; };
    };
    
    zone "foo.jp" {
            type master;
            file "db.foo";
    };
                      
    ○BIND9におけるDNS RRLの設定例 (named.conf):
    Response Rate Limiting in The Domain Name System (DNS RRL)にあるパッチの適用が必要です。
    rate-limit {
        responses-per-second 5;
        window 5;
    };
                      
  • Unboundの設定例
    ○アクセス制御の設定例(unbound.conf):
    server:
            access-control: localhost allow
            access-control: 192.168.0.0/16 allow
            ## 問い合わせを許可するIPアドレスを指定する。
                     

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。