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.

ELK ではじめる自宅ネットワーク監視

5,214 views

Published on

ネットワークプログラマビリティ勉強会 #8
urkr

Published in: Engineering
  • Dating for everyone is here: ♥♥♥ http://bit.ly/2F4cEJi ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Follow the link, new dating source: ❤❤❤ http://bit.ly/2F4cEJi ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

ELK ではじめる自宅ネットワーク監視

  1. 1. ELK ではじめる自宅ネットワーク監視 urkr Network Programability Study #8 2016-03-01
  2. 2. • NetFlow や Syslog を手軽に可視化してみたく、Elasticsearch / Logstash / Kibana (a.k.a ELK)を使ってコレクタを自作しました • 話さないこと • ELK のセットアップ方法 • 主に以下を参考しました • http://blogs.cisco.com/security/step-by-step-setup-of-elk-for-netflow-analytics 今日話すこと
  3. 3. • ひょんなことから管理性に優れた UTM (Unified Threat Management)を入手 • いろいろな機能を試していくうちに、Inbound の Drop などのログが管理 GUI からは参 照できないことに気付く…orz • 勉強もかねて Syslog サーバ兼 NetFlow コレクタをたてることに • Why ELK ? • Open Source • 勢いがある • Logstash 用 Syslog / NetFlow パーサーが github に落ちていた • 例えば Splunk 無償版は、ログ量が制限を越えた時に悲しい 背景
  4. 4. • ログ収集、管理、検索システム • イベントのリアルタイムな分析およびフォレンジックな分析を実現できる • 機器を横断した分析ができる ELK でできること
  5. 5. Centos 7 構成概要 Elasticsearch Kibana :9200 :5601 Logstash NetFlow Syslog Internet 自宅 悪い人 Centos 7.2 on VMware Fusion Java 1.8.0 Elasticsearch 2.1.1 Logstash 2.1.1 Kibana 4.3.1
  6. 6. • Logstash で NetFlow や Syslog を受け取り、各 種処理(パースしたり、情報を追加したり、 切り出したり)をする • Elasticsearch に渡してインデックス化する • Kibana 経由でインデックスにアクセスし、 グラフを作ったり、検索したりする 動作概要 Centos 7 Elasticsearch Kibana Logstash
  7. 7. • Elasticsearch • パフォーマンスに関する設定 • curator / crontab による定期的なインデックスの close / delete • Logstash • 過去にパースした先人の叡智を求めてひたすらググる • filter の項目で geoip やパース不良ポイントの見直し • Syslog メッセージが仕様変更 • Netflow ベンダー独自フィールドへの対応 • Kibana • Dashboard の作り方 (途中) 気をつけた点
  8. 8. Logstash の設定は3つのパートからなる • input:データの入力処理 • filter:inputで読み込んだデータに対する操作など • output:データの出力処理 Logstash
  9. 9. input { udp{ port => 9995 codec => netflow{ definitions => "/etc/logstash/conf.d/codec/netflow.yaml" versions => [9] } } } output { stdout { codec => rubydebug} elasticsearch index => “logstash-netflow-%{+YYYY.MM.dd}" host => 'localhost' } } Netflow を Logstash で受け取る conf 例 vi /etc/logstash/conf.d/1-netflow.conf NetFlow をデコードするためのプラグインの設定 含まれる各フィールドを読解する yaml 形式の定義ファイル 受け取る NetFlow のバージョン (5 or 9) の指定 NetFlow を受け取るプロトコルとポートの設定 Logstash から Elasticsearch へ渡す設定 通常は input と output の間に filter を書いて高度な処理を挟む ことが多い
  10. 10. Flexible NetFlow の受け取り方 左: Cisco - NetFlow Version 9 Field Type Definitions http://www.cisco.com/en/US/technologies/tk648/tk362/technologies_white_paper09186a00800a3db9.html 右: Github / logstash-plugins – NetFlow用 yaml ファイル https://github.com/logstash-plugins/logstash-codec-netflow/blob/master/lib/logstash/codecs/netflow/netflow.yaml • 各フィールドは RFC で TLV が定義されている • ベンダ拡張フィールドも存在する ・ ・ ・ ・ ・ ・
  11. 11. • UTM が死活監視のために 8.8.8.8 へ定期的に ping を打つ仕様に気付け た ダッシュボード作成例 ~NetFlow~
  12. 12. • DNS サーバは OpenDNS を利用しています ちなみに
  13. 13. ダッシュボード作成例 ~syslog~
  14. 14. ダッシュボード作成例 ~syslog~ [data table] Inbound でドロップしたトラフィックの 宛先ポート、プロトコル、国名 [histogram] Deny トラフィックの宛先ポート別推移 [metric] Inbound で Drop した回数 [pie chart] Allow と Deny の 割合 [pie chart] Deny トラフィックの プロコトルおよび宛先 ポート割合 [pie chart] Deny トラフィックの 国-地域名割合
  15. 15. • 少なからずスキャニングされ している痕跡がある • 23, 80, 3389, 8080 といった well-known port 以外に 53413/udp などが観測された 気付くことができた事案 自宅グローバル IP address 宛のドロップ履歴 (2015/02/24 のとある1時間)
  16. 16. 流行にのったポート番号であることがわかる 参考:JPCERT TSUBAME インターネット定点観測レポート 2015年10-12月 https://www.jpcert.or.jp/tsubame/report/report201510-12.html
  17. 17. • Alert 機能を無償で実装したい • 社内検証をするときにも簡易な Syslog / NetFlow サーバが欲しい時が あるため、容易に作って壊せる環境があると便利 • NP 勉強会的な応用として、Vagrant Box 化や Docker による展開、 Ansible による package インストールの自動化などが思いついたが、 そもそも yum を数回叩くとインストールできる ELK とは相性が悪い かもしれない…? 今後の展望
  18. 18. • Elastic Products https://www.elastic.co/products • Step by step setup of elk for netflow analytics http://blogs.cisco.com/security/step-by-step-setup-of-elk-for-netflow-analytics • How to install elasticsearch, logstash, and kibana on CentOs 7 https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-centos-7 • Netflow.yaml https://github.com/logstash-plugins/logstash-codec-netflow/blob/master/lib/logstash/codecs/netflow/netflow.yaml • Elasticsearch sizing guide https://www.elastic.co/guide/en/elasticsearch/guide/current/heap-sizing.html 参考
  19. 19. ご清聴ありがとうございました。

×