📊

SumoLogicでSKYSEA(オンプレ)のログを集計してみた

2023/07/15に公開

ディアブロIVのネクロマンサーが楽しい男です。
前回の続きでまたもやSumoLogicです!!!!
https://zenn.dev/kenshiro/articles/8dccb1f79318ce
意外と記事として出てないものを擦りまくる男です←

今回はSKYSEAのログを例に**CSVのログも取り込めるよ!**って話をします。

目次

  • 1.きっかけ
  • 2.構成図
  • 3.ログとクエリ
  • 4.おわりに

1.きっかけ

CSVのログを取り込めることを意外と知らない方が多かったので追加で書こうってなりました。
あとSKYSEA使ってるけどログ解析までできてないところもあると思いますので、
一部参考にしてもらえればと思います。

2.構成図

前回とあまり変わらないですが、
オンプレ版のSKYSEAを使っているのでログサーバにCSVを収集して、
コレクターでSumoLogicに送ります。

ここはSplunkでも同様ですが、SKYSEAの機能自体にAPI連携とかそういうのが無いので
1.サードパーティ製のCSVログ出力ツールで出力
2.シェルで一つのCSVにまとめる
3.SumoLogicのコレクターが入っているサーバに飛ばす
4.SumoLogicに送る
といった手順になります。

ちなみにリアルタイムで分析できるのがSIEM製品のいいところでもあるんですけど、
SKYSEAの性質上1日前のログしか出力できないという
謎仕様なのでリアルタイムでは見れません…

もっといい製品ないかなぁ…
あとCSV出力やシェルで結合するのがメモリたくさん食うので
ここで困ってるとこも多いとかなんとか…
うちでも一時期出なかったことありましたので物理的にメモリ増やしました。

3.ログとクエリ

今回はUSBのファイルコピー操作のログを参考にCSVの解析クエリを説明していきます。
まずは実際にログを見てみます。

実際のログ

そしてログを見てみます。USBに対してファイルコピーした場合のログは下記のような感じです。
他にも情報はありますが重点的な部分だけ抽出してます。

SKYSEAサーバ名,,PC名,IPアドレス,1,PCログインユーザー名,ユーザー名,日時,操作内容,,,,,,,,,具体的な操作内容,,コピー元名,,,,,,コピー先名,リムーバブル,USB名,,,USBシリアル番号,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

今回確認したいこととしては

  • PC名
  • IPアドレス
  • ログインユーザー名
  • ユーザー名
  • 日時
  • 具体的な操作内容
  • コピー元
  • コピー先
  • USB名
  • USBシリアル番号

まずは前回と同様ログの格納場所を指定します。今回はsecurity/skyseaです。

_sourceCategory=security/skysea

次にCSVなので | csvとし、_rawフィールド(SKYSEAのログフィールド名)を検索します。
ただ、このままだと表示させたときにフィールド名がわからず何がどの値を指しているか全くわかりません。
なのでextractでどのログを指しているのか定義します。

_sourceCategory=security/skysea
| csv _raw extract 3 as PC_Name

これは上記ログの左から3コンマ目の値をPC_Nameと定義しています。
このまま取得したいデータをどういった名前で出すかを定義するとこのような感じになります。

(_sourceCategory=security/skysea)
| csv _raw extract 3 as PC_Name, 4 as IP, 6 as Login_Name, 7 as Display_Name, 8 as Date, 9 as Cat, 18 as Action, 20 as File_from,26 as File_for, 27 as Storage_Cat, 28 as Storage_Name, 31 as Serial

次に何を検索していくかの条件を定義します。
今回は上記で指定したStorege_Catがリムーバブルの場合出力させます。

_sourceCategory=security/skysea
| csv _raw extract 3 as PC_Name, 4 as IP, 6 as Login_Name, 7 as Display_Name, 8 as Date, 9 as Cat, 18 as Action, 20 as File_from,26 as File_for, 27 as Storage_Cat, 28 as Storage_Name, 31 as Serial
| Where Storage_Cat contains "リムーバブル"

かつActionがファイルコピーの場合とします。

_sourceCategory=security/skysea
| csv _raw extract 3 as PC_Name, 4 as IP, 6 as Login_Name, 7 as Display_Name, 8 as Date, 9 as Cat, 18 as Action, 20 as File_from,26 as File_for, 27 as Storage_Cat, 28 as Storage_Name, 31 as Serial
| Where Storage_Cat contains "リムーバブル"
| Where Action contains "ファイルコピー"

最後にcount byでテーブル上に表示させたい値を決めます。
PC_Name、Login_Name、File_from、File_For、Storage_Name、Serialを表示させます。

_sourceCategory=security/skysea
| csv _raw extract 3 as PC_Name, 4 as IP, 6 as Login_Name, 7 as Display_Name, 8 as Date, 9 as Cat, 18 as Action, 20 as File_from,26 as File_for, 27 as Storage_Cat, 28 as Storage_Name, 31 as Serial
| Where Storage_Cat contains "リムーバブル"
| Where Action contains "ファイルコピー"
| count by PC_Name, Login_Name, File_from, File_For, Storage_Name, Serial

asでcount by部分以外で検索したい場合に、すぐ表示を切り替えられるように定義しています。
表示させたい部分のみをasで定義するでも大丈夫ですが、そこは運用次第です。

これをテーブルで見せるとこのような感じで表示されます。
※今回は | Where Login_Name contains "kenshiro.tanaka"を追加して
 自分のみを表示させてます。

ちょうどWindowsPEで作業していたのでその名残がありますが、
これでUSBにファイルコピーしている人の解析が可能になりました。

4.おわりに

これでCSVも取り込めることがわかりました。
SKYSEAがCSVでしか出力してくれないので仕方ないですが、
これどうにかならないかなぁって思ってます。

次回は皆様お待ちかねのJamf Pro経由でMacbookのログが取り込めることが分かったので
こちらを試した後に紹介します!!!!
これができたらMacbookに関してはSKYSEA卒業できるぞおおおおお!!!!!!!

Discussion