Splunkにaudit.logを取り込んでSplunkweb初回ログイン時の挙動を調べる


はじめに

本記事は前回の記事で書かせて頂きました内容の続編になります。

Splunk Enterpriseが稼働するLinuxサーバーの監査対象をSplunkのインストールディレクトリに設定することで、Splunkweb(≒SplunkのGUIコンソール)に初回ログインしたときに、Splunk内部でどんなファイルが生成されたかLinuxサーバーの監査ログ(/var/log/audit/audit.log)に出力されるようになります。その監査ログをSplunk自身に取り込むことで、Splunk自身のサーチ機能を使ってSplunkで何が行われているかサーチします。

監査ログの出力設定は前回に記載しておりますので、そちらをご参照ください。

確認用サーチ文

※前回の記事から改良しております

監査ログをサーチする(ディレクトリとファイルを別カラムで表示)
sourcetype="linux_audit" type="PATH" nametype!="PARENT" name="/opt/splunk/etc/*" NOT name="*tmp" 
| rex field=name "^(?<directory>.*\/)?(?<file>.*)" 
| rex field=msg "audit\([^:]+:(?<msgid>\d+)" 
| eval directory=if(len(mode)==6,directory+file,directory),file=if(len(mode)==6,"",file) 
| table _time,msgid,item,nametype,mode,directory,file 
| sort _time,msgid,item
監査ログをサーチする(パスを表示)
sourcetype="linux_audit" type="PATH" nametype="CREATE" name="/opt/splunk/etc/*" NOT name="*tmp" 
| rex field=msg "audit\([^:]+:(?<msgid>\d+)" 
| eval pathtype=if(len(mode)==6,"dir","file") 
| table _time,msgid,item,nametype,mode,pathtype,name 
| sort _time,msgid,item

サーチ実行結果

サーチ実行結果例(クリックすると展開します)

サーチ実行結果の分析

サーチ実行結果を整理すると、以下のファイルが作られていることがわかりました。

Seq ファイル 備考
1 /opt/splunk/etc/login-info.cfg
2 /opt/splunk/etc/.ui_login ※0byte
3 /opt/splunk/etc/apps/splunk_instrumentation/bin/splunk_instrumentation/instrumentation_controller.pyc 同ディレクトリ内のinstrumentation_controller.pyをコンパイルしたモジュール?
4 /opt/splunk/etc/apps/splunk_instrumentation/bin/splunk_instrumentation/client_eligibility.pyc 同ディレクトリ内のclient_eligibility.pyをコンパイルしたモジュール?
5 /opt/splunk/etc/apps/learned/local/props.conf
6 /opt/splunk/etc/apps/learned/metadata/local.meta
7 /opt/splunk/etc/users/admin/user-prefs/metadata/local.meta
8 /opt/splunk/etc/users/admin/user-prefs/local/user-prefs.conf

初回ログイン後の各種初期操作時に生成されるファイル

今回の調査ついでにサーチAppをひらいたときに表示されるポップアップが気になったので、内部で何が作成されているか調査しました。その結果が以下になります。

Splunk初回ログオン時のポップアップを"Skip"した時

Seq ファイル 備考
1 /opt/splunk/etc/apps/splunk_instrumentation/metadata/local.meta
2 /opt/splunk/etc/apps/splunk_instrumentation/local/telemetry.conf
3 /opt/splunk/etc/users/admin/user-prefs/metadata/local.meta
4 /opt/splunk/etc/users/admin/user-prefs/local/user-prefs.conf

"Import changes coming!"ダイアログで"Remind me in 2 weeks"をクリックしたとき

Seq ファイル 備考
1 /opt/splunk/etc/apps/splunk_instrumentation/metadata/local.meta
2 /opt/splunk/etc/users/admin/user-prefs/local/user-prefs.conf

サーチAppに初回アクセスしたとき

Seq ファイル 備考
1 /opt/splunk/etc/users/admin/search/history/.dummy_history ※0byte
2 /opt/splunk/etc/users/admin/search/metadata/local.meta
3 /opt/splunk/etc/users/admin/search/history/(hostname).csv (hostname)はSplunk Enterprise導入サーバーのホスト名

サーチAppに初回アクセスしたときの[ようこそ]ダイアログで"Skip"をしたとき

Seq ファイル 備考
1 /opt/splunk/etc/users/admin/search/local/ui-tour.conf ※0byte
2 /opt/splunk/etc/users/admin/search/metadata/local.meta

まとめ

Splunkは初回ログイン時も画面の裏で色々なファイルを生成していますが、
監査ログを取り込むことで、画面操作をした場合にconfファイル(設定が入っている)とlocal.meta(設定をいつ変更したか)がセットで作成/更新していることまでわかるようになりました。

Linuxの監査ログは、ログのタイムスタンプがUnixTime形式で記録されているために、サーバーで何時何が行われたか解読するのに時間を要するのですが、Splunkに取り込むことでタイムスタンプが判りやすい形で分析できるようになりますので、監査ログを調査したい時のツールとしても活用することができそうです。