Splunk Universal Forwarder は、Linux や Windows など各種環境で稼働し、ログファイルやイベントデータを Splunk Enterprise / Splunk Cloud へ転送するエージェントです。Forwarder のインストール手順は、Splunk 公式のブログにも情報があるので、正確にはそちらを参照頂く方が良いです。この記事では、著者の作業メモ的な意味合いで、実際に Linux クライアント上で発生したテキストログを Splunk Enterpirise に転送する手順をまとめます。Splunk Enterprise 本体の導入は、こちらで簡単に手順をまとめています。また、具体的にログファイルは何でもよいのですが、サンプルログとしては、こちらの記事で筆者環境に導入したハニーポット(Cowrie)のログ(デフォルトで <インストールフォルダ>var/log/cowrie/ 配下に出力される)に対して、Splunk Forwarder を設定し、ログを監視・送信することで、Splunk 上でリアルタイムに解析することを目指します。
前提確認:取得対象のログの整理
今回は、ハニーポット Cowrie のログを収集対象とします。Cowrie では以下のように複数のログ形式を扱っています。
- テキストログ (cowrie.log):通常のテキスト形式で、SSH/Telnet セッション情報やコマンド履歴などが記録されます。
- JSON形式ログ (cowrie.json):Cowrie は JSON 形式のログも生成可能です(cowrie.cfg で設定)。
いずれのログを取り込んでも良いですが、JSON形式の方が解析などの取りましには扱いやすいかもしれません。本記事ではJSON形式のログを Forwarder で収集する手順例を紹介します。
事前準備:パッケージ用意
Splunk のサイトから、最新のインストールパッケージをダウンロードします。(要Splunkアカウント)
ここでは、debパッケージを利用し、wgetのURLを取得して進めます
$ wget -O splunkforwarder-<バージョン>-linux-amd64.deb "https://download.splunk.com/products/universalforwarder/releases/9.4.0/linux/splunkforwarder-<バージョン>-linux-amd64.deb"
$ ls -lh *.debls -lh *.deb
-rw-rw-r-- 1 piro piro 94M Dec 13 19:28 splunkforwarder-<バージョン>-linux-amd64.deb
Splunk Forwarder のインストールと初期設定
ダウンロードリンクや手順はバージョンによって多少異なる場合がありますが、以下のようなコマンド例で Debian/Ubuntu 用パッケージ (.deb ファイル) をインストールします
$ sudo dpkg -i splunkforwarder-<バージョン>-linux-amd64.deb
Selecting previously unselected package splunkforwarder.
(Reading database ... 76828 files and directories currently installed.)
Preparing to unpack splunkforwarder-<バージョン>-linux-amd64.deb ...
・・中略・・
complete
インストールが完了したら、以下のように初期設定を行います。ライセンス許諾への同意と、ユーザー設定を行います。
$ sudo /opt/splunkforwarder/bin/splunk start --accept-license
・・中略・・
Please enter an administrator username: admin
Password must contain at least:
* 8 total printable ASCII character(s).
Please enter a new password: <-適当に入力(但し、デフォルトパスワード"changeme"は変えたほうが良さそう)
Please confirm new password:
・・中略・・
Starting splunk server daemon (splunkd)...
Done
Forwarder がどのSplunkホスト にログを送るかを設定します。 例として、Splunk Enterprise のサーバーが 9997 番ポートで待ち受けている環境を想定します。
$ sudo /opt/splunkforwarder/bin/splunk add forward-server <SplunkサーバーIP or hostname>:9997
・・中略・・
Added forwarding to: <SplunkサーバーIP or hostname:9997.
設定ファイルは /opt/splunkforwarder/etc/system/local/outputs.conf
に記述されるので、内容を一応確認しておきます。
$ sudo more /opt/splunkforwarder/etc/system/local/outputs.conf
[tcpout]
defaultGroup = default-autolb-group
[tcpout:default-autolb-group]
server = <SplunkサーバーIP or hostname:9997
[tcpout-server://<SplunkサーバーIP or hostname:9997]
再起動時などに Forwarder は自動で起動する様に設定します。
$ sudo /opt/splunkforwarder/bin/splunk enable boot-start
Important: splunk will start under systemd as user: splunkfwd
Systemd unit file installed by user at /etc/systemd/system/SplunkForwarder.service.
Configured as systemd managed service.
次に、Cowrie のログディレクトリを Forwarder が監視するように設定します。
inputs.conf を編集し、ログファイルのパス・sourcetype・index を記載します。
例として cowrie.json
を監視し、Splunk 上のインデックスを cowrie、ソースタイプを cowrie:json とする設定例は以下のとおりです。
$ sudo vi /opt/splunkforwarder/etc/system/local/inputs.conf
[monitor:///opt/cowrie/var/log/cowrie/cowrie.json]
sourcetype = cowrie:json
index = cowrie
設定後、Forwarder を再起動します。
$ sudo /opt/splunkforwarder/bin/splunk restart
Forwarder で指定した index = cowrie
を Splunk 上で利用する場合、あらかじめ Splunk Enterprise 上でインデックス cowrie を作成しておく必要があります。
Splunk Web に管理者権限でログインし、[設定] -> [インデックス] -> [新規インデックス] から名前を cowrie
として新規作成
動作確認
Cowrie に対して、 SSH ないし Telnet アクセスを実行します。
$ ssh root@<cowrieのIP> -p 2222
root@<cowrieのIP>'s password: <- 適当な文字列を入力
root@xxx:~# exit
Splunkのサーチ画面で、index="cowrie" sourcetype="cowrie:json"
と実行し、結果が出ればOKです。
まとめ
本記事では、Cowrie + Splunk Forwarder の組み合わせで、攻撃者が Cowrie にアクセスした際のログをリアルタイムに Splunk へ送信する方法を紹介しました。Cowrie の様なハニーポットのログ活用することで、より具体的なセキュリティの勉強や研究が可能になります。
- 監視対象ログの選定:どんなログを収集分析したいのか、対象を選ぶ
- Splunk Forwarder の導入:Forwarder を利用して、好きなログを Splunk に転送する
- 攻撃状況の可視化:ハニーポットをログを分析して、アタック件数、攻撃元 IP、攻撃内容等の可視化を行う
ぜひ Cowrie と Splunk の連携を通じて、ハニーポットのログ収集・解析を行い、攻撃手法の分析に活用してみてください。
補足
Splukがハングしている場合などは、killコマンドでやり直しする。
$ ps -ef | grep splunk
$ kill <pid>
インストールをやり直したい場合など、アンインストールする場合は以下を実行した後で、/opt/splunkforwarder
フォルダを退避ないし削除する。
$ sudo dpkg -r splunkforwarder