ルータ : Cisco 7500 シリーズ ルータ

ネットワークの入口で「Code Red」ワームをブロックするための NBAR および ACL の使用方法

2004 年 9 月 14 日 - ライター翻訳版
その他のバージョン: PDFpdf | 機械翻訳版 (2013 年 8 月 21 日) | 英語版 (2006 年 8 月 2 日) | フィードバック

目次

概要
前提条件
      要件
      使用するコンポーネント
      表記法
「Code Red」ワームのブロック方法
サポートするプラットフォーム
IIS の Web ログでの感染攻撃の検出
IOS のクラスベース マーキング機能を使用した「Code Red」のハッキングの着信のマーク
      方法 A: ACL の使用
      方法 B: ポリシーベース ルーティング(PBR)の使用
      方法 C: クラスベース ポリシング
NBAR の制限
既知の問題
関連するシスコ サポート コミュニティ ディスカッション
関連情報

概要

このアドバイザリでは、「Code Red」ワームがネットワークに着信した時点で、Cisco ルータで実行されている Cisco IOS(R) ソフトウェアの Network-Based Application Recognition(NBAR)と Access Control List(ACL)を使用してブロックする方法について説明します。 このソリューションは、Microsoft 製 IIS サーバ用推奨パッチと一緒に使用する必要があります。

注: この方法は、Cisco 1600 シリーズ ルータでは実行できません。

前提条件

要件

この文書は、次の項目に関する十分な知識のある読者を対象としています。

使用するコンポーネント

この文書は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。 この文書に記載している設定は、Cisco IOS バージョン 12.2(24a) を実行している Cisco 3640 でテストしたものです。

この文書で紹介する情報は、特定のラボ環境にあるデバイスを使用して作成されました。 この文書で使用するすべてのデバイスは、クリアな状態(デフォルト)から設定作業を始めています。 実稼動中のネットワークで作業をしている場合、実際にコマンドを使用する前に、その潜在的な影響について理解しておく必要があります。

表記法

文書表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。

「Code Red」ワームのブロック方法

「Code Red」を駆除するために最初に行うことは、Microsoft からパッチを入手して適用することです(「方法 A: ACL の使用」のセクションにあるリンクを参照してください)。 これによって脆弱なシステムが保護され、感染したシステムからワームが取り除かれます。 しかし、サーバにパッチを適用しても、ワームによってサーバが感染されるのを防ぐだけであり、HTTP GET リクエストによるサーバの攻撃を阻止するものではありません。 依然として、大量のワームの感染の試みによってサーバが攻撃される可能性は残ります。

このアドバイザリに詳述されているソリューションは、Microsoft パッチと一緒に使って「Code Red」HTTP GET リクエストをネットワーク入口でブロックする設計になっています。

このソリューションは感染をブロックしようとしますが、大量のキャッシュ エントリ、隣接関係、および NAT/PAT エントリの蓄積によって引き起こされた問題を解決しません。なぜならば、HTTP GET リクエストのコンテンツを分析する唯一の方法は、TCP 接続の確立に依存するからです。 また、この手順は、ネットワークのスキャンから守るのには役立ちません。 ただし、マシンが行う、外部ネットワークからの侵入に対するサイトの保護、またはアタックの数の低減を行います。 インバウンドフィルタリングとアウトバウンドフィルタリングの組み合せで、感染したクライアントによって「Code Red」ワームが全世界のインターネットに拡散するのを防ぎます。

サポートするプラットフォーム

この文書で説明するソリューションには、Cisco IOS ソフトウェアのクラスベース マーキング機能が必要です。 特に、HTTP URL の一部に対するマッチング機能では、NBAR 内の HTTP サブポート クラシフィケーション機能を使用します。 サポートするプラットフォームと、最低限必要な Cisco IOS ソフトウェアについては、次のとおりです。

プラットフォーム

最低限の Cisco IOS ソフトウェア

7200

12.1(5)T

7100

12.1(5)T

3745

12.2(8)T

3725

12.2(8)T

3660

12.1(5)T

3640

12.1(5)T

3620

12.1(5)T

2600

12.1(5)T

1700

12.2(2)T

注:NBAR を使用するには、Cisco Express Forwarding(CEF; Cisco エクスプレス転送)を有効にする必要があります。 

次のプラットフォームでは、クラスベース マーキング機能および Distributed NBAR(DNBAR)も利用可能です。

プラットフォーム

最低限の Cisco IOS ソフトウェア

7500

12.1(6)E

FlexWAN

12.1(6)E

IIS の Web ログでの感染攻撃の検出

感染を試みる時は最初に大きな HTTP GET リクエストをターゲットの IIS サーバに送ります。 オリジナルの「Code Red」の形跡は、次に示したとおりです。

2001-08-04 16:32:23 10.101.17.216 - 10.1.1.75 80 GET /default.ida
  NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
  NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
  NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
  NNNNN%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u
  7801%u9090%u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a 403

「Code Red」II の形跡は、次に示したとおりです。

2001-08-04 15:57:35 10.7.35.92 - 10.1.1.75 80 GET /default.ida XXXXXXXXXXX
  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%u9090
  %u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%
  u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a 403 -

GET リクエストは、必ず .ida 拡張子を持ったファイルを探すことに注意してください。 これはあらゆる感染攻撃の中で共通の文字列であり、したがって、IOS 内のクラスベース マーキング機能でマッチング基準として使われます。 GET リクエストの残りの部分は、必ずしも一貫していません。なぜならば、これは単にバッファをオーバーフローさせようとしているだけだからです。 これは上の 2 つのエントリを比較すればわかります。

これら 2 つのシグニチャの違いは、CodeRed.v3 または CodeRed.C と呼ばれる「Code Red」ワームの新しい系統によるものと報告 leavingcisco.com されています。オリジナルの「Code Red」の系統では、GET リクエストに「NNNNNNNN」をいう文字列が含まれますが、新しい系統では「XXXXXXXX」になっています。 詳細については、「Symantec Advisoryleavingcisco.com」を参照してください。

2001 年 8 月 6 日 6:24PM EDT 時点で、新しい形跡を記録しました。 これは eEye vulnerability scanner leavingcisco.com の実行後に残る形跡と判明しています。

2001-08-06 22:24:02 10.30.203.202 - 10.1.1.9 80 GET /x.ida AAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=X 403 HTTP/1.1 -

このアドバイザリに記載されている「Code Red」をブロックするためのテクニックは、これらのスキャン攻撃もブロックできます。これは次の項に示されるクラス マップ定義を強化するだけです。

IOS のクラスベース マーキング機能を使用した「Code Red」のハッキングの着信のマーク

「Code Red」ワームをブロックするには、以下で説明する 3 つの方法のいずれかを使用します。 これら 3 つの方法は、いずれも Cisco IOS MQC 機能を使用して悪意のあるトラフィックを区別します。 その後、そのトラフィックは、以下で説明する方法で廃棄されます。

方法 A: ACL の使用

この方法では、出力インターフェイスで ACL を使用して、「Code Red」パケットとマークされたものを廃棄します。 この方法の手順の説明には、次のネットワーク ダイアグラムを使用します。

nbar_acl_codered1.gif

この方法は、次の手順で設定します。

  1. 「Code Red」ハッキングの着信を、Cisco IOS ソフトウェアのクラスベース マーキング機能を使用して識別します。次のように設定します。

    Router(config)#class-map match-any http-hacks
      Router(config-cmap)#match protocol http url "*default.ida*"
      Router(config-cmap)#match protocol http url "*cmd.exe*"
      Router(config-cmap)#match protocol http url "*root.exe*"
      

    上記のクラス マップは、HTTP URL の内部を調べ、指定された文字列を照合します。 「Code Red」の default.ida の他に、他のファイル名を入れていることに注意してください。 この手法は、Sadmind ウィルスなどの同様のハック攻撃のブロックにも使用できます。これについては次の文書で説明されています。

  2. ポリシーを作成し、set コマンドを使用して、「Code Red」ハッキングの着信をポリシー マップを使用してマークします。 この文書では、DSCP 値の 1(10 進数)を使用しています。これは他のネットワーク トラフィックがこの値を搬送することはまずないためです。

    ここでは、「Code Red」ハッキングの着信を「mark-inbound-http-hacks」という名前のポリシー マップを使用してマークしています。

    Router(config)#policy-map mark-inbound-http-hacks
      Router(config-pmap)#class http-hacks
      Router(config-pmap-c)#set ip dscp 1
      
  3. このポリシーを受信ポリシーとして入力インターフェイスに適用し、「Code Red」パケットの着信をマークします。

    Router(config)#interface serial 0/0
      Router(config-if)#service-policy input mark-inbound-http-hacks
      
  4. サービス ポリシーとして設定した DSCP 値 1 に対応する ACL を設定します。

    Router(config)#access-list 105 deny ip any any dscp 1 
      Router(config)#access-list 105 permit ip any any
      

    注: Cisco IOS ソフトウェア リリース 12.2(11) と 12.2(11)T では、NBAR と一緒に使用するクラス マップで ACL を定義する際に log キーワードをサポートするようになりました(CSCdv48172)。 これより前のリリースを使用している場合は、ACL に対して log キーワードを使用しないようにしてください。 このキーワードを使用すると、すべてのパケットが CEF スイッチングではなくプロセス交換されるようになり、NBAR は CEF を必要とするために動作しなくなります。

  5. ターゲットの Web サーバに接続されている出力インターフェイスに ACL を適用します。

    Router(config)#interface ethernet 0/1
      Router(config-if)#ip access-group 105 out
      
  6. ソリューションが期待どおりに動作していることを確認します。 show access-list コマンドを実行し、deny 行の「matches」の数が増えていることを確認します。

    Router#show access-list 105
      Extended IP access list 105
       deny ip any any dscp 1 log (2406 matches)
       permit ip any any (731764 matches) 

    この設定手順の中で、インターフェイスレベル コマンドの no ip unreachable を使用して IP unreachable の送信を無効することにより、ルータで過剰なリソースが消費されないようにできます。

    この方法は、方法 B のセクションで説明するように、DSCP=1 のトラフィックを Null 0 にポリシールートできる場合には推奨できません。

方法 B: ポリシーベース ルーティング(PBR)の使用

この方法では、ポリシーベースのルーティングを使用して、「Code Red」とマークされたパケットをブロックします。 すでに方法 A または方法 C が設定されている場合は、この方法でコマンドを実行する必要はありません。

この方法を実装する手順は次のとおりです。

nbar_acl_codered1.gif

  1. トラフィックを識別し、マークします。 方法 A で説明した class-map コマンドと policy-map コマンドを使用します。

  2. service-policy コマンドを使用して、このポリシーを受信ポリシーとして入力インターフェイスに適用し、「Code Red」パケットの着信をマークします。 方法 A を参照してください。

  3. 「Code Red」とマークされたパケットに対応する拡張 IP ACL を作成します。

    Router(config)#access-list 106 permit ip any any dscp 1
      
  4. route-map コマンドを使用して、ルーティング ポリシーを作成します。

    Router(config)#route-map null_policy_route 10 
      Router(config-route-map)#match ip address 106 
      Router(config-route-map)#set interface Null0 
  5. route-map を入力インターフェイスに適用します。

    Router(config)#interface serial 0/0
      Router(config-if)#ip policy route-map null_policy_route
      
  6. show access-list コマンドを使用して、ソリューションが期待どおりに動作していることを確認します。 発信 ACL を使用しており、さらに ACL のロギングを有効にしている場合は、次のように show log コマンドを使用することもできます。

    Router#show access-list 106
      Extended IP access list 106
       permit ip any any dscp 1 (1506 matches)
      Router#show log 
      Aug 4 13:25:20: %SEC-6-IPACCESSLOGP: list 105 denied tcp A.B.C.D.(0) -> 10.1.1.75(0), 6 packets
      Aug 4 13:26:32: %SEC-6-IPACCESSLOGP: list 105 denied tcp A.B.C.D.(0) -> 10.1.1.75(0), 6 packets 

    各出力インターフェイスで出力 ACL を必要とする代わりに、ルータの入力側インターフェイスで破棄決定を行うことができます。 また、no ip unreachables コマンドを使用して、IP unreachable メッセージが送信されないようにすることを推奨します。

方法 C: クラスベース ポリシング

この方法は PBR や出力 ACL に依存しないため、一般的に見て最も拡張性が高い方法と言えます。

  1. 方法 A で説明した class-map コマンドを使用してトラフィックを区分します。

  2. policy-map コマンドを使用してポリシーを作成し、police コマンドを使用してこのトラフィックを廃棄する処理を指定します。

    Router(config)#policy-map drop-inbound-http-hacks
      Router(config-pmap)#class http-hacks
      Router(config-pmap-c)#police 1000000 31250 31250 conform-action drop exceed-action drop violate-action drop
      
  3. service-policy コマンドを使用して、このポリシーを受信ポリシーとして入力インターフェイスに適用し、「Code Red」パケットを廃棄するようにします。

    Router(config)#interface serial 0/0
      Router(config-if)#service-policy input drop-inbound-http-hacks
      
  4. show policy-map interface コマンドを使用して、ソリューションが期待どおりに動作していることを確認します。 クラスと個々の照合基準に対応する値が増えていることを確認します。

    Router#show policy-map interface serial 0/0
      Serial0/0
        Service-policy input: drop-inbound-http-hacks
          Class-map: http-hacks (match-any)
            5 packets, 300 bytes
            5 minute offered rate 0 bps, drop rate 0 bps
            Match: protocol http url "*default.ida*"
              5 packets, 300 bytes
              5 minute rate 0 bps
            Match: protocol http url "*cmd.exe*"
              0 packets, 0 bytes
              5 minute rate 0 bps
            Match: protocol http url "*root.exe*"
              0 packets, 0 bytes
              5 minute rate 0 bps
            police:
              1000000 bps, 31250 limit, 31250 extended limit
              conformed 5 packets, 300 bytes; action: drop
              exceeded 0 packets, 0 bytes; action: drop
              violated 0 packets, 0 bytes; action: drop
              conformed 0 bps, exceed 0 bps, violate 0 bps
          Class-map: class-default (match-any)
            5 packets, 300 bytes
            5 minute offered rate 0 bps, drop rate 0 bps
            Match: any 

NBAR の制限

この文書で説明した方法と一緒に NBAR を使用する場合は、NBAR では次の機能がサポートされていないことに注意してください。

  • 24 を超える同時 URL、HOST または MIME タイプのマッチ

  • URL 中の先頭から 400 バイトを超えた文字のマッチング

  • 非 IP トラフィック

  • マルチキャストおよびその他の非 CEF スイッチング モード

  • フラグメント化されたパケット

  • HTTP パイプライン リクエスト

  • セキュア HTTP の URL/HOST/MIME/ 分類

  • ステートフル プロトコルによる非対称フロー

  • NBAR を実行中のルータから発信されるパケット、または NBAR を実行中のルータが受信するパケット

次の論理インターフェイス上では NBAR を設定できません。

  • Fast EtherChannel

  • トンネリングまたは暗号化を使用するインターフェイス

  • VLAN

  • Dialer インターフェイス

  • Multilink PPP

注: Cisco IOS リリース 12.1(13)E から VLAN に対して NBAR を設定できるようになりましたが、ソフトウェアによるスイッチング パスでだけサポートされています。

NBAR は、トンネリングや暗号化が使用されている WAN リンクでの出力トラフィックの識別には使用できません。そのため、LAN インターフェイスなどのルータ上の他のインターフェイスに適用して、トラフィックの入力分類を実行した後に、出力のために WAN リンクへスイッチされるようにします。

NBAR の詳細については、この文書の「関連情報」のセクションにあるリンクを参照してください。

既知の問題

「Code Red」ワームは、Microsoft Indexing Service を使用する IIS 内のパッチ修正していないサーバ上で脆弱性を利用します。 インターネット データ管理スクリプト ファイル(default.ida)は、すべての IIS サーバ上にデフォルトでインストールされます。 「Code Red」は、不正利用可能なファイルが存在することに依存しています。 ほとんどのシステムはこのサービスを使用しないため、このアドバイザリに記載されているブロッキング方式は有効です。 しかし、IIS 内でこのサービスを使用するサーバが存在する場合があります。 この場合、ここで提案したブロッキング方式が IIS サーバに対する正当なリクエストをブロックする可能性があります。


関連するシスコ サポート コミュニティ ディスカッション

シスコ サポート コミュニティは、どなたでも投稿や回答ができる情報交換スペースです。


関連情報


Document ID: 27842