norikra + fluentd+ elasticsearch + kibana...
TRANSCRIPT
![Page 1: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/1.jpg)
Norikra + Fluentd
+ Elasticsearch + Kibana
リアルタイムストリーミング処理ログ集計による異常検知
2015.3
次世代システム研究室松井 大介
![Page 2: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/2.jpg)
短期の開発で不正検知の仕組みを
導入しようとしたとき、Norikraでなんとかしてみたよ
っていう話です。
![Page 3: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/3.jpg)
アジェンダ
• 不正検知システム• リアルタイムストリーミング Norikra• Fluentd + Elasticsearch + kibana + Norikra の連携方法
![Page 4: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/4.jpg)
不正アクセス検知
![Page 5: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/5.jpg)
急増する Web サイトへの攻撃
https://www.flickr.com/photos/peosoldier/16783585692/
![Page 6: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/6.jpg)
引用元 http://d.hatena.ne.jp/Kango/20141229/1419867498
年間40件以上
![Page 7: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/7.jpg)
引用元 http://d.hatena.ne.jp/Kango/20141229/1419867498
金銭被害
![Page 8: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/8.jpg)
身近にある攻撃
https://www.flickr.com/photos/peosoldier/16842615552/
![Page 9: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/9.jpg)
某社の事例パスワードリスト攻撃の件数
(別資料でデモ)
![Page 10: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/10.jpg)
狙われるサービス
・ポイントの現金化が可能。 Amazon ギフト券や Edy 、 Suica ポイントなど、足のつきにくいものが狙われる。
・攻撃時はアカウントの選別だけ行い、後日別の ISP からポイント交換に来る。
・一部情報が流出すると、関連する類似サービスに対して攻撃される!
![Page 11: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/11.jpg)
いいたいこと
・インターネットサービスは日常的に攻撃を受けている。
(身近なサービスが結構攻撃を受けている)
・サービス規模や知名度に関わらず金銭が絡むものは危険度が非常に高い。
・「攻撃されるかも」ではなく「いつか必ず攻撃される」という認識が必要。
![Page 12: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/12.jpg)
開発期間実質 1ヶ月で先ほどの例にあったサービスと連携することに ...!
![Page 13: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/13.jpg)
いいたいこと
• 不正検知するために何らかの仕組みが いますぐに必要• プロジェクトの規模(予算・人員)的に 簡易的に導入できる仕組みが必要
![Page 14: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/14.jpg)
不正検知システム
https://www.flickr.com/photos/peosoldier/16482691982/
![Page 15: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/15.jpg)
[ 本気度 低 ] 単純なログ検知
[ 本気度 中 ] 詳細なログ検知
[ 本気度 高 ] リスクベース認証
![Page 16: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/16.jpg)
[ 本気度 低 ]単純なログ検知
![Page 17: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/17.jpg)
おなじみ監視ツール( Zabbix, Nagios など)で、単純に ERROR などの文字列を監視する。
一定回数以上エラーが出ていた場合にアラートなどの処理を走らせる。
![Page 18: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/18.jpg)
監視ツール
長所 [ 低コスト ] ほぼ 100 %のシステムでは監視を導入するの
で、設定すれば準備できる。
短所 [ 防御力低 ] IP やユーザ ID などの動的な条件を組み込むこ
とが難しい。
![Page 19: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/19.jpg)
[ 本気度 中 ]詳細なログ検知
![Page 20: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/20.jpg)
謹製 不正ログイン検知システム(別資料でデモ)
![Page 21: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/21.jpg)
自社の作り込みシステム
長所 [ 必要条件を満たす ] 可視化+詳細な監視の実現 短所 [ コスト ] 作り込みのコストが高い。 ・アプリの内部の改修 ・バッチの処理モジュールの開発
![Page 22: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/22.jpg)
[ 本気度 高 ]リスクベース認証
![Page 23: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/23.jpg)
リスクベース認証リスクベース認証とは、ユーザーの環境情報や行動パターンを分析して、リスクを判定したうえで認証を課す方式だ。つまり、 IP アドレスや経由 ISP など、いつもと同じユーザー情報でアクセスがあった場合は固定パスワードで認証。いつもと違うユーザー情報でアクセスがあった場合は、パスワードを盗まれたりしたリスクが高いとして、あらかじめ登録しておいた追加の質問に回答させる(追加認証する)。
http://special.nikkeibp.co.jp/ts/article/aa0h/111209/
![Page 24: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/24.jpg)
たとえば CAPTCHA
http://ascii.jp/elem/000/000/483/483759/
![Page 25: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/25.jpg)
いつもと違うアクセスがあった場合に検知!?
![Page 26: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/26.jpg)
データマイニング
https://www.flickr.com/photos/idfonline/16568645675/
![Page 27: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/27.jpg)
「データあるところに異常あり」
データ分析の手法いろいろ・外れ値検知・変化点検知・異常状態検知
![Page 28: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/28.jpg)
外れ値検知
http://research.preferred.jp/2013/01/outlier/
![Page 29: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/29.jpg)
変化点検知
http://www.slideshare.net/yokkuns/ss-8425312
![Page 30: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/30.jpg)
異常発生検知
http://www.slideshare.net/yokkuns/ss-9031918
![Page 31: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/31.jpg)
実現手法いろいろ
![Page 32: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/32.jpg)
ちょっとどれも本気すぎる。。
![Page 33: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/33.jpg)
データマイニング
長所 さまざまな異常を検知できる。 準リアルタイムで検知!
短所 今回はオーバースペック?! (システム規模に合ってない) (研究中の分野を含み簡易的に実現できない)
![Page 34: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/34.jpg)
現状わずか 6台しかない
管理者
ユーザ
店舗一覧
DBサーバ
Web APサーバ
nginx+ php
監視サーバ
![Page 35: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/35.jpg)
開発の期間が短い
![Page 36: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/36.jpg)
選定のポイント
• 導入コスト サーバ少なくても動く なるべく実装しない• 運用コスト 仕様変更しやすい• 引継ぎコスト 誰でもわかる
![Page 37: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/37.jpg)
ターゲット
本気度 長所 短所 狙い
単純なログ監視 ・導入楽 ・カスタマイズ性弱・検知網羅性弱
詳細なログ監視・細かい設定可能
・自動禁止可能・可視化可能
・アプリ開発コスト高
・通常のアクセスを見抜けない
リスクベース認証
・複雑なケースに対応可能
・データマイニング導入開発コスト高
このあたりを低コストで
![Page 38: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/38.jpg)
いいたいこと
• 本気度別にざっくり低中高がある。• 本気を出せば、きりがない。• 規模感に応じてベターな方法を探す。
![Page 39: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/39.jpg)
_人人人人人人人人_> 突然の Norikra < ̄ Y^Y^Y^Y^Y^Y^ ̄
![Page 40: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/40.jpg)
アジェンダ
• 不正検知システム• リアルタイムストリーミング Norikra• Flunentd + Elasticsearch + kibana + Norikra
![Page 41: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/41.jpg)
乗鞍岳
![Page 42: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/42.jpg)
![Page 43: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/43.jpg)
Norikra とは
• 田籠氏が開発(元 LINE 、現 TD )• 2014年 5月に v1.0.0• リアルタイムストリーミングエンジン• jRuby ( JVM )• バックエンド Esper ( Java ライブラリ)• Google 、 CyberAngent 、ドワンゴ各社が採用• Hadoop 規模以下のケースでログ集計、 Hadoop
の前段でのログ集計事例など事例多数
![Page 44: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/44.jpg)
特徴
• Fluentd からログを受け取って ストリーミング集計して再転送• SQL ライクな集計処理記述• スキーマレスなデータ読み込み• JOIN 、 Subquery 、ユーザ定義関数• 再起動不要で集計処理追加可能• ストレージなし
![Page 45: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/45.jpg)
利用用途
• リアルタイムエラーログ集計• バッチ集計前リアルタイム加工• 過去データ集計
![Page 46: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/46.jpg)
ターゲット
本気度 長所 短所 狙い
単純なログ監視 ・導入楽 ・カスタマイズ性弱・検知網羅性弱
詳細なログ監視・細かい設定可能
・自動禁止可能・可視化可能
・アプリ開発コスト高
・通常のアクセスを見抜けない
Norikra がつかえそ
うリスクベース認
証・複雑なケースに
対応可能・データマイニング導入開発コスト高
![Page 47: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/47.jpg)
システム構成とデータフロー
![Page 48: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/48.jpg)
基本構成
Nginx
fluentd
Norikra
Elasticsearch+ kibana
LOG サーバ
fluentd
MariaDB
不正アクセス アクセス禁止
![Page 49: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/49.jpg)
NginxConf
Nginxaccess_log
BAN 処理out_exec_filter
Elasticseach
out_elasticsearch
ログ→集計→ IP 特定→ BAN
※http://dev.classmethod.jp/cloud/aws/block_dos_attack_by_norikra/ を参考にさせていただきました。
![Page 50: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/50.jpg)
{"remote_addr":"10.132.3.16","count":101}{"remote_addr":"10.132.3.21","count“:220}
select remote_addr , COUNT(*) as countfrom access.win:time_batch(1 min)group by remote_addrhaving count(*) > 1000
{ "time":"2015-03-29T22:17:37+09:00" , "remote_addr":"10.132.3.21" , "request_method":"GET" , "request_length":"176" , "request_uri":"/" , "https":"" ,
"uri":"/index.html" , "query_string":"-" , "status":"200" , "bytes_sent":"255" , "body_bytes_sent":"7" , "referer":"-" , "useragent":"curl/7.19.7 (x86_64-redhat-linux-gnu)
libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" , "forwardedfor":"-" , "request_time":"0.000" , "upstream_response_time":"-" , "request_body":"-" }
Nginx
Norikra
Fluentd
Fluentd
動的なイベント登録+スキーマ解釈
Fluentd 経由でイベント発火
![Page 51: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/51.jpg)
Nginx : アクセスの受付、ログ出力
Fluentd : ログ転送、 IPBAN 処理発火
Norikra : 集計
Elasticsearch+kibana : 可視化
![Page 52: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/52.jpg)
説明が長くなりそうなのでここでデモ
![Page 53: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/53.jpg)
検知のために設定すること
![Page 54: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/54.jpg)
GUI でクエリ登録だけ
![Page 55: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/55.jpg)
今回のターゲット
攻撃元 IP をリアルタイムストリーミング
で特定する。
![Page 56: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/56.jpg)
http://aaa.bbb.ccc.15/index.html に攻撃⇒ Norikraで検知して IPをBAN設定を自動反映
攻撃サーバ 5台 Nginxサーバ
LOGサーバ(Norikra)
![Page 57: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/57.jpg)
デモ
• 通常アクセスを Kibana で可視化( IP別)
• Norikra クエリを GUI で設定
• 攻撃アクセスの IP と HTTP ステータスをKibana で可視化
![Page 58: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/58.jpg)
これから詳細を紐解いていきます
![Page 59: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/59.jpg)
目指す世界
• サービス規模に適したプロダクト• 極力開発せずに実現する集計( SQL )• 簡単なインストール• シンプルなインターフェース
![Page 60: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/60.jpg)
サービス規模に適したプロダクト
![Page 61: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/61.jpg)
不正検知におけるログ集計
[ リアルタイム集計 ]不正アクセスの IP を準リアルタイムで集計して特定。
[ バッチ集計 ]不正 IP をあとで解除。
![Page 62: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/62.jpg)
バッチとストリームの共存(ラムダアーキテクチャ)
バッチ ストリーム単位 1 時間~数日 秒~数時間処理量 G 単位 K ~ M 単位処理時間 数十秒~時間 ミリ秒長所 大量処理 高速処理短所 重い メモリに乗る範囲プロダクト RDB
Hadoop BigQuery RedshiftElasticsearch
KafkaStormSpark StreamingKinesisElasticsearchNorikra
![Page 63: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/63.jpg)
サービス規模に応じたリアルタイムストリーミング
負荷レベル サーバ VM数
プロダクト1Gbps 以上100 万 req/s 以上
10 台以上 KafkaStormSpark Streaming
上記のレベルに達しない場合
1 台~ Norikra小規模ならNorikra
Elasticsearchでラムダができる
![Page 64: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/64.jpg)
高トラフィック時のパフォーマンス検証
このぐらいまで無問題秒間 1 万アクセス1 分 60 万アクセス
1 日 5 億~ 10 億アクセス
![Page 65: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/65.jpg)
[競合製品 ]Fluent-plugin-datacounter
同じく田籠氏のストリーミング処理 プラグイン
Fluentd は Ruby ( CRuby )のため、複数プロセスの動作不可能
複数プロセス間でデータ集計のタイミングがずれる。(回避策はあるものの対応コストがかかる)
Norikra のほうが優勢
![Page 66: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/66.jpg)
Elasticsearch だけでも準リアルタイムできるのでは?
![Page 67: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/67.jpg)
Elasticsearch の生クエリはかなりわかりずらい。。
{ "size": 500, "sort": { "@timestamp": "desc" }, "query": { "filtered": { "query": { "query_string": { "analyze_wildcard": true, "query": "*" } }, "filter": { "bool": { "must": [ { "range": { "@timestamp": { "gte": 1427696454189, "lte": 1427697354189 } } } ], "must_not": [] } } } }, "highlight": { "pre_tags": [ "@kibana-highlighted-field@" ], "post_tags": [ "@/kibana-highlighted-field@" ], "fields": { "*": {} } }, "aggs": { "2": { "date_histogram": { "field": "@timestamp", "interval": "30s", "pre_zone": "+09:00", "pre_zone_adjust_large_interval": true, "min_doc_count": 0, "extended_bounds": { "min": 1427696454189, "max": 1427697354189 } } } }, "fields": [ "*", "_source" ], "script_fields": {}, "fielddata_fields": [ "@timestamp" ]}
![Page 68: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/68.jpg)
Norikra は普通の SQL を使ってます!
select remote_addr , COUNT(*) as countfrom access_admin.win:time_batch(1 min)group by remote_addrhaving count(*) > 1000
![Page 69: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/69.jpg)
SQL はわかりやすい
https://www.flickr.com/photos/soldiersmediacenter/14113034008/
![Page 70: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/70.jpg)
Nginx : アクセスの受付、ログ出力
Fluentd : ログ転送、 IPBAN 処理発火
Norikra : 集計
Elasticsearch+kibana : 可視化
SQLで実現できる
![Page 71: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/71.jpg)
SQL ライクな集計を支えるEsper
a highly scalable, memory-efficient, in-memory computing, SQL-standard, minimal latency, real-time streaming-capable Big Data processing engine for historical data, or medium to high-velocity data and high-variety data.
![Page 72: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/72.jpg)
「 3 つシステムログを JOIN して 5 分以内に
同時ログインしたユーザ ID を抽出」
![Page 73: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/73.jpg)
「来るべきイベントが届いてない、 または遅れて届いた」
特殊な検知も対応できそう
![Page 74: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/74.jpg)
SQL プロダクトの流行
Stream BatchSQL Norikra
Spark SQLHiveImplara
Non SQL KafkaStromSpark Streaming
MapReduce
SQL は影響力大きい
![Page 75: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/75.jpg)
ターゲット
本気度 長所 短所 狙い
単純なログ監視 ・導入楽 ・カスタマイズ性弱・検知網羅性弱
詳細なログ監視・細かい設定可能
・自動禁止可能・可視化可能
・アプリ開発コスト高
・通常のアクセスを見抜けない
ほぼほぼ実現
リスクベース認証
・複雑なケースに対応可能
・データマイニング導入開発コスト高
![Page 76: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/76.jpg)
インストール簡単
![Page 77: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/77.jpg)
$ sudo yum install -y git gcc-c++$ git clone
https://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile$ exec $SHELL -l $ rbenv --version rbenv 0.4.0-95-gf71e227
rbenv
![Page 78: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/78.jpg)
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build$ rbenv install -l|grep jruby jruby-1.5.6 (snip) jruby-1.7.9 jruby-9000-dev jruby-9000+graal-dev $ rbenv install jruby-1.7.9$ rbenv shell jruby-1.7.9$ ruby -v jruby 1.7.9 (1.9.3p392) 2013-12-06 87b108a on OpenJDK 64-Bit
Server VM 1.7.0_51-mockbuild_2014_03_13_04_35-b00 [linux-amd64]
jruby
![Page 79: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/79.jpg)
$ gem install norikra --no-ri --no-rdoc$ rbenv rehash$ which norikra ~/.rbenv/shims/norikra$ gem list --local | grep norikra norikra (0.1.5 java) norikra-client-jruby (0.1.5 java)$ norikra start
norikra
![Page 80: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/80.jpg)
Ansible も Docker もあるよ!
![Page 81: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/81.jpg)
シンプルなインターフェース
![Page 82: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/82.jpg)
norikra-client (コマンドライン)
$ norikra-client target open test_target
$ echo '{"name":"atom", "age":55}' | norikra-client event send
test_target
$ norikra-client target fetch test_query
![Page 83: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/83.jpg)
Client Library
![Page 84: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/84.jpg)
![Page 85: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/85.jpg)
パフォーマンス
メモリ 4G3,000/sec のリクエスト負荷を1 時間以上継続して問題なし
※メモリが少なすぎると FullGC を連発してストリーミングどころではなくなるので注意!
![Page 86: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/86.jpg)
JVM チューニング
• 実は内部がデフォルトで GCオプションを自動で色々と指定してくれる。
• ヒープのオプションはデフォルトでは指定していない、自分で指定すること。 norikra start -Xmx2g
![Page 87: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/87.jpg)
Norikra ダウン時の冗長構成
Fluentd Standby オプションで切り替え可能(現状メモリの共有はできない)
![Page 88: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/88.jpg)
できないこと
• ストレージではないので、メモリに乗る分しかデータを集計できない。
(ログサイズに依存)
• 分散処理は自分で工夫すればできるかも( 1箇所に集中したデータを分散して行う仕組みはない)
![Page 89: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/89.jpg)
いいたいこと
• リアルタイム集計が小規模でも導入可能。• ほぼ設定だけでよいお手軽さ。(アプリの実装不要)• 再起動不要で動的反映。• SQL ライクな記述はわかりやすく 保守性が高い。(書いてみるとわかる。 Elasticsearch の クエリを素で書くのは結構大変。)
![Page 90: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/90.jpg)
Norikra ユースケース
![Page 91: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/91.jpg)
Web系企業で大人気
• LINE• サイバーエージェント• メルカリ• Pixiv• カヤック• Gunosy• Google
![Page 92: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/92.jpg)
LINE[ 用途 ] エラーログの集計で利用
LINE Bisiness Connect
![Page 93: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/93.jpg)
SELECT // 集計日時 current_timestamp() AS collected_timestamp, channelId AS channel_id, reason, detail, // エラー発生件数 count(*) AS error_count, // 単位時間内で検出された最初のエラー発生日時 min(timestamp) AS first_timestamp, // 単位時間内で検出された最後のエラー発生日時 max(timestamp) AS last_timestampFROM // ウィンドウを 1 分ごとに定義 event_endpoint_error_log.win:time_batch(60 sec)GROUP BY channelId, reason, detailHAVING // エラー件数が 1 件以上あった場合に限定 count(*) > 0
![Page 94: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/94.jpg)
[ 用途 ] Elarasticsearch 投入時の事前集計
200 req/s * 10 台 = 2000 req/s
サイバーエージェント
![Page 95: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/95.jpg)
Pixiv[ 用途 ] ログ保存時の事前集計
![Page 96: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/96.jpg)
メルカリ
http://www.slideshare.net/kazeburo/norikra-mackerel
[ 用途 ] Mackerel 投入時の事前集計
![Page 97: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/97.jpg)
カヤック[ 用途 ] Zabbix 監視用のログ集計
![Page 98: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/98.jpg)
Gunosy
https://speakerdeck.com/shunsukeaihara/norikra-in-gunosy-network-ads-at-norikra-meetup-number-2
![Page 99: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/99.jpg)
BigQuery + fluentd + Norikra でラムダアーキテクチャ
http://blog.yoslab.com/entry/2014/07/09/202304https://speakerdeck.com/kazunori279/building-a-lambda-architecture-in-10-minutes-with-bigquery-cep-and-docker
[ 用途 ] バッチ処理時の事前集計
![Page 100: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/100.jpg)
ユースケースまとめ
1.ログ集計やバッチ集計の補助機能
2.データ量の削減、機能開発の軽減
![Page 101: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/101.jpg)
Norikra まとめ
• リアルタイム集計を設定ファイル+ SQL• 小規模から大規模まで導入可能• 実績多数
![Page 102: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/102.jpg)
アジェンダ
• 不正検知システム• リアルタイムストリーミング Norikra• Fluentd + Elasticsearch + kibana + Norikra の連携方法
![Page 103: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/103.jpg)
検知結果を可視化したい
https://profarms.wordpress.com/2012/09/02/out-of-radar/
![Page 104: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/104.jpg)
Elasitcsearch• Lucene ベースの検索エンジン(高速)• スキーマレスで柔軟なデータ取り込み(型定義ファイル不要)• Kuromoji と合わせて日本語検索可能• DB テーブルを連携するプラグイン• Fluentd プラグインでデータを取り込める• Facet 、 Aggregation による集計処理• クラスタを組める
![Page 105: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/105.jpg)
kibana• 時間軸ベースのログの検索 & 視覚化ツー
ル• Elasticsearch と連携してフロントエン
ドとして動作する。• Elasticsearch のクエリを書かなくても グラフ描画できる。• UI がかっこいい。• ログの準リアルタイム可視化ツールとし
て事例が増えている。
![Page 106: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/106.jpg)
![Page 107: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/107.jpg)
綺麗ですね(小並感)
![Page 108: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/108.jpg)
Kibana 4 から白くなりました
![Page 109: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/109.jpg)
インストールは簡単です。1台からはじめられます。( Ansible もあります)
![Page 110: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/110.jpg)
Fluentd と Norikra の接続
![Page 111: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/111.jpg)
管理者
ユーザ
Nginx+ php
fluentd
Norikra
ElasticSearch
+ kibana
LOG サーバ
fluentd
![Page 112: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/112.jpg)
Fluent プラグイン
$ gem install norikra-client
コードを書かなくてもお互いログのやり取りができるようになる!
![Page 113: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/113.jpg)
NginxConf
Nginxaccess_log
処理out_exec_filter
Elasticseach
out_elasticsearch
WEB サーバ Fluentd
※http://dev.classmethod.jp/cloud/aws/block_dos_attack_by_norikra/ を参考にさせていただきました。
![Page 114: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/114.jpg)
<source> type tail format json tag nginx.access.admin path /var/log/nginx/web.its-lab.net/access.log pos_file /var/log/td-agent/web.its-
lab.net_access.log.pos</source>
Web サーバ側の Fluentd
![Page 115: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/115.jpg)
<match nginx.access.*> type copy
<store> type elasticsearch host 10.132.3.31 port 9200 type_name access_log logstash_format true logstash_prefix gmo_access logstash_dateformat %Y%m </store>
<store> type norikra norikra 10.132.3.31:26571 buffer_queue_limit 1 retry_limit 0 remove_tag_prefix nginx target_map_tag true </store>
</match>
Web サーバ側の Fluentd
赤枠以外はコピペでOK !
![Page 116: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/116.jpg)
管理者
ユーザ
Nginx+ php
fluentd
Norikra
ElasticSearch
+ kibana
LOG サーバ
fluentd
![Page 117: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/117.jpg)
Fluent プラグイン
$ gem install elasticsearch
コードを書かなくてもお互いログのやり取りができるようになる!
![Page 118: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/118.jpg)
NginxConf
Nginxaccess_log
処理out_exec_filter
Elasticseach
out_elasticsearch
LOG サーバ Flunen t d
※http://dev.classmethod.jp/cloud/aws/block_dos_attack_by_norikra/ を参考にさせていただきました。
![Page 119: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/119.jpg)
<source> type norikra norikra localhost:26571 <fetch> method sweep target access tag query_name tag_prefix norikra.query interval 30s </fetch></source>
Log サーバ側の Fluentd
自動で集計を読み込む
![Page 120: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/120.jpg)
<match norikra.query**> type copy <store> type exec_filter command /bin/bash /etc/td-agent/blocker.sh time_key time in_format json out_format json </store> <store> type elasticsearch host localhost port 9200 type_name access_log logstash_format true logstash_prefix norikra-count logstash_dateformat %Y%m</store>
Log サーバ側の Fluentd
Fluentd から構成管理ツールを叩く実はただのシェルスクリプト!
![Page 121: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/121.jpg)
NginxConf
Nginxaccess_log
※http://dev.classmethod.jp/cloud/aws/block_dos_attack_by_norikra/ を参考にさせていただきました。
処理out_exec_filter
Elasticseach
out_elasticsearch
全部つながったはず!
![Page 122: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/122.jpg)
いいたいこと
• Fluentd+Elastcisearch+kibana+Norikra インストール+設定ファイルだけで
連携できる。
![Page 123: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/123.jpg)
残タスク
• 限界を超える処理が発生した場合、 どうやって分散・リプレースするか。• SQL でどこまで複雑なことができるのか。 (まだ攻撃を受けてないのでリクエストがわからない)
• Elasticsearch+Kibana の もっと凝った使い方
![Page 124: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/124.jpg)
全体まとめ
• 不正アクセスに対して対応する手法は 簡易的に導入できるものある。• Norikra はラムダアーキテクチャの 利用事例が豊富。• Elasticsearch + kibana は導入が簡単で 可視化に有効。
![Page 125: Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知](https://reader035.vdocuments.site/reader035/viewer/2022062310/588588021a28ab84668b5529/html5/thumbnails/125.jpg)
ご静聴ありがとうございました。