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