Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Packetbeatの基礎から、IoTデバイス異常検知への応用まで

4,601 views

Published on

第20回Elasticsearch勉強会
Packetbeatの基礎から、IoTデバイス異常検知への応用まで

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Packetbeatの基礎から、IoTデバイス異常検知への応用まで

  1. 1. Packetbeatの基礎から、 IoTデバイス異常検知への応用まで 2017-07-31 Acroquest Technology 束野 仁政(つかの さとゆき) 第20回Elasticsearch勉強会
  2. 2. 自己紹介 • 束野仁政(Acroquest Technology株式会社) • 活動 1. ネットワーク監視システム 2. 分散処理・ビッグデータ関連システム (Hadoop, Storm, Spark, Flink, etc.) 3. Elasticsearch関連システム • @snuffkin Copyright © Acroquest Technology Co., Ltd. All rights reserved. 2 http://qiita.com/snuffkin/items/19b33797b8b5f828b1b6 Elasticsearch勉強会の 発表資料まとめページ
  3. 3. Acroquest Technology • Elasticsearch社のパートナー http://www.acroquest.co.jp/elastic/ • Elasticテクニカルワークショップ https://info.elastic.co/japan-technical-workshop.html • 会社を元気にする51の「仕組み」 日本実業出版社  社員が長く気持ちよく働ける会社のユニークな「仕組み」 • Java本格入門 ~モダンスタイルによる基礎から オブジェクト指向・実用ライブラリまで 技術評論社  現場で使える実践的な内容が詰まっています Copyright © Acroquest Technology Co., Ltd. All rights reserved. 3
  4. 4. 目次 1. Packetbeatとは? 2. Packetbeatの主な機能 ① Network device ② Transaction protocols ③ Processors ④ Outputs ⑤ Logging 3. ユースケース・実践例 ① パケットが流れて1秒で検索したい ② 送信元IPアドレスによる独自パラメータ付与 ③ IoTデバイスの異常検知 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 4
  5. 5. 1. Packetとは? Copyright © Acroquest Technology Co., Ltd. All rights reserved. 5 Packetbeatとは? 参考:Packetbeat公式ページ(https://www.elastic.co/products/beats/packetbeat)
  6. 6. 1. Packetbeatとは? Copyright © Acroquest Technology Co., Ltd. All rights reserved. 6 Packetbeat is Lightweight Shipper for Network Data Beats Platformのひとつ ネットワークパケット解析し、Elasticsearch等に送信 Go言語で記述されており、軽量に動作する
  7. 7. 1. Packetbeatとは? Copyright © Acroquest Technology Co., Ltd. All rights reserved. 7 Packetbeatを使ったシステム構成の例 送信元機器 モニタ 送信先機器 ①解析した情報の送信 ②蓄積、可視化 httpなど httpなど
  8. 8. 1. Packetbeatとは? Copyright © Acroquest Technology Co., Ltd. All rights reserved. 8 Packetbeatの機能構成イメージ Network device OutputsProcessors Transaction protocols Logging Elasticsearch Packetbeat ④ ① ② ③ 堅牢にするなら Kafka等を挟む ネットワークインタフェースから情報を取得するため、 ループバックアドレスの通信状況は取得できない
  9. 9. 1. Packetbeatとは? Copyright © Acroquest Technology Co., Ltd. All rights reserved. 9 取得できる主な内容 1. 送信元IPアドレス/ポート 2. 送信先IPアドレス/ポート 3. 送信/受信バイト数 4. プロトコル名 5. 応答時間(HTTPなど) 取得可能な項目: https://www.elastic.co/guide/en/beats/packetbeat/mast er/exported-fields.html
  10. 10. 2. Packetbeatの主な機能 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 10 Packetbeatの主な機能 設定ファイルをベースに Packetbeatの主な機能を紹介します
  11. 11. 2. Packetbeatの主な機能 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 11 Packetbeatの機能を知るには、 1. 全体像は「packetbeat.full.yml」を見ると良い これを「packetbeat.yml」にリネームし、 それを元に設定変更するのがオススメ https://github.com/elastic/beats/blob/v5.5.0/packetbeat/packetbeat.full.yml 2. 詳細はPacketbeat Referenceで分かる https://www.elastic.co/guide/en/beats/packetbeat/index.html
  12. 12. 2-1. Network device Copyright © Acroquest Technology Co., Ltd. All rights reserved. 12 【必須】インタフェース指定 インタフェースのdevice id(Packetbeatの概念)を確認 packetbeat -devices packetbeat.interfaces.device: eth0 packetbeat.yml コマンドライン packetbeat.full.ymlにdevice idを設定(例:id=eth0) 「any」を指定すれば全deviceを監視可能 インタフェースを通過しない通信は取得できない ESPacketbeat
  13. 13. 2-1. Network device Copyright © Acroquest Technology Co., Ltd. All rights reserved. 13 snifferモジュール指定 snifferに利用するモジュールを指定 packetbeat.interfaces.type: pcap packetbeat.yml packetbeat.full.ymlにIDを設定(例:device id=0) 1. pcap デフォルト。多くのOSで動作する。 2. af_packet pcapより高速。Linux固有。 3. pf_ring 最高速。Kernel moduleが必要。 ESPacketbeat
  14. 14. 2-1. Network device Copyright © Acroquest Technology Co., Ltd. All rights reserved. 14 memory bufferのサイズ指定 shared memory bufferに利用するサイズを指定 単位はMB packetbeat.interfaces.buffer_size_mb: 30 packetbeat.yml 1. デフォルト値は30MB 2. 多いほど、メモリに蓄積できる 3. メモリを利用するケースでチューニング (HTTPのように応答を待つケースなど) ESPacketbeat
  15. 15. 2-1. Network device Copyright © Acroquest Technology Co., Ltd. All rights reserved. 15 BPF指定 Berkeley Packet Filter (BPF)を指定 packetbeat.interfaces.bpf_filter: packetbeat.yml 1. デフォルトはフィルタなし 2. IPアドレスやポート番号を絞ることができる 3. 後で説明するProcessorsより、 ここでフィルタする方が負荷が軽いと思われる 詳細: https://www.elastic.co/guide/en/beats/packetbeat/current/configuration- interfaces.html#_bpf_filter ESPacketbeat
  16. 16. 2-2. Transaction protocols Copyright © Acroquest Technology Co., Ltd. All rights reserved. 16 対応プロトコル・アプリケーション 1. ICMP 2. AMQP 3. Cassandra 4. DNS 5. HTTP →次ページで説明 6. Memcache 7. Mysql 8. PostgreSQL 9. Redis 10. Thrift-RPC 11. MongoDB 12. NFS デフォルトはenable 設定をコメントアウトしても無効にならないため、 不要なら明示的に disable にする 例: ICMP情報の取得を無効にする場合 packetbeat.protocols.icmp: enabled: false packetbeat.yml ESPacketbeat
  17. 17. 2-2. Transaction protocols Copyright © Acroquest Technology Co., Ltd. All rights reserved. 17 HTTP指定 次のブロックに設定 packetbeat.protocols.http: packetbeat.yml HTTPの要求/応答単位で情報を取得し、 Elasticsearchの1ドキュメントとして蓄積 詳細: https://www.elastic.co/guide/en/beats/packetbeat/current/configuration- protocols.html#_http_configuration_options ESPacketbeat
  18. 18. 2-2. Transaction protocols Copyright © Acroquest Technology Co., Ltd. All rights reserved. 18 HTTP設定 詳細な設定項目(抜粋) No. 設定項目 デフォルト値 内容 1 ports [80, 8080, 8000, 5000, 8002] HTTPを監視するポート 2 real_ip_header なし 送信元IPがIPヘッダでなく、HTTP ヘッダに含まれるときに設定する。 “X-Forwarded-For”など。 3 send_request false 要求の生情報を取得するか 4 send_response false 応答の生情報を取得するか 5 transaction_timeout 10s 要求と応答を紐づける処理のタイ ムアウト時間 ESPacketbeat
  19. 19. 2-3. Processors Copyright © Acroquest Technology Co., Ltd. All rights reserved. 19 Processors指定 Packetbeat内でフィルタしたり、パラメータ追加できる 次のブロックに設定 processors: packetbeat.yml 詳細: https://www.elastic.co/guide/en/beats/packetbeat/current/configuration- processors.html ESPacketbeat
  20. 20. 2-3. Processors Copyright © Acroquest Technology Co., Ltd. All rights reserved. 20 Processors指定 例: “http.code”が200のときにイベントを破棄する processors: - drop_event: when: equals: http.code: 200 packetbeat.yml ESPacketbeat
  21. 21. 2-3. Processors Copyright © Acroquest Technology Co., Ltd. All rights reserved. 21 Processors設定 詳細な設定項目 No. プロセッサ 内容 1 add_cloud_metadata クラウドサービスを利用している場合に、 instance_idなどを付与する。 2 decode_json_fields JSON文字列を、フィールドにパースする。 3 drop_event イベントを破棄する。 4 drop_fields 指定したフィールドを削除する。 (ブラックリスト) 5 include_fields 指定したフィールドを残し、他は削除する。 (ホワイトリスト) ESPacketbeat
  22. 22. 2-4. Outputs Copyright © Acroquest Technology Co., Ltd. All rights reserved. 22 標準で対応しているアウトプット先 1. Elasticsearch →次ページで説明 2. Logstash 3. Kafka 4. Redis 5. File 6. Console ESPacketbeat
  23. 23. 2-4. Outputs Copyright © Acroquest Technology Co., Ltd. All rights reserved. 23 Outputs - Elasticsearch設定 次のブロックに設定 詳細: https://www.elastic.co/guide/en/beats/packetbeat/current/elasticsearch- output.html output.elasticsearch: packetbeat.yml ESPacketbeat
  24. 24. 2-4. Outputs Copyright © Acroquest Technology Co., Ltd. All rights reserved. 24 Outputs - Elasticsearch設定 詳細な設定項目(抜粋) No. 設定項目 デフォルト値 内容 1 hosts ["localhost:9200"] 送信先のElasticsearchを指定。 2 index "packetbeat- %{+yyyy.MM.dd}" インデックスを指定する。日付インデッ クスも利用可能。 3 pipeline なし Elasticsearchのパイプライン(Ingest Nodeで実行される)を指定。 4 bulk_max_size 50 バルク送信の最大数を指定。 5 flush_interval 1s Elasticsearchに情報を送信する間隔 を指定する。単位はmsも利用可能。 ESPacketbeat
  25. 25. 2-5. Logging Copyright © Acroquest Technology Co., Ltd. All rights reserved. 25 Logging指定 設定例 logging.level: info # critical, error, warning, info, debug logging.to_files: true logging.to_syslog: false logging.files: path: /var/log/packetbeat name: packetbeat rotateeverybytes: 10485760 # = 10MB keepfiles: 7 packetbeat.yml 詳細: https://www.elastic.co/guide/en/beats/packetbeat/current/configuration- logging.html ESPacketbeat
  26. 26. 3. ユースケース・実践例 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 26 ユースケース・実践例
  27. 27. 3-1. パケットが流れて1秒で検索したい Copyright © Acroquest Technology Co., Ltd. All rights reserved. 27 ユースケース例: Packetbeatにパケットが流れて 1秒以内にElasticsearchで 検索できるようにしたい
  28. 28. 3-1. パケットが流れて1秒で検索したい Copyright © Acroquest Technology Co., Ltd. All rights reserved. 28 時間がかかる要素を 短縮する Network device OutputsProcessors Transaction protocols Logging Elasticsearch Packetbeat ④ ① ② ③ どこか?
  29. 29. 3-1. パケットが流れて1秒で検索したい Copyright © Acroquest Technology Co., Ltd. All rights reserved. 29 時間がかかる要素を 短縮する Network device OutputsProcessors Transaction protocols Logging Elasticsearch Packetbeat ④ ① ② ③ Elasticsearchが受信しても インデクシングされなければ 検索できない index.refresh_interval 5000ms→100ms Packetbeatが受信しても Elasticsearchに送信しなければ 検索できない flush_interval 1s→100msに変更 intervalを短くするとCPU負荷が 上がる点はトレードオフ
  30. 30. 3-2. IPアドレスによる独自パラメータ付与 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 30 ユースケース例: 送信元IPアドレスを見て、 独自パラメータを付与したい
  31. 31. 3-2. IPアドレスによる独自パラメータ付与 独自パラメータを付与・変換したいが、 Packetbeatでは複雑な加工はできない 加工する場所は選択の余地がある 1. Elasticsearchより前段で加工したい ノードにより加工内容が異なる、ES負荷軽減  Logstashで加工する 2. Elasticsearch側で一括して加工したい  Ingest Nodeで加工する Copyright © Acroquest Technology Co., Ltd. All rights reserved. 31
  32. 32. 3-2. IPアドレスによる独自パラメータ付与 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 32 独自設定を読み、パラメータを付与するケース  Elasticsearch側のIngest Node Pluginで付与 Ingest NodePacketbeat Elasticsearch 設定ファイル ④ ① ② ③ Pluginを実装
  33. 33. 3-2. IPアドレスによる独自パラメータ付与 1. まず、標準機能での実現を検討する https://www.elastic.co/guide/en/elasticsearch/reference/current/ing est-processors.html 標準機能の例: ① 値が固定のフィールドの追加 ② フィールド名の変更 ③ フィールドの削除 ④ 簡易なパース処理 2. 1ドキュメント内に完結した処理 フィールドの追加・変更・削除など  他のドキュメントにはアクセスできません Copyright © Acroquest Technology Co., Ltd. All rights reserved. 33
  34. 34. 3-2. IPアドレスによる独自パラメータ付与 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 34 Ingest Node Pluginの実装イメージ(初期化などは略) a_field(文字列)の末尾に「add」を付与したものをb_fieldに設定する例 public class MyProcessor extends AbstractProcessor { @Override public void execute(IngestDocument document) throws Exception { if ((document.hasField("a_field") == true)) { String value = document.getFieldValue("a_field", String.class); document.setFieldValue("b_field", value + "add"); } } } MyProcessor.java 1. 引数に渡ってくるドキュメントを編集することができる 2. ドキュメント毎にexecute が1度呼び出される 3. getFieldValueの引数に存在しないフィールドを指定する例外が発生する
  35. 35. 3-3. IoTデバイスの異常検知 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 35 ユースケース例: IoTデバイスのセキュリティが 世の中で問題となっている 自社のデバイスに問題ないか 異常検知したい
  36. 36. 3-3. IoTデバイスの異常検知 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 36 SORACOM Junction と連携し、セキュアな環境でパケット解析が可能になります。 これにより、IoTデバイスの動作不良や不正通信などの異常をリアルタイムで 検知することができます。 Torrentio Flow for Packet Analytics デバイス 基地局 お客様のサーバ セキュアな パケット転送 • パケット解析 • 機械学習 キャリア 不正通信検知 デバイスの 異常検知 通知 Junction http://www.site.torrentio.tech/torrentio/torrentio-flow/ Torrentio Flow(弊社提供のサービス) Packetbeat X-Pack ML GRE対応
  37. 37. 3-3. IoTデバイスの異常検知 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 37 パケットのフローを 分かりやすく可視化。 プロトコルやデータの流 れを簡単に把握。 SIM データ送信先 通信内容一覧 利用しているSIMに対して、通信の内容を可視化します。 どのSIMから、どのようにデータを送信しているかが一目で分かります。
  38. 38. 3-3. IoTデバイスの異常検知 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 38 SORAOM SIMグループ毎で、ジョブを設定・実行します。 自動的にパターンを分析して、異常が検知されると、通知を行います。 異常検知の結果を可視化。 異常があったところが、 カラーで表示される。 簡単な設定だけで、 異常検知のジョブを 設定。 SIM 分析データ値
  39. 39. ご清聴ありがとうございました 39 ネットワークの流量をモニタしたり、 ネットワークセキュリティにも Packetbeatは適用できます。 ぜひ、使ってみてください!

×