Slide 1

Slide 1 text

Elastic Stackで Webサーバのログ解析を 始めた件について @takahoyo 元祖 濱せっく #1

Slide 2

Slide 2 text

今日の内容  Elastic Stackを使ってWebサーバのログ解析を 始めた  ログ解析して特徴的だった情報を紹介

Slide 3

Slide 3 text

モチベーション  学生の頃にWebサーバをVPS上に立てた  勉強がてらWebページ作ってみよう  Webアプリケーション作ってみよう  ログは時々アクセスログをgrepで眺めるくらい  社会人になって…  Webサーバにどんな攻撃来てるのか気になる  社会人力を使って自宅サーバを買ったので何かで きないかな  そうだ ログ解析基盤、作ろう  最近Elastic Stack流行ってるし、やってみよう

Slide 4

Slide 4 text

VPS HOME ログ解析基盤 の構成 VPN USER Log Server ログ収集・解析に使用するソフトウェア • filebeat:access logをサーバからESへ転送する • elasticsearch:log dataを保存 • kibana:elasticsearchのデータを参照・可視化 ログ転送に使用するネットワーク • VPNを使ってVPSとHOMEを接続 – 認証・暗号化を実施 – FWで必要なホスト・ポートのみアクセスを許可 Firewall Web Server (nginx)

Slide 5

Slide 5 text

ログ解析基盤 への転送設定  filebeatのnginx moduleを使用  意外と簡単にelasticsearchへ取り込みが出来た  さらに、GeoIP情報やUser-Agent解析も自動で行う  通常、Logをparseする処理が必要  デフォルトではDashboardも自動生成  設定ファイルは以下の通り filebeat.modules: - module: nginx access: enabled: true var.pipeline: with_plugins var.paths: - /var/log/nginx/access.log error: enabled: true var.paths: - /var/log/nginx/error.log filebeat.prospectors: output.elasticsearch: enabled: true hosts: [“elasticsearch:9200"] filebeat.yml

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

可視化してわかったこと  ブラジルから激しいアクセスが  なんじゃこりゃ…

Slide 8

Slide 8 text

ログを見る  “/”を“GET” してるだけ  User-Agentが”Other“?  ingest-user-agent モジュールで自動で解析されてしまった

Slide 9

Slide 9 text

ログを見る  しょうがないので生ログを見る  User-Agentは、"curl/7.17.1 (mips-unknown-linux-gnu) libcurl/7.17.1 OpenSSL/0.9.8i zlib/1.2.3”  mips ってことは組み込み系? 168.0.xxx.yyy - - [01/Dec/2017:23:37:23 +0900] "GET / HTTP/1.1" 200 612 "-" "curl/7.17.1 (mips-unknown- linux-gnu) libcurl/7.17.1 OpenSSL/0.9.8i zlib/1.2.3” 177.101.xxx.yyy - - [01/Dec/2017:23:00:59 +0900] "GET / HTTP/1.1" 200 612 "-" "curl/7.17.1 (mips-unknown- linux-gnu) libcurl/7.17.1 OpenSSL/0.9.8i zlib/1.2.3” 168.0.xxx.yyy - - [01/Dec/2017:22:54:08 +0900] "GET / HTTP/1.1" 200 612 "-" "curl/7.17.1 (mips-unknown- linux-gnu) libcurl/7.17.1 OpenSSL/0.9.8i zlib/1.2.3” 187.120.xxx.y - - [01/Dec/2017:22:44:37 +0900] "GET / HTTP/1.1" 200 612 "-" "curl/7.17.1 (mips-unknown- linux-gnu) libcurl/7.17.1 OpenSSL/0.9.8i zlib/1.2.3” 168.0.xx.yyy - - [01/Dec/2017:22:38:39 +0900] "GET / HTTP/1.1" 200 612 "-" "curl/7.17.1 (mips-unknown- linux-gnu) libcurl/7.17.1 OpenSSL/0.9.8i zlib/1.2.3"

Slide 10

Slide 10 text

Shodanで調べてみる  いくつかのIPをShodanで調べたところ、すべてのIPで2000/tcpが動 いていた  これが原因?何かのネットワーク機器ぽい

Slide 11

Slide 11 text

まとめ  Elastic Stackを使うことでログ収集が簡単に可能  集めた情報を可視化することでログ解析が楽しく、 簡単にできる  可視化して見つけた情報をもとにOSINTしてみる と新たなことがわかるかも  今後はさらに多くのホストから、さらに多くのロ グを収集して、Elasticに入れて解析したい