LoginSignup
2
3

More than 3 years have passed since last update.

Elasticsearch によるログ収集と可視化(第一回)

Last updated at Posted at 2019-12-11

はじめに

今回私達4人(長谷川、飯島、韓、大橋)は、
生ログに出力される様々なデータから、必要な情報を抽出・可視化することで、
様々な障害検知などに活用出来ることを確認します。

今期(12月末まで)の検証としては、
「Windowsイベントログからログイン成功/失敗のログを収集・(可視化するために) 集計」することで、
不正アクセスの疑いを検知出来るようにします。
具体的には、以下の流れでログ収集から可視化までを検証します。
 ①ログ収集 > 蓄積 > 可視化 の各ツールはLinuxに導入する。
  そのため、WindowsイベントログをLinuxへ転送する。(ログ出力:Winlogbeat)
 ②ログ検索・集計の高速化のため、収集したログを加工(整形)してログ蓄積ツールに渡す。
  (ログ収集:Logstash)
 ③ログ蓄積ツールと可視化ツールを連携し、不正アクセスの疑いを可視化する。
  (ログ蓄積:Elasticsearch、ログ可視化:Kibana)

ログ検索ツールElasticsearchについて

今回のログ検索ツールには、
Elastic社の元でOSSとして開発されている全文検索エンジンのElasticsearchを使用します。
Elasticsearchには以下のような特徴があります。
(公式サイトから引用:https://www.elastic.co/jp/products/elasticsearch/service)

①直感的でフレキシブル
 設定・デプロイが驚くほど簡単で、高機能で使いやすい設計。

②すぐれた機能を搭載
 Elasticのプロダクト/サービス限定のすぐれた機能を搭載
 (Machine LearningやCanvas、APM、インデックスライフサイクル管理など)。

③あらゆるユースケースに対応
 多様なデータを組み合わせてセキュリティや可監視性の強化、クリティカルなユースケースに対応可能。

このElasticsearchへのデータ格納について説明する前に、
Elasticsearchで使われる用語やデータ型について説明します。

Elasticsearchにおいて使用される用語

「Elasticsearchにおいて使用される用語」は一般的なRDBとは異なっているため、
各用語について、RDBで使用する用語との対比を交えて説明します。

  • index:データを保存する領域。RDBの「Database」や「Table」にあたる。
    以前は「_type」でindex内をさらに領域に分けることができましたが、現在は廃止されています。
  • field:列を示す。RDBの「column」にあたる。
  • document:行を示す。RDBの「record」にあたる。

Elasticsearchのデータ型

Elasticsearchの「データ型」は多岐に渡るため、
今回使用するデータ型と関連するデータ型を中心に説明します。

  • date:日時を格納する。
  • integer:32ビットの符号付整数で、値の範囲は「-2147483648 ~ 2147483647」。
                   一般的には9桁以下の数値を格納するために用いられる。
  • short:16ビットの符号付整数で、値の範囲は「-32768~32767」。
                一般的には4桁以下の数値を格納するために用いられる。integer型よりも容量節約ができる。
  • keyword:文字型のデータを格納する。完全一致検索に利用可能。
                     (正規表現などを利用することで部分一致検索も可能)
  • text:文字型のデータを格納する。あいまい検索に利用可能。(1文字異なる単語の検索など)
  • ip:IPv4/IPv6を格納する。

Elasticsearchの検索・集計

Elasticsearchでは収集する各項目ごとに「検索可否」と「集計可否」を設定します。

  • 検索可否:指定した項目での検索可否を定義します。
  • 集計可否:指定した項目で「可視化」するための集計可否を定義します。

なお、検索可否と集計可否はデフォルトで有効になっています。
無効にする場合は明示的に「false」を設定する必要がありますが、
無効設定とすることでデータ容量を節約できます。

今回収集するデータのデータ構造について

ここまで説明した内容を踏まえて、今回収集するデータを
Elasticsearchにどのような「データ構造」で保存するかを決めていきます。

  • 収集する対象(ログファイル名と項目名)
    → Windowsログ「セキュリティ」から以下の表の項目を取得します。
  • 収集する項目のデータ型
    → 以下の表のデータ型の通りです。
  • 収集する項目についての「検索/(可視化するための)集計」可否
    → 以下の表の通り、全項目とも「検索/集計」を実施します。
  • index名:logon_event.log
項目名 field名 データ型 検索
可否
集計
可否
備考
日付と時刻 date date
イベントID event_id short 4桁の数値のためshort型を選択する。
ログオン
タイプ
log_on_type short 1~2桁の数値のためshort型を選択する。
アカウント名 account keyword ログ内の「ログオンが失敗したアカウント」
というブロック内の値を使う。
アカウント
ドメイン
account_domain keyword ログ内の「ログオンが失敗したアカウント」
というブロック内の値を使う。
ソース
ネットワーク
アドレス
network_address ip

上記を決めた上で、
続いてログ収集に必要になる環境構築に取り組んでいきます。
この取り組みでは12月末までに全3回のアウトプットを予定しています。
なお、次回アウトプットは12月中旬頃を予定しています。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3