More Related Content
Similar to ELK ではじめる自宅ネットワーク監視 (20)
ELK ではじめる自宅ネットワーク監視
- 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. • ひょんなことから管理性に優れた UTM (Unified Threat Management)を入手
• いろいろな機能を試していくうちに、Inbound の Drop などのログが管理 GUI からは参
照できないことに気付く…orz
• 勉強もかねて Syslog サーバ兼 NetFlow コレクタをたてることに
• Why ELK ?
• Open Source
• 勢いがある
• Logstash 用 Syslog / NetFlow パーサーが github に落ちていた
• 例えば Splunk 無償版は、ログ量が制限を越えた時に悲しい
背景
- 6. • Logstash で NetFlow や Syslog を受け取り、各
種処理(パースしたり、情報を追加したり、
切り出したり)をする
• Elasticsearch に渡してインデックス化する
• Kibana 経由でインデックスにアクセスし、
グラフを作ったり、検索したりする
動作概要
Centos 7
Elasticsearch
Kibana
Logstash
- 7. • Elasticsearch
• パフォーマンスに関する設定
• curator / crontab による定期的なインデックスの close / delete
• Logstash
• 過去にパースした先人の叡智を求めてひたすらググる
• filter の項目で geoip やパース不良ポイントの見直し
• Syslog メッセージが仕様変更
• Netflow ベンダー独自フィールドへの対応
• Kibana
• Dashboard の作り方 (途中)
気をつけた点
- 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. 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 が定義されている
• ベンダ拡張フィールドも存在する
・
・
・
・
・
・
- 14. ダッシュボード作成例 ~syslog~
[data table]
Inbound でドロップしたトラフィックの
宛先ポート、プロトコル、国名
[histogram]
Deny トラフィックの宛先ポート別推移
[metric]
Inbound で Drop
した回数
[pie chart]
Allow と Deny の
割合
[pie chart]
Deny トラフィックの
プロコトルおよび宛先
ポート割合
[pie chart]
Deny トラフィックの
国-地域名割合
- 15. • 少なからずスキャニングされ
している痕跡がある
• 23, 80, 3389, 8080 といった
well-known port 以外に
53413/udp などが観測された
気付くことができた事案
自宅グローバル IP address 宛のドロップ履歴 (2015/02/24 のとある1時間)
- 17. • Alert 機能を無償で実装したい
• 社内検証をするときにも簡易な Syslog / NetFlow サーバが欲しい時が
あるため、容易に作って壊せる環境があると便利
• NP 勉強会的な応用として、Vagrant Box 化や Docker による展開、
Ansible による package インストールの自動化などが思いついたが、
そもそも yum を数回叩くとインストールできる ELK とは相性が悪い
かもしれない…?
今後の展望
- 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
参考
Editor's Notes
- http://recruit.gmo.jp/engineer/jisedai/blog/embulk-elasticsearch-kibana-postgresql/
- IDS->IPSにした。
- Syslog 情報はすぐ活用できたが、Flow 情報を活用するにはナレッジが必要だと実感