site_admin のすべての投稿

WannaCry攻撃の監視・警告

2017年5月、WannaCryは脅威的な感染スピードで200カ国以上のコンピュータが150カ国に感染しました。(5月18日現在)
WannaCryは米国国家安全保障局(NSA)によって開発され、ユーザーシステムに浸透している「EternalBlue」と呼ばれるMicrosoft Server Message Block 1.0 (SMBv1) の脆弱性を標的にしています。

本稿では、GenieATMが 世界的に最大規模のサービスプロバイダーでWannaCry攻撃を効果的に監視し、警告するのを支援した事例を紹介いたします。

WannaCryのネットワーク特性

WannaCryは、SMBの脆弱性を悪用してRPC攻撃を行うランサムウェアです。

通常、ランサムウェアはWindows NetBIOSの名前解決とSMBが使用するポート(※1)を攻撃します。

WannaCryは、脆弱なポートへの接続が成功するとシステムへの感染と暗号化を進めます。
さらに、サブネットワーク(/24)をスキャンし、他の脆弱なシステムを探します。

そのため、WannaCryが感染活動をしている間、ネットワーク上でこれらのポートへの大量なトラフィックが確認されます。

※1:135/tcp, 137/tcp, 139/tcp, 455/tcp, 137/udp, 138/udp

GenieATMの監視と警告

GenieATMは、リアルタイムなトラフィック分析とセキュリティ保護を提供するように設計されたフローベースのトラフィック分析ソリューションです。

このシステムには、リアルタイムのプロファイラが搭載されており、トラフィックの動作を分析します。
疑わしいトラフィックが検出されると、GenieATMは組み込みシグネチャと異常データベースを相互に照合し、タイムリーにネットワークオペレータに警告します。

GenieATMは、標準のままでネットワークインフラストラクチャ全体からWannaCryのような攻撃トラフィックを監視できます。

さらにGenieATMは、通常のトラフィックレートから逸脱したSMBトラフィックを詳細に監視・警告することもできます。
GenieATMはWannaCryの感染活動によるトラフィックについて完全な属性レポート(※2)を提供し、ユーザーに攻撃の拡散に関する洞察を提供します。
これにより、WannaCry攻撃を正しく防御することが可能になります。

※2:属性レポート

WannaCryが攻撃するポートに関して
・プロトコル
・送信元/先IPアドレス
・送信元/先ポート
・送信元/先インターフェス
などを組み合わせて任意のレポートが可能です。
これにより攻撃トラフィックの多いポートや攻撃・被害ホストを容易に把握することができます。

世界的に最大規模のサービスプロバイダーでは

GenieATMを使用していたため、WannaCryの活動がはじまったとき、WannaCryのネットワーク特性の通信ポート上のトラフィック異常を検知していました。
これらサービスプロバイダでは、WannaCryがネットワーク上でピークに達していた頃には、TCPポート445のトラフィックは、通常のトラフィックレートの3倍~4倍にまで増加していました。

WannaCry攻撃を詳細に監視するためにGenieATMで属性レポートを使用し、攻撃・被害ホストの特定および警告を行うように構成しました。
これにより、WannaCry攻撃は政府機関、大学、データーセンター、データセンターネットワークソリューション(DCN)など多岐に渡っていることが確認されました。
また、攻撃・被害ホストの特定により攻撃を正しく防御できました。

WannaCry攻撃を詳細に監視するための属性レポートの設定例

前述のサービスプロバイダーがWannaCry攻撃を監視したときに使用した属性レポートの設定方法を以下に記載します。

1.アプリケーションシグネチャの追加

[ システム管理 > ネットワーク > アプリケーション ]にて”アプリケーションの追加”を行う。

WannaCryが攻撃に使用するポートを登録する。(例では135番, 137番, 138番, 139番, 455番をUDP/TCPともに登録している)

2. 属性レポートを作成する

[ システム管理 > ネットワーク > フィルタ ]の”フィルタ”タブから”追加”する。

例では、ホームネットワークからインターネットに出ていくWannaCryの攻撃(※3)について

  • 送信元IPv4→送信先IPv4・送信先プロトコル/ポート
  • 送信先IPアドレス・出力インターフェース

の属性レポートを生成する。

GenieATMでは新しく定義した属性レポートを過去(※4)に遡ってレポート作成する”レポート再構成”機能があります。

”レポート再構成”により新しい観点(属性)や条件(ファクタ)で事象(WannaCryアウトブレーク時など)を解析しなおすことが可能です。

※3: ホームネットワークからインターネットに出ていくWannaCryの攻撃は、

  • 「スコープ: 境界 “Internet Boundary”」にて境界I/F
  • “表記(ファクタ)”
    • 「Src. IP=HOME」にてホーム→インターネット
    • 「Dst. App.=WannaCry.attack」にてWannaCryが攻撃するポート
      • 1.で定義したアプリケーションシグネチャ

を特定している。

※4: データを保持している期間分はレポートの再構成が可能

詳しくは レポート再構成時のRawdata存在判定 を参照

まとめ

今回のWannaCryの攻撃からGenieATMがお客様のネットワークインフラストラクチャを保護できたことからも、WannaCryのような破壊的な危機に備えて、常にネットワークの監視を行うことは非常に重要です。

tcpdump

GenieATMのネットワーク・インターフェースが送受信しているパケットをキャプチャします。

書式

tcpdump
[-A | -x | -X] [-c <packet count>] [-i <interface>] [-n] [-v | -vv | -vvv] <expr>

主な追加パラメータ

キーワード 説明
-A | -x | -X -A: アスキー文字として表示
-x: 16進数で表示
-X: 16進数とアスキー文字で表示
(指定なし): パケットの概要のみ表示
-c <count> 受信するパケット数を指定。省略するとCtrl+Cで停止されるまで継続
-i <interface> パケットキャプチャの対象インターフェースを指定。省略するとeth0
-n IPアドレスやポート番号を名前に解決せず,数値のまま表示。
-v | -vv | -vvv -v: パケットの詳細を表示
-vv: さらに詳細を表示
-vvv: もっと詳細を表示
<expr> キャプチャするパケットの条件

構造

<expr> := {<expr> and <expr> | <expr> or <expr> | not <expr>
| \(<expr>\)}
※ 括弧以外,条件の評価は単純に左から右に行わる。したがって,A and B or C and Dは(((A and B) or C) and D)と評価される。

表記

<expr> := {{src | dst | [src | dst] host} <ip address>
| [src | dst] net <ip prefix>
| [tcp | udp] [src | dst] port <port no>
| ip | ipv6 | arp | icmp | icmp6 | tcp | udp}
※ すべてのパラメータを確認するにはtcpdump 4.1.1のドキュメントを参照してください。
※ 明示的にsrcdstを指定しない場合,送信元,送信先のいずれかが条件に一致すれば表示される。

デフォルト設定

なし

コマンドモード

Debug Mode

説明

  • GenieATMが送受信したパケットのうちパラメータで指定した条件に一致するものを指定したフォーマットで表示またはファイル出力します。
  • パラメータはtcpdumpコマンドを入力した後
    Please input tcpdump parameters and press return

    が表示されてから入力します。

  • パラメータで受信件数を指定した場合は,その件数を表示すると終了します。それ以外の場合はCtrl+Cで停止するまで表示し続けます。

注意事項

  • 内部的にはtcpdumpのバージョン4.1.1が動作します。新しいバージョンのtcpdumpとは動作が異なる可能性があります。
  • tcpdumpコマンドは,GenieATMのfirewallによってブロックされている受信パケットも表示します。GenieATMが応答していない場合などはaccess groupコマンドやfirewall enableコマンドの設定も確認してください。

実行例

# debugmode
(debug)# tcpdump
Please input tcpdump parameters and press return
-c 30 port 179 or host 172.16.2.10
Do you want to add "more" command behind the tcpdump
parameters to prevent terminal session crashed?(Y/N) n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
16:42:52.441112 IP 172.16.2.10.29239 > DEMO-GenieATM6000.9996: UDP, length 1464
16:42:52.720919 IP 172.16.2.10.49459 > DEMO-GenieATM6000.9996: UDP, length 1464
16:42:52.780928 IP 172.16.2.10.35397 > DEMO-GenieATM6000.9996: UDP, length 1464
16:42:52.920193 IP 172.16.2.92.34218 > 172.16.3.100.bgp: Flags [S], seq 3848185622, win 29200, options [mss 1460,sackOK,TS val 205468085 ecr 0,nop,wscale 8], length 0
16:42:52.950870 IP 172.16.2.10.43922 > DEMO-GenieATM6000.9996: UDP, length 1464
   :
 (中略)
   :
16:42:54.273145 IP 172.16.2.10.15727 > DEMO-GenieATM6000.9996: UDP, length 1428
16:42:54.276194 IP DEMO-GenieATM6000.38931 > 172.16.3.95.bgp: Flags [S], seq 1349508613, win 29200, options [mss 1460,sackOK,TS val 205468424 ecr 0,nop,wscale 8], length 0
16:42:54.445617 IP 172.16.2.10.45356 > DEMO-GenieATM6000.9996: UDP, length 1428
16:42:54.595574 IP 172.16.2.10.62498 > DEMO-GenieATM6000.9996: UDP, length 1428
16:42:54.675594 IP 172.16.2.10.43301 > DEMO-GenieATM6000.9996: UDP, length 1428
16:42:54.753158 IP 172.16.2.10.14472 > DEMO-GenieATM6000.9996: UDP, length 1428
16:42:54.773100 IP 172.16.2.10.41236 > DEMO-GenieATM6000.9996: UDP, length 1428
16:42:54.825670 IP 172.16.2.10.59150 > DEMO-GenieATM6000.9996: UDP, length 1428
30 packets captured
31 packets received by filter
0 packets dropped by kernel
(debug)# 
(debug)# tcpdump
Please input tcpdump parameters and press return
-c 1 -X port 6343
Do you want to add "more" command behind the tcpdump
parameters to prevent terminal session crashed?(Y/N) n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
16:46:55.083399 IP 172.16.2.224.8888 > DEMO-GenieATM6000.6343: sFlow version 4 packet not supported
        0x0000:  4500 00c4 8928 0000 4011 93a6 ac10 02e0  E....(..@.......
        0x0010:  ac10 025a 22b8 18c7 00b0 5996 0000 0004  ...Z".....Y.....
        0x0020:  0000 0001 ac10 02e0 009b a1cf 75f0 fd62  ............u..b
        0x0030:  0000 0001 0000 0001 0037 2cc6 0000 0020  .........7,.....
        0x0040:  0000 0100 372c c600 0000 0000 0000 0020  ....7,..........
        0x0050:  0000 0000 0000 0001 0000 0001 0000 0046  ...............F
        0x0060:  0000 0046 047d 7bbb becc 000c 2998 85a6  ...F.}{.....)...
        0x0070:  8100 0066 0800 4500 0034 d554 4000 4006  ...f..E..4.T@.@.
        0x0080:  08e8 ac10 020a ac10 025d 0801 0344 5009  .........]...DP.
        0x0090:  baa3 6a16 e933 8010 67e1 3acf 0000 0101  ..j..3..g.:.....
        0x00a0:  080a f5fe 7b0d 014f 9bed 0000 0000 0001  ....{..O........
        0x00b0:  0000 0001 0000 0066 0000 0000 0000 0000  .......f........
        0x00c0:  0000 0000                                ....
1 packets captured
2 packets received by filter
0 packets dropped by kernel
(debug)#

インターネット・Origin AS番号レポートデータ取得API

インターネット・Origin AS番号レポート(レポート > インターネット > 詳細レポート > Origin AS番号)のレポートデータを取得するAPIです。

ディレクトリパス

/api/report/internet/originasn

requestクエリパラメータの要素

  キー 必須   値 説明
“report_datetime” Y {“defined_by”キー値ペア, “end_time”キー値ペア}
または
{“start_time”キー値ペア, “end_time”キー値ペア}
期間
   “defined_by” “daily”
“weekly”
“monthly”
“quarterly”
“yearly”
“end_time”キー値ペアと合わせて期間を指定
“start_time”キー値ペアを指定しない場合は必須
   “start_time” YYYY-MM-DD hh:mmフォーマットの開始時刻 “end_time”キー値ペアと合わせて期間を指定
“defined_by”キー値ペアを指定しない場合は必須
   “end_time” Y YYYY-MM-DD hh:mmフォーマットの終了時刻 “defined_by”キー値ペアまたは”start_time”キー値ペアと合わせて期間を指定
“unit” Y “bps”
“pps”
計測単位を指定
“protocol” Y “ipv4”
“ipv6”
“both”
IPバージョン
“data_format” Y “graph_data”
“display_data” “yes” レポートデータ付きのレスポンスを受け取る場合に”yes”を指定します。

応答メッセージのオブジェクト要素

  キー   値 説明
“response” {“status”キー値ペア, “result”キー値ペア} クエリの応答本体
   “status” “succ”
“fail”
クエリの成功失敗
   “result” {“output_file”キー値ペア}
または
{“output_file”キー値ペア, “data”キー値ペア}
クエリ成功時の結果データ
   “output_file” ファイルロケーション 結果データファイルのロケーション
   “data” {“report”キー値ペア, “unit”キー値ペア, “aggregation_unit”キー値ペア, “datetime_start”キー値ペア, “datetime_end”キー値ペア, “ip version”キー値ペア, “data”キー値ペア} 結果データ本体(クエリで”display_data”: “yes”が指定されたときのみ)
   “err” {“msg”キー値ペア, “code”キー値ペア, “description”キー値ペア} クエリ失敗時の理由

説明

  • 指定IPバージョンまたはすべてのインターネットトラフィックについて,指定計測単位のOrigin AS番号レポートデータを取得します。
  • レスポンスメッセージにレポートデータを含める場合は“report_data”:”yes”を指定します。指定しない場合,応答で指定されたファイルをダウンロードしてデータを取得します。

注意事項

  • レポートデータの粒度は,指定した取得期間によって以下のように自動的に決まります。
    取得期間 集計データの粒度
    取得期間 ≤ 24時間 5分
    24時間 < 取得期間 ≤ 7日 30分
    7日 < 取得期間 ≤ 3か月 2時間
    3か月 < 取得期間 1日

実行例

  • リクエスト
    http://api-user:api-passwd@172.16.2.90/api/report/internet/originasn?request={"report_datetime":{"defined_by":"weekly","end_time":"2016-12-12 00:00"},"unit":"bps","protocol":"both","data_format":"graph_data","display_data":"yes"}
    
  • レスポンス
    {
      "response": {
        "status": "succ",
        "result": {
          "output_file": "/pdftmp/rpt_export_data_1482389300-d90958e7-be8c-4699-8b8e-56b3f7177936.json",
          "data": {
            "report": "Internet>Breakdown>Origin ASN",
            "unit": "bps",
            "aggregation_unit": "30 min",
            "datetime_start": "2016-12-05T00:00:00Z",
            "datetime_end": "2016-12-12T00:00:00Z",
            "ip version": "Both",
            "data": {
              "items": {
                "item1": [
                  "Internet Sum"
                ],
                "item2": [
                  "AMAZON-02"
                ],
                "item3": [
                  "APPLE-ENGINEERING"
                ],
                "item4": [
                  "FACEBOOK"
                ],
                "item5": [
                  "MICROSOFT-CORP-MSN-AS-BLOCK"
                ],
                "item6": [
                  "YAHOO-3"
                ]
              },
              "value": {
                "2016-12-05T00:00:00Z": {
                  "item1": [
                    3815844352,
                    1618906368
                  ],
                  "item2": [
                    644851328,
                    191949824
                  ],
                  "item3": [
                    529735552,
                    117155224
                  ],
        :
        :
    (途中省略)
        :
        :
                  "item2": [
                    151641152,
                    40243728
                  ],
                  "item3": [
                    143755712,
                    53387400
                  ],
                  "item4": [
                    187509600,
                    4781182
                  ],
                  "item5": [
                    53549448,
                    20225218
                  ],
                  "item6": [
                    17160072,
                    1609265.62
                  ]
                }
              }
            }
          }
        }
      }
    }
    

インターネット・サマリ・レポートデータ取得API

インターネット・サマリ・レポート(レポート > インターネット > サマリ・レポート)のレポートデータを取得するAPIです。

ディレクトリパス

/api/report/internet/summary

requestクエリパラメータの要素

  キー 必須   値 説明
“report_datetime” Y {“defined_by”キー値ペア, “end_time”キー値ペア}
または
{“start_time”キー値ペア, “end_time”キー値ペア}
期間
   “defined_by” “daily”
“weekly”
“monthly”
“quarterly”
“yearly”
“end_time”キー値ペアと合わせて期間を指定
“start_time”キー値ペアを指定しない場合は必須
   “start_time” YYYY-MM-DD hh:mmフォーマットの開始時刻 “end_time”キー値ペアと合わせて期間を指定
“defined_by”キー値ペアを指定しない場合は必須
   “end_time” Y YYYY-MM-DD hh:mmフォーマットの終了時刻 “defined_by”キー値ペアまたは”start_time”キー値ペアと合わせて期間を指定
“unit” Y “bps”
“pps”
計測単位を指定
“protocol” Y “ipv4”
“ipv6”
IPバージョン
“data_format” Y “graph_data”
“display_data” “yes” レポートデータ付きのレスポンスを受け取る場合に”yes”を指定します。

応答メッセージのオブジェクト要素

  キー   値 説明
“response” {“status”キー値ペア, “result”キー値ペア} クエリの応答本体
   “status” “succ”
“fail”
クエリの成功失敗
   “result” {“output_file”キー値ペア}
または
{“output_file”キー値ペア, “data”キー値ペア}
クエリ成功時の結果データ
   “output_file” ファイルロケーション 結果データファイルのロケーション
   “data” {“report”キー値ペア, “unit”キー値ペア, “aggregation_unit”キー値ペア, “datetime_start”キー値ペア, “datetime_end”キー値ペア, “ip version”キー値ペア, “data”キー値ペア} 結果データ本体(クエリで”display_data”: “yes”が指定されたときのみ)
   “err” {“msg”キー値ペア, “code”キー値ペア, “description”キー値ペア} クエリ失敗時の理由

説明

  • 指定IPバージョンのインターネットトラフィックについて,指定計測単位のレポートデータを取得します。
  • レスポンスメッセージにレポートデータを含める場合は“report_data”:”yes”を指定します。指定しない場合,応答で指定されたファイルをダウンロードしてデータを取得します。

注意事項

  • レポートデータの粒度は,指定した取得期間によって以下のように自動的に決まります。
    取得期間 集計データの粒度
    取得期間 ≤ 24時間 5分
    24時間 < 取得期間 ≤ 7日 30分
    7日 < 取得期間 ≤ 3か月 2時間
    3か月 < 取得期間 1日

実行例

  • リクエスト
    http://api-user:api-passwd@172.16.2.90/api/report/internet/summary?request={"report_datetime":{"defined_by":"daily","end_time":"2016-09-07 12:00"},"unit":"bps","protocol":"ipv4","data_format":"graph_data","display_data":"yes"}
    
  • レスポンス
    {
      "response": {
        "status": "succ",
        "result": {
          "output_file": "/pdftmp/rpt_export_data_1476701651-68a88ee5-0e44-41c8-b576-27ae257ab3b0.json",
          "data": {
            "report": "Internet>Summary",
            "unit": "bps",
            "aggregation_unit": "5 min",
            "datetime_start": "2016-09-06T12:00:00Z",
            "datetime_end": "2016-09-07T12:00:00Z",
            "ip version": "IPv4",
            "data": {
              "items": {
                "item1": [
                  "Into Home"
                ],
                "item2": [
                  "Out of Home"
                ],
                "item3": [
                  "Internet to Home"
                ],
                "item4": [
                  "Home to Internet"
                ],
                "item5": [
                  "Internet to Internet"
                ],
                "item6": [
                  "Home to Home"
                ]
              },
              "value": {
                "2016-09-06T12:00:00Z": {
                  "item1": [
                    1804826368
                  ],
                  "item2": [
                    605927744
                  ],
                  "item3": [
                    1723264000
                  ],
                  "item4": [
                    524365344
                  ],
                  "item5": [
                    81562400
                  ],
                  "item6": [
                    0
                  ]              
        :
        :
    (途中省略)
        :
        :
                  "item5": [
                    1532578688
                  ],
                  "item6": [
                    0
                  ]
                }
              }
            }
          }
        }
      }
    }
    

フィルタ・比較レポートデータ取得API

フィルタ・比較レポート(レポート > ルールベース・レポート > サマリ・レポート > 比較)のレポートデータを取得するAPIです。

ディレクトリパス

/api/report/filter/compare

requestクエリパラメータの要素

  キー 必須   値 説明
“report_datetime” Y {“defined_by”キー値ペア, “end_time”キー値ペア}
または
{“start_time”キー値ペア, “end_time”キー値ペア}
期間
   “defined_by” “daily”
“weekly”
“monthly”
“quarterly”
“yearly”
“end_time”キー値ペアと合わせて期間を指定
“start_time”キー値ペアを指定しない場合は必須
   “start_time” YYYY-MM-DD hh:mmフォーマットの開始時刻 “end_time”キー値ペアと合わせて期間を指定
“defined_by”キー値ペアを指定しない場合は必須
   “end_time” Y YYYY-MM-DD hh:mmフォーマットの終了時刻 “defined_by”キー値ペアまたは”start_time”キー値ペアと合わせて期間を指定
“resource_group_id” Y フィルタグループID
“unit” Y “bps”
“pps”
計測単位を指定
“data_format” Y “graph_data”
“display_data” “yes” レポートデータ付きのレスポンスを受け取る場合に”yes”を指定します。

応答メッセージのオブジェクト要素

  キー   値 説明
“response” {“status”キー値ペア, “result”キー値ペア} クエリの応答本体
   “status” “succ”
“fail”
クエリの成功失敗
   “result” {“output_file”キー値ペア}
または
{“output_file”キー値ペア, “data”キー値ペア}
クエリ成功時の結果データ
   “output_file” ファイルロケーション 結果データファイルのロケーション
   “data” {“report”キー値ペア, “filter group”キー値ペア, “unit”キー値ペア, “aggregation_unit”キー値ペア, “datetime_start”キー値ペア, “datetime_end”キー値ペア, “data”キー値ペア} 結果データ本体(クエリで”display_data”: “yes”が指定されたときのみ)
   “err” {“msg”キー値ペア, “code”キー値ペア, “description”キー値ペア} クエリ失敗時の理由

説明

  • 指定したフィルタグループに属するフィルタのトラフィックについて,指定計測単位のレポートデータを取得します。
  • “resource_group_id”キーで指定するフィルタグループIDには,GUIのフィルタグループ管理ページ(システム管理 > プリファレンス > グループ > フィルタ タブ)の当該グループのグループIDを使用します。
  • レスポンスメッセージにレポートデータを含める場合は“report_data”:”yes”を指定します。指定しない場合,応答で指定されたファイルをダウンロードしてデータを取得します。

注意事項

  • レポートデータの粒度は,指定した取得期間によって以下のように自動的に決まります。
    取得期間 集計データの粒度
    取得期間 ≤ 24時間 5分
    24時間 < 取得期間 ≤ 7日 30分
    7日 < 取得期間 ≤ 3か月 2時間
    3か月 < 取得期間 1日
  • フィルタグループIDには0(ALL Filter Groups)以外を指定してください。

実行例

  • リクエスト
    http://api-user:api-passwd@172.16.2.90/api/report/filter/compare?request={"report_datetime":{"defined_by":"daily","end_time":"2016-09-07 12:00"},"resource_group_id":105,"unit":"bps","data_format":"graph_data","display_data":"yes"}
    
  • レスポンス
    {
      "response": {
        "status": "succ",
        "result": {
          "output_file": "/pdftmp/rpt_export_data_1481520740-19b5cda6-224a-456f-bf13-fdd336f7aedb.json",
          "data": {
            "report": "Rule Based>Summary>Compare",
            "filter group": ""https_filters",
            "unit": "bps",
            "aggregation_unit": "5 min",
            "datetime_start": "2016-09-06T12:00:00Z",
            "datetime_end": "2016-09-07T12:00:00Z",
            "data": {
              "items": {
                "item1": [
                  "Total"
                ],
                "item2": [
                  "Http(s) Traffic"
                ],
                "item3": [
                  "Http(s) Traffic from SN3 (Dispathced)"
                ]
              },
              "value": {
                "2016-09-06T12:00:00Z": {
                  "item1": [
                    1672978176,
                    4039119872
                  ],
                  "item2": [
                    1543717376,
                    4039119872
                  ],
                  "item3": [
                    129260800,
                    0
                  ]
                },
                "2016-09-06T12:05:00Z": {
                  "item1": [
                    1688757248,
                    4108266752
                  ],
                  "item2": [
                    1558845312,
                    4108266752
                  ],
                  "item3": [
                    129912000,
                    0
                  ]
                },
        :
        :
    (途中省略)
        :
        :
                  "item2": [
                    1521607936,
                    3978133248
                  ],
                  "item3": [
                    126748264,
                    0
                  ]
                }
              }
            }
          }
        }
      }
    }
    

サブネットワーク・比較レポートデータ取得API

サブネットワーク・比較レポート(レポート > サブネットワーク > サマリ・レポート > 比較)のレポートデータを取得するAPIです。

ディレクトリパス

/api/report/sub-network/compare

requestクエリパラメータの要素

  キー 必須   値 説明
“report_datetime” Y {“defined_by”キー値ペア, “end_time”キー値ペア}
または
{“start_time”キー値ペア, “end_time”キー値ペア}
期間
   “defined_by” “daily”
“weekly”
“monthly”
“quarterly”
“yearly”
“end_time”キー値ペアと合わせて期間を指定
“start_time”キー値ペアを指定しない場合は必須
   “start_time” YYYY-MM-DD hh:mmフォーマットの開始時刻 “end_time”キー値ペアと合わせて期間を指定
“defined_by”キー値ペアを指定しない場合は必須
   “end_time” Y YYYY-MM-DD hh:mmフォーマットの終了時刻 “defined_by”キー値ペアまたは”start_time”キー値ペアと合わせて期間を指定
“resource_group_id” Y サブネットワークグループID
“unit” Y “bps”
“pps”
計測単位を指定
“data_format” Y “graph_data”
“display_data” “yes” レポートデータ付きのレスポンスを受け取る場合に”yes”を指定します。

応答メッセージのオブジェクト要素

  キー   値 説明
“response” {“status”キー値ペア, “result”キー値ペア} クエリの応答本体
   “status” “succ”
“fail”
クエリの成功失敗
   “result” {“output_file”キー値ペア}
または
{“output_file”キー値ペア, “data”キー値ペア}
クエリ成功時の結果データ
   “output_file” ファイルロケーション 結果データファイルのロケーション
   “data” {“report”キー値ペア, “sub-network group”キー値ペア, “unit”キー値ペア, “aggregation_unit”キー値ペア, “datetime_start”キー値ペア, “datetime_end”キー値ペア, “data”キー値ペア} 結果データ本体(クエリで”display_data”: “yes”が指定されたときのみ)
   “err” {“msg”キー値ペア, “code”キー値ペア, “description”キー値ペア} クエリ失敗時の理由

説明

  • 指定したサブネットワークグループに属するサブネットワークのトラフィックについて,指定計測単位のレポートデータを取得します。
  • “resource_group_id”キーで指定するサブネットワークグループIDには,GUIのサブネットワークグループ管理ページ(システム管理 > プリファレンス > グループ > サブネットワーク タブ)の当該グループのグループIDを使用します。全てのサブネットワークの比較データを取得する場合は0を使用します。
  • レスポンスメッセージにレポートデータを含める場合は“report_data”:”yes”を指定します。指定しない場合,応答で指定されたファイルをダウンロードしてデータを取得します。

注意事項

  • レポートデータの粒度は,指定した取得期間によって以下のように自動的に決まります。
    取得期間 集計データの粒度
    取得期間 ≤ 24時間 5分
    24時間 < 取得期間 ≤ 7日 30分
    7日 < 取得期間 ≤ 3か月 2時間
    3か月 < 取得期間 1日

実行例

  • リクエスト
    http://api-user:api-passwd@172.16.2.90/api/report/sub-network/compare?request={"report_datetime":{"defined_by":"daily","end_time":"2016-09-07 12:00"},"resource_group_id":100,"unit":"bps","data_format":"graph_data","display_data":"yes"}
    
  • レスポンス
    {
      "response": {
        "status": "succ",
        "result": {
          "output_file": "/pdftmp/rpt_export_data_1481514342-b43c8b5d-cc9b-41cb-9aaa-06084e7eca77.json",
          "data": {
            "report": "Sub-Network>Summary>Compare",
            "sub-network group": "SN Group",
            "unit": "bps",
            "aggregation_unit": "5 min",
            "datetime_start": "2016-09-06T12:00:00Z",
            "datetime_end": "2016-09-07T12:00:00Z",
            "data": {
              "items": {
                "item1": [
                  "Total"
                ],
                "item2": [
                  "SN#1_Consumer"
                ],
                "item3": [
                  "SN#2_Business"
                ],
                "item4": [
                  "SN#3_Tenant"
                ]
              },
              "value": {
                "2016-09-06T12:00:00Z": {
                  "item1": [
                    6480103424,
                    3022071552
                  ],
                  "item2": [
                    4205152000,
                    1677062656
                  ],
                  "item3": [
                    1770145664,
                    1174562688
                  ],
                  "item4": [
                    504806112,
                    170446144
                  ]
        :
        :
    (途中省略)
        :
        :
                  "item3": [
                    1737872000,
                    1180736000
                  ],
                  "item4": [
                    496095712,
                    167761328
                  ]
                }
              }
            }
          }
        }
      }
    }
    

異常トラフィック検出機能 – トラフィック異常

GenieATMが持つ3種類の異常トラフィック検出機能のうち,トラフィック異常についてご説明します。

トラフィック異常検出機能は,規定されたネットワークリソース内のトラフィック総量を監視し,あらかじめ設定された範囲を外れたことを検出・通知します。

以下のような特徴があります。

  • サブネットワーク,フィルタ,ルータ・インターフェースのトラフィックを監視対象とすることができます。
  • bpsベースとppsベースの閾値が設定できます。(両方設定した場合はそれぞれが独立に判定されます)また,ルータ・インターフェースの監視では,回線使用率やCRCエラー数なども閾値として使用できます。
  • 閾値として上限値だけでなく下限値も指定することができます。
  • 上り・下りのトラフィックに対して異なる閾値を設定することができます。
  • すべてのトラフィックを監視対象とするため,シグニチャの概念はありません。ただし,閾値の組み合わせをテンプレートとして管理することができます。
  • 毎時0分,5分,10分...からの5分間の平均トラフィック量が閾値を上回る(下回る)と検出されます。
  • 検出時に自動的にミチゲーションを発動することはできません。
  • 過去の一定期間のトラフィック量をもとに動的に上限閾値を決定することができます。

関連トピック

3種類の異常トラフィック検出機能の比較

異常トラフィック検出機能 – プロトコル不正使用

GenieATMが持つ3種類の異常トラフィック検出機能のうち,プロトコル不正使用についてご説明します。

プロトコル不正使用検出機能は,その名の通り,主にL2,L3プロトコルレベルでの異常トラフィックを検出する機能です。特定のIPアドレス宛てのトラフィックでシグニチャに一致するものが閾値を超えると異常を検出します。また,検出をミチゲーション発動のトリガーとすることができます。

シグニチャは以下の10種類が用意されており,ユーザが追加,変更することはできません。

シグニチャ名 検出条件
TCP SYN Flooding SYNフラグがセットされたTCPトラフィック
IP Protocol Null プロトコル番号が0のIPパケットのトラフィック
TCP Flag Null or Misuse TCPフラグがゼロまたはありえない組み合わせのTCPパケットのトラフィック
TCP Fragment フラグメントされたTCPパケットのトラフィック
UDP Fragment フラグメントされたUDPパケットのトラフィック
ICMP Misuse ICMPトラフィック
Land Attack Land攻撃トラフィック(送信元と送信先IPアドレスが同じSYNフラグがセットされたTCPパケット)
TCP RST Flooding RSTフラグがセットされたTCPトラフィック
UDP Flooding UDPトラフィック
Host Total Traffic 中身に関わらずすべてのトラフィック

異常判定は30秒ごとのトラフィックについて行い,30秒平均が2回連続で閾値を上回ると異常トラフィックと判定します。(バージョン5.6.3までは1分平均のトラフィックが2回連続で閾値を上回ることが検出条件です)

ホームネットワーク,非ホームネットワークそれぞれについて閾値を設定できるほか,各サブネットワークに個別の設定を行うことも可能です。また,bpsとppsの2種類指定でき,両方指定した場合はどちらかを超えた場合に検出となります。

関連トピック

3種類の異常トラフィック検出機能の比較

3種類の異常トラフィック検出機能の比較

GenieATMには以下の3種類の異常トラフィック検出機能があります。

それぞれの特徴は以下の表の通りです。

種類 検出ベース シグニチャ シグニチャ
追加
ミチゲーション
起動
検出
時間
プロトコル
不正使用
送信先IPアドレス DDoS攻撃検出を想定

  • 総トラフィック
  • UDPやICMPなどの個別プロトコル
  • 特定のTCPフラグを持つパケット
不可 自動・手動 1分*
アプリケー
ション異常
送信元IPアドレス
送信先IPアドレス
DDoS攻撃・Worm検出を想定

  • パケット長
  • プロトコル
  • プレフィックス
  • ポート番号

など

可能 自動・手動 1分*
トラフィック
異常
ネットワーク単位 閾値定義のみ 不可 なし 5分

* バージョン5.6.3までは2分

プロトコル不正使用はL3/L4レベルの異常トラフィックの検知を,アプリケーション異常は特定のL7アプリケーションプロトコルにおける異常パケットを検知できるようにデザインされています。しかし,ともに個別IPアドレスに関するトラフィックを監視対象とし,ミチゲーションの自動発動の契機とすることができるなど共通点も多いため,用途に応じて使い分けてください。アプリケーション異常は,送信元IPアドレスベースでの異常トラフィック検出が可能である点と,新たなシグニチャをユーザが定義することができる点が最大の特徴です。一方,プロトコル不正使用には,サブネットワークごとに独自の閾値が設定可能なほか,Land攻撃(送信元と送信先のIPアドレスが同じである不正パケット)の検出のように,アプリケーション異常のシグニチャでは定義できないものも含まれています。

一方,トラフィック異常は,ネットワークリソースの総トラフィック量がネットワーク帯域などに比較して適切であるかを監視するために使用されます。ネットワークリソースとしては,サブネットワーク,フィルタ,ルータ・インターフェースが指定できます。

それぞれの異常トラフィック検出機能の詳細については,個別の項目をご覧ください。

関連トピック

異常トラフィック検出機能 – プロトコル不正使用
異常トラフィック検出機能 – アプリケーション異常
異常トラフィック検出機能 – トラフィック異常

スコープとは

スナップショットの条件設定やフィルター定義において,スコープという概念が出てきます。
これは,スナップショットの基準やフィルタ定義の表記とともに分析対象トラフィックを絞り込む条件を指定するために使用されます。

種別 パラメータ 対象 備考
ANY (なし) 全てのトラフィック
ANY (VPNサブネットワークを除く) (なし) プライベートネットワークにより定義されたサブネットワークのトラフィック以外すべて スナップショットのみ
ANY (Non-ACL-based sFlowフラグ) (なし) ACL-based sFlow*を除くすべてのトラフィック
ホーム (なし) インターネット境界を通過し,かつホームネットワークが送信元または送信先であるトラフィック
隣接ネットワーク 隣接ネットワーク名 ASパスに解決したときに隣接ネットワークが指定したASであるトラフィック
サブネットワーク サブネットワーク名 指定サブネットワークのトラフィック
フィルタ フィルタ名 フィルタにより絞り込まれたトラフィック スナップショットのみ
サーバファーム サーバ名 指定サーバのトラフィック
境界 定義済みネットワーク境界 指定した境界を通過するトラフィック フィルタのみ
ACL-based sFlow (なし) ACL-based sFlow*のみ

*ACL-based sFlow: 事前定義したACLにマッチするトラフィックのみを対象として出力されるsFlow。量は少ないが重要なトラフィックが,サンプリングにより落とされるのを防ぐことができる。

関連トピック

ネットワーク境界とは