Splunk FreeにSecurity EssentialのAppをインストールしてみた

現在、私は自分のPC(Mac)にSplunk Free(フリーライセンス)を入れています。

そこにEnterprise Securityを入れてみたかったのですが、それはSplunkの有償ライセンスを購入していないと無理みたいなので、その一部の機能が含まれていると思われるSecurity Essentialをインストールしてみました。

1.他のAppをサーチ

まずSecurity EssentialのAppを探す為、Splunk Freeのトップページから「+他のAppのサーチ」を選択します。(以下の画面については、Security Essentialを入れたあとで撮ったので、もうSecurity Essentialが入ってますが。)

Splunk Free

するとAppを検索する画面が出てきますので左上の検索窓から「Security Essential」と入力し検索します。

Security Essentialを検索

するとSecurity Essentialが表示され「インストール」ボタンを押せば入手できそうですが、Splunk Freeの場合、これではインストールできません。(上の画面ではすでにSecurity Essentialが入っているので「アプリを開く」になってます。)

そこで、Security Essentialの枠の下部にある「Splunk Base上で閲覧」のリンクをクリックします。

2.Splunk BaseからSecurity Essentialのtgzをダウンロード

するとSplunkサイトのSplunk Base上でSecurity Essentialのページが開くので、その右下の方にある「Login T0 Download」ボタンからSplunkサイトにログインすれば、「splunk-security-essentials_XXX.tgz」というtgzファイルがダウンロードできます。

Splunk Base

Splunk FreeがインストールされているPCにそのtgzファイルをダウンロードしましょう。

3. tgzファイルの取り込み

ダウンロードしたtgzファイルをSplunk Freeに取り込むには、Splunk Freeのトップ画面の左上にあるギアのアイコンマークをクリックします。

Appの管理

すると以下のようなApp管理画面が表示されますので、その右上にある「ファイルからAppをインストール」というボタンをクリックします。

App管理画面

ボタンをクリックすると以下の画面が表示されますので、Security Essentialのtgzファイルを選択して「アップロード」ボタンを押します。

Appのアップロード

4.Splunkの再起動

アップロードした後はSplunkの再起動を促す画面が表示されますので、そこで「今すぐ再起動」のボタンを押してSplunkを立ち上げ直すと以下の通りSecurity EssentialのAppがSplunkのトップ画面に表示されます。

もし再起動されない場合には、以下のコマンドを打って再起動させます。(Mac OSの場合)

/Applications/Splunk/bin/splunk restart
Security Essentialが表示された状態

Security EssentialではMITERのATT&CKから各TTPsに対応する相関ルールを選択できたり、リスクベースアラート(RBA)などの仕組みが備わっているようですので、これから使いながら勉強していきたいと考えています。

Splunk CloudのトライアルにてREST APIが本当に利用できないのか確認してみた

某SOAR製品の動作確認としてSplunk CloudとREST API連携できるか確認したかったので、無理かもしれないと思いながら、一応、Splunk Cloudのトライアルを申し込んでみました。

1.Splunk Cloudのトライアル申し込み

Splunk Cloudのトライアルを申し込むには、以下のSplunk社のサイトでアカウントを作成し、ログインする必要があります。

ちなみにアカウントを作成するとSplunk社から電話がかかってくることがありますのでご注意。(笑

https://www.splunk.com/

私の場合はSplunk Enterprise(オンプレ版)でアカウントを作成していましたので、そのアカウントでログインしました。

そして、Splunk Cloudトライアルの申請です。

Splunk 社のサイトにログインすると、サイトの右上に「Free Splunk」というボタンが出ていると思いますので、それをクリックするとトライアルの申請画面が表示されます。

Splunk Free Trial画面(Splunk社)

ここから申請することで14日間のトライアルができます。(ちょっと短いですね。)

なお、申請を行うとトライアルのURLやログインアカウントが記載されたメールがSplunk社から届きます。

Splunk社からのメール

このメールに従ってURLにアクセスすれば、Splunk Cloudが利用できるようになります。

Splunk Cloud ログイン直後(Splunk画面)

2.REST API(ポート:8089)を試してみる

事前にSplunk社に申請しておかないとSplunk CloudではREST APIの利用ができないという記述は読んでいたので無理だろうと予測はしておりました。

しかしながら念のため、某社SOAR製品から接続できないか試してみました。

結果としては予想どおり接続できませんでした。

テスト接続してみたところアイコンがくるくる回ってしばらく返ってこなくなりました。(20秒くらいしか待ってませんが。。。)

SOAR製品からSplunk Cloudへの接続試行(XSOAR画面)

ちなみに上記の某社SOAR製品では接続する為のアドレスがHost IPとなっておりIPアドレスしか記述できないようなので、Splunk 社から連絡のあったURLを nslookup してIPアドレスを調べ、入力しています。

また、Portについてはデフォルトで8089になっていましたので、そのまま使いました。(このポートで正しいことは後述の資料から確認できます。)

3.Splunk社の情報を再度確認してみた

今更かという感じもしますが、Splunk 社サイトの情報やコミュニティの情報を確認したところ、以下のサイトにSplunk CloudのREST APIに関する記述が掲載されていることが確認できました。

https://docs.splunk.com/Documentation/SplunkCloud/latest/Admin/
Splunk CloudのREST API情報

上記の通り「REST APIを利用するにはサブスクリプションが必要」と書かれていますので、Splunk Cloudの契約が必要ということですねー。個人ではとても無理です。。

なお、一番最後の記述をみると、REST APIにアクセスするときのポート番号は 8089となっているので、REST APIに接続する為のポート番号は8089で間違いなさそうです。

4.個人でREST API接続確認可能なのはSplunk Enterprise 評価版のみ?

ちゃんと試していませんが、どうしても無料でSplunkとのREST API接続確認をしたい場合は、Splunk Enterpriseの無料トライアル期間に試すしかないのではないかと思われます。

これについては私も試したことがありませんので実際できるかどうか分かりません。

ちなみにSplunk Enterpriseの無償トライアル期間が過ぎるとフリーライセンスにするしかなく、アカウントが無くなる(Splunkを起動すると自動ログインされる)ので?、某SOAR製品からREST API接続できませんでした。

Splunk基本操作を確認してみた(フィールドの抽出と指定フィールドの表示)

久しぶりにSplunkについて考えることがあったのですが、ふと、Splunk に入っているログを検索して、指定したフィールドのみ画面に表示させることができるのか確認したいとおもったので実際にやってみました。

最初は fields というコマンドを利用すればできるんじゃないかなと思いましたが、実はそれでは思ったとおりにはならず、table を使うことで実現できることが分かりました。

1.フィールドの抽出

Splunk に取り込まれているログに対してフィールドを抽出(指定と言ったほうがわかりやすい?)するには、以下の手順で行います。

1-1. 任意のログを検索し、フィールドの抽出を開始

フィールドを抽出したいログを検索し、表示されたログの左端にある”>”のマーク(クリックすると下向きになる)をクリックします。

その後、「イベントアクション」のプルダウンから「フィールドの抽出」を選択します。

ログの検索とフィールド抽出ウィザード開始(Splunk画面)

1-2. フィールドの抽出方法として「正規表現」を選択

特定の場所だけ抽出したい場合は「正規表現」が良いと思われます。

抽出方法を選択(Splunk画面)

1-3. フィールドの選択

画面に表示されたサンプルログからフィールドとして抽出したい場所をマウスで選択し、「フィールド名」を設定後、「Add Extraction」ボタンを押します。

フィールドの選択と名前の設定(Splunk画面)

1-4. フィールド抽出状況の確認

「Add Extraction」ボタンを押すと各ログに対する抽出結果が表示されます。

通常は問題ないと思いますが、もし適切に抽出されていない場所があれば、抽出結果の右に表示される”×”を押せば、除外してくれるのではないかと思います。

フィールド抽出状況の確認(Splunk画面)

1-5. フィールド抽出設定の保存

最後に設定を確認し「終了」ボタンを押せばフィールドの抽出は完了です。

フィールド抽出設定の保存(Splunk画面)

2.検索結果をfieldsコマンドに渡してみる

それでは先ほど抽出した「dst_ip」フィールドを利用し、検索結果を編集してみます。

まずは、検索結果について”|”を利用して fields コマンドに渡した場合です。
実行したSPL文は以下の通りです。

sourcetype="fgt_traffic" 
| fields src_ip, dst_ip

そして以下が実行結果です。
見ての通り、ログの表示部分にはすべてのログが表示されたままになっています。
変わったのは、左ペインのフィールド名のリストが fieldsで指定した”src_ip”と”dst_ip”になっただけです。

fields による検索結果の編集(Splunk画面)

たしかに fields で指定しないとたくさんのフィールド名が表示されてしまうので、必要はフィールドだけリストに表示したいという場合は便利なコマンドですね。

3.検索結果をtableコマンドに渡してみる

そして次にtableコマンドに渡してみました。実行したSPL文は以下の通りです。

sourcetype="fgt_traffic" 
| table src_ip, dst_ip

そしてこれが実行結果です。
そう、私がやりたかったのはこれです。指定したフィールドの情報だけSplunkの画面に表示させることができました。

table による検索結果の編集(Splunk画面)

なお、fields と table の実行結果を眺めていてふと気がついたのですが、よくみるとサーチ文の下のメニューが fields の場合は「イベント」、table の場合は「統計情報」となっていますね。

久しぶりにSplunkをさわったら、REST APIを使ったサーチもしてみたいなという欲求が出てきたので、また機会を見つけてやってみたいと思います。

Splunk基本操作を確認してみた(ソースタイプの削除)

先日、SplunkにSnort3のログを取り込んでみた際に、新しいソースタイプを(Snort3)を作成しましたが、それを削除する方法を記載しておきます。

http://k2-ornata.com/splunk_mac_log_import/

1.メニューバーから設定のプルダウンを表示

Splunk画面の上部にあるメニューバーから「設定▼」をクリックするとプルダウンメニューが表示されます。

その中に「データ」カテゴリの中に「ソースタイプ」がありますので、それをクリックします。

Splunk – 設定のプルダウンメニュー

2.自分の作成したソースタイプを表示

1.で「ソースタイプ」を選択するとSplunkに登録されているソースタイプの一覧が表示されます。

ここから、上部にあるフィルタを利用して自分の作成したソースタイプを表示させます。

Splunk – ソースタイプ一覧画面

3.ソースタイプの削除

ここではSnortでフィルタた結果を表示しています。

自分の作成した「Snort3」および「Snort3-2」は、アクションとして「削除」ができるようになっていますので、「削除」をクリックします。

Splunk – ソースタイプのフィルタ

「削除」をクリックすると以下のポップアップが出ますので、再度、「削除」を押すとそのソースタイプを削除することができます。

Splunk – ソースタイプの削除確認画面

以上、基本的な操作になりますが、参考になれば幸いです。

SplunkにMac上のログを取り込んでみた

先日、Splunk上でSnort3を動作させ、ネットワークのログを取得してみました。その時の記事は以下の通りです。

http://k2-ornata.com/snort3_on_mac_install/

そこで今回はこのSnort3のログをSplunkに取り込んでみたいと思います。なお、SplunkはSnort3と同じく私のiMacにあらかじめインストールしてあります。

1.データの追加

おそらくSplunk起動直後は以下のような画面が表示されているはずですので、右ペインから「データの追加」を選択します。

Splunk スタート画面

2.データ入手方法の指定

1.の画面から「データの追加」を選択すると以下のような画面が表示されますので、最下部からデータの入手方法を指定します。

今回はMac上で生成されたログなので「モニター」を選択しました。

Splunk ログの入手方法指定

3.ソースの指定

次にSplunkに取り込むソース(ファイルとディレクトリ)を具体的に指定します。

今回は左のペインから「ファイルとディレクトリ」を選択し、右のペインで取り込むデータの「ディレクトリとファイル名」を選択します。

また、今回は一時的に作成したデータなので、「1回インデックスを作成」を選択しました。

選択が終わったら上部の「次へ」ボタンを押します。

Splunk ソースの指定画面

4.ソースタイプの指定

ソースを指定するとデータの取り込みイメージが表示されますので、左のペインからソースタイプを指定します。

なお、同種のソース(例えばサーバAのsyslogとサーバBのsysylogなど)は取得する場所は異なっても、同じソースタイプにしておくと良いと思います。

今回はSnortのログなので対応するソースタイプとして「Snort3」を新規に作成しています。(以前作っていたので、以下の画面ではプルダウンから選択していますが。。。)

Splunk ソースタイプの指定

5.ホストの指定

次に以下の画面が表示されますので、真ん中あたりの「ホストフィールド」の値を確認し、問題なければ上部の「確認」を押してください。

Splunk ホストの指定

6.取り込みデータの確認

最後にこれまでの設定の確認画面が表示されますので、設定内容に問題ないことを確認し、上部の「実行」を押します。

Splunk データ取り込み確認画面

データの取り込みが正しく行われると、以下の画面が表示されますので「サーチ開始」を押します。

Splunk データ取り込み直後の画面

7.データサマリーの確認

なお、1.の「Splunk スタート画面」の左ペインのAppリストから「Search&Reporting」を選択し、先ほど取り込んだデータを含めたデータサマリーを確認することができます。

「Search&Reporting」を選択すると以下の画面が表されますので、「データサマリー」ボタンを押します。

Splunk サーチ画面

すると以下のデータサマリー画面が表示されますので、その中から「ソース」のタブを選択すると、先ほど選んだファイルが登録されていることが確認できます。

Splunk データサマリー画面

以上、Splunkにデータを取り込む際の流れを記載させていただきました。

ご参考

できればこの作業を行う際に、上の図のタブとして表示されている「ホスト」「ソース」「ソースタイプ」の意味を理解しておくことをお勧めします。

なお今回の場合は、ざっくり記載すると以下の認識になるかと思います。

ホスト・・・取り込んだデータを生成したサーバ(今回は私のiMac)
ソース・・・取り込んだデータが置かれていたディレクトリとファイル名(今回はSnortの出力ファイル)
ソースタイプ・・・取り込んだデータのファイル形式(今回はSnortのファイル形式)

Splunk社が提供するBOTS環境でSPL言語を勉強する

先日、Splunk FreeをMacOSにインストールした後、Splunk 社が提供しているBOTS(Boss of the SOC)用のデータとQ&Aをダウンロードして、SPL(Search Processing Language) 言語の勉強中です。

SPL 言語が書けるようになれば、Splunk に取り込んだログデータを簡単に検索、分析できるようになり、また日本においても多くの企業でSpunkを導入している為、勉強しておいて損はないかと思います。

なお、以下サイトにSPL言語の入門書/説明書が置かれていますので、参考になるかと思います。

https://www.splunk.com/ja_jp/goto/book

ちなみに今年の3月にその最新版であるv3がリリースされたようですね。

https://www.splunk.com/en_us/blog/security/botsv3-dataset-released.html

また、私がAWS環境にSplunkをインストールした時の記事を以下に載せていますので興味があれば見てみてください。

http://k2-ornata.com/splunk-install-on-aws/

BOTSv1をトライしたときに利用したSPL言語

まだSPL言語初心者ではありますが、BOTv1を通じて勉強したことを記載しておきたいと思います。

0.Splunk内のインデックスを確認

さっそくSPL言語を利用してみたいところですが、SPL言語を使う際に、indexを指定することが多々あります。

そこで、どんなインデックスがSplunkの中にあるのか確認する方法を記載しておきます。

いろいろ方法はありそうですが、まずはOSのコマンドで確認する方法を記載しておきます。

Splunk がインストールされているディレクトリ(Macの場合、通常、/Applications/Splunk ディレクトリにインストールされています)の配下のbinディレクトリに移動し、splunk list index とコマンドを入力します。

% /Applications/Splunk/bin
% ./splunk list index

すると、以下のようにインデックスの一覧が表示されます。

コマンドでSplunkのインデックス一覧を表示

1.インデックスに取り込まれているデータの一覧表示

以下のように最初にパイプを書いた後、metadataコマンドを以下のようにつかうことで、botsv1インデックスに含まれるhostsの一覧と概要が表示されます。

| metadata type=hosts index=botsv1

また、hostsの代わりに sourcesや sourcetypes を指定することもできます。

| metadata type=sources index=botsv1

2.時間を整型する

上の例だと、各時間(*Time)がなにやら数字の羅列になっているので、これをわかりやすい表記にすることが可能です。

| metadata type=sourcetypes index=botsv1
| foreach *Time [eval <>=strftime(<>,”%d/%b/%y %H:%m:%S”)]

とりあえずSPL言語の出だしだけ書いてみましたが、また気が向いたら、続きを書いてみたいと思います。

AWSの無料枠でSplunk Freeをインストールしてみた

Splunk のSPL言語を勉強したいんだけど、試せる環境がない!
そんなわけで、 WordPressを動作させているAWS上のインスタンスにSplunk Freeをインストールしてみました。
しかしながら、無料枠で構築しているインスタンスなので、ディスク容量が10GBと限られています。
したがって、ディスク容量をあけてから構築する必要がありました。

インストータをダウンロード後、ディスクを開けるところから始まる

最初に書いたとおり、t2.microというAWSの無料枠にSplunkをインストールする為にはディスク容量を開ける必要があります。
インストーラのサイズは380MB程度ですが、それをインストールする為には2GB程度の空き容量が必要となります。またその後にデータを取り込むことを考えると、もっと必要になりそうです。

2020.7.20 追記
インストール2日後に改めて環境を見てみると、Splunk が出力するログが膨れ上がっており、その影響でWordPressサーバがダウンしていました。😅
もしかしたら、ディスクの空き容量が5GBくらいないと厳しいかもしれません。

1.インストーラのダウンロード

Splunk のサイトにアクセスすると、Splunk Enterpriseの試用版をダウンロードすることが可能です。この試用版は15日経過後、Splunk Free版として使用し続けることができそうです。

以下の画面のようにwgetでダウンロードすることが可能ですので、Linux(Ubuntu)のコマンドラインから直接ダウンロードできます。

以下、ダウンロードした際のコマンド画面です。AWSからダウンロードしているのであっという間にダウンロードできました。

2.ディスクの空き容量を増やす

インストーラをダウンロード後に空き容量を確認したところ、500MG程度空いていたのでいけるかなと思いましたが、やはりインストール中に容量不足のエラーが出て止まってしまいました。
そこで、以下の方法で不要なファイルを削除することにしました。

2.1 更新に伴い必要なくなったパッケージを削除

Ubuntu では apt-get autoremove コマンドを使うとOSの?更新に伴い不要となったパッケージを削除してくれるようです。

$ apt-get autoremove

これにより、下図のとおり300MB近く空きました。

2.2 パッケージキャッシュをクリア

これはどれくらい効果があったのかよくわかりませんでしたが、apt のパッケージキャッシュをクリアできるということだったので、以下のコマンドを実行しました。

$ apt-get clean

2.3 不要な linux-image パッケージを削除

以上で1.3GMくらいディスクに空き容量ができましたが、まだSplunkのインストールに失敗します。
そこで、古い linux kernel のパッケージを消すために以下のコマンドを実行しました。

$ dpkg -l ‘linux-‘ | sed ‘/^ii/!d;/'”$(uname -r | sed “s/(.)-([^0-9]+)/\1/”)”‘/d;s/^[^ ]* [^ ]* ([^ ])./\1/;/[0-9]/!d’ | xargs sudo apt-get -y purge

出典元:Cleanup Unused Linux Kernels in Ubuntu
https://markmcb.com/2013/02/04/cleanup-unused-linux-kernels-in-ubuntu/

なお、このコマンドを実行する前に、以下のコマンドでインストールされていパッケージと、今現在使っているLinuxカーネルを念のため確認しておくとよいようです。

$ dpkg -l ‘linux-image-*’
$ uname -r

以上で2GB近くの空き容量が出来、ようやくSplunkのインストールができるようになりました。

3.Splunkのインストールと起動

ここまで来たら、Splunk のインストールは非常に簡単です。以下のコマンドを実行します。

$ sudo dpkg -i <splunkのインストールパッケージ(.debファイル)>

インストールが始まると以下のようにおそらくhttps用の暗号鍵が作成されたあと、自動的にSplunkが起動すると思います。
なお、初期はhttpで起動するので、インターネット経由でアクセスする必要がある場合には、https で起動しなおしてください。方法はコマンドラインやWeb UI経由などいくつかあるようです。

もし自動起動しなかった場合は、以下の操作で起動可能です。なおこの際に上図のようにsudoをつけて起動しようとするとsplunkのパスワードを聞かれるようなので、以下のようにsplunk アカウントにスイッチした後、sudo を付けず実行します。
(なお、splunk アカウントはパッケージインストール時に勝手に作られるようです。)

$ cd /opt/splunk/
$ sudo su splunk
splunk~$ /opt/splunk/bin/splunk start

これでSplunkの起動が完了しましたが、AWS上で起動した場合、お家のPCからアクセスするにはネットワークACLやロードバランサーの設定、通信のhttps化をする必要があります。

この作業も結構大変だったので、別のページとして記載しておきたいと思います。

2020.12.19 後記

最近はもうSpunkをAWS上で利用しなくなったので、アンインストールすることにしました。(なんか、1GB以上使っているし。。)
しかしながら、下記のインストール済パッケージを確認するコマンドで確認してもSplunkが出てきませんでした。(もしかしたら、以前、パッケージ自体は削除したのかもしれませんが。。。)

$ sudo dpkg -l

また、他のサイトをいろいろと検索してみましたが、結局、Splunkの消し方がよくわからなかったので、/opt/splunk を丸ごと消すことにしました。

これで2GB以上、余裕ができましたー。(/dev/xvda1の部分)