こんにちは。torippy1024です。
今日は、Splunk SOAR(無償のCommunity Edition)をインストールしていくつかのplaybookを実行するラボを試してみます。
SOARとは何か、どんなものかを知るための手助けとなれば幸いです。
Splunk SOARとは
Splunk SOARは、Splunkが提供するSOAR製品です。
SOAR(Security Orchestration, Automation and Response)という名の通り、セキュリティオペレーション自動化に関連する機能をもつ製品です。
オンプレ版とクラウド版が両方存在しています。
Splunk SOARの基本用語
Splunk SOARを学ぶ上で、とりあえず最初に覚えたほうが良いと思われる基本用語を以下に示します。
(個人的な見解です)
| 用語 | 説明 |
|---|---|
| コンテナ(Container) | SOARに取り込まれたセキュリティイベントを格納する単位。イベントメッセージの他、ステータス、重大度、オーナー、タグ、ラベル、アーティファクトなどの情報を含む。コンテナにはイベントとケースという二つのタイプがある。 |
| イベント(Event) | コンテナのデフォルトのタイプ。外部から取り込まれたセキュリティイベントは通常イベントとして登録・表示される。 |
| ケース(Case) | イベントに対し、調査する必要があると判断されたものをケースとして昇格させることができる。ケースとなったコンテナは親子関係を持つことができ、他のイベントを子としてケースに含めることができる。ケース単位でSOARアナリストは調査を行う。 |
| アーティファクト(Artifact) | ファイルハッシュ、IPアドレス、メールヘッダーなど、コンテナに追加される情報。SOARアナリストが調査や判断を行う際に参考にするための情報や、収集したエビデンスなどを指す。 |
| Common Event Format(CEF) | アーティファクトに関する情報を示すKey-Valueペア。具体的には、sourceAddress=192.0.2.10などの情報を示す。1つのアーティファクトには複数のCEFを含めることができるが、同一名のCEFを複数含めることはできない。 |
| ラベル(Label) | コンテナに付与される情報。特定のラベルがついているコンテナに対して自動でPlaybookを実行するなどの処理が可能。デフォルトでは、コンテナにはeventsというラベルが付与されている。 |
| App | SOARとサードパーティのセキュリティデバイス/サービスとの接続機能を追加するための仕組み。AppはSplunk SOARにインストールし、他製品へのセキュリティデバイス/サービスへのアクションを提供する。(名称は同じAppでsplunkbaseからダウンロードできるものだが、Splunk Enterprise/CloudのAppとは全く構成が異なるものなので注意) |
| アセット(Asset) | Appに対し、接続情報などのパラメータを指定して実体化させたインスタンス。Appをアセットにすることで、SOARはそのAppに含まれるアクションなどを実行できるようになる。 |
| プレイブック(Playbook) | SOAR上で実行可能な一連の自動化処理のこと。IPアドレスからドメイン名を逆引きし、信頼性の低いドメインからのアクセスの場合はそのIPアドレスからのアクセスを拒否する設定をFWに設定する、などの一連の処理をまとめることができる。 |
| ブロック(Block) | プレイブックの構成要素。Action/Utility/Decision/Promptなどのいくつかの種類がある。(https://help.splunk.com/en/splunk-soar/soar-on-premises/build-playbooks/8.7.0/use-the-playbook-editor-to-create-and-view-playbooks-to-automate-analyst-workflows/add-a-new-block-to-your-splunk-soar-on-premises-playbook) |
| アクション(Action) | Appがサードパーティのセキュリティデバイス/サービスに対して提供する操作の単位。IPアドレスからドメイン名を逆引きする、IPアドレスを指定してそのIPアドレスからのアクセスを拒否する設定をFWに設定する、などの処理を指す。プレイブック内のActionブロックから実行する他、GUIから単独で実行することもできる。 |
参考:
About Splunk SOAR (On-premises)
https://help.splunk.com/en/splunk-soar/soar-on-premises/use-splunk-soar-on-premises/8.7.0/introduction/about-splunk-soar-on-premises
Splunk SOAR Community Licenseの制限
今回利用するCommunity Licenseは、無償で利用可能なオンプレ版のライセンスです。
公式ドキュメントによると、以下の制限があるようです。
- 100 licensed actions per day(1日あたりに実行可能なアクションは100まで)
- 1 tenant(マルチテナント構成は不可)
- 5 cases in the New or Open states(New/Openステータスで保持可能なケースは5まで)
利用可能な機能にはほぼ制限はありませんが、プレイブックでなく、プレイブック中の要素であるアクションが100個/day、オープン中のケースが5個まで(クローズしたものは含まれませんし、ケースに昇格させずコンテナのまま運用することも可能ですが)という条件は、本番環境で運用するにはだいぶ小規模な環境に限られると思われます。
システム要件(オンプレ版 バージョン8.7の場合)
Splunk SOARが動作するためのシステム要件は以下の通りです。今回はバージョン8.7を使用します。
AWS EC2上で、OSはRHEL9,インスタンスタイプはt3.large(2 vCPUs, 8 GiB of memory), ストレージgp3 30GBを指定してラボ環境を構築したところ、本手順で紹介するラボは動作しました。
| 項目 | 値 | 備考 |
|---|---|---|
| OS | Red Hat Enterprise Linux 8.10/9.7以上, Amazon Linux 2023.10.20260330以上, Oracle Linux 8.10/9.7以上 | RPMパッケージを利用するためRed Hat系がよい様子 |
| CPU/メモリ/ディスク | 4コアCPU/8GBメモリ/500GBストレージ | ストレージサイズは使い方次第で増減 |
| ネットワーク通信許可 | 22/TCP, 8443/TCPのインバウンド通信を許可, また本ラボ手順ではwgetによってインストールメディアを取得しているため、ラボ手順通り実行する場合はアウトバウンドのHTTPS通信許可も設定すること | SOARへのデフォルトのWebアクセスポートは8443。また本ラボでは使用していないポートの解放も環境によっては必要な可能性があるため、ドキュメントを参照すること |
System requirements for evaluation use
https://help.splunk.com/en/splunk-soar/soar-on-premises/install-and-upgrade-soar-on-premises/8.7.0/system-requirements/system-requirements-for-evaluation-use
Splunk SOAR (On-premises) ports and endpoints
https://help.splunk.com/en/splunk-soar/soar-on-premises/install-and-upgrade-soar-on-premises/8.7.0/system-requirements/splunk-soar-on-premises-ports-and-endpoints
Community Editionのインストーラーは以下よりダウンロード可能です。
https://www.splunk.com/en_us/download/soar-free-trial.html
インストール手順
コマンドだけ、淡々と書いていきます。
ロケール/言語の設定とyumアップデート
(公式ドキュメントではlocaleとkeymapはusを指定するよう記載されているので、それに従っています)
sudo localectl set-locale LANG=en_US.UTF-8
sudo localectl set-keymap us
sudo yum clean all
sudo yum update -y
firewalld/chronydのインストールと有効化(インストール時にfirewalld/chronydのプロセスをチェックされるため必須と思われる)
sudo yum install -y firewalld chrony python3 wget tmux
sudo systemctl enable --now firewalld
sudo systemctl enable --now chronyd
sudo firewall-cmd --permanent --zone public --add-port 22/tcp
sudo firewall-cmd --permanent --zone public --add-port 8443/tcp
sudo firewall-cmd --reload
SOARユーザーの作成
sudo useradd -m -s /bin/bash soar
sudo passwd soar
# (soarのパスワードを入力)
sudo mkdir -p /opt/soar
sudo chown -R soar:soar /opt/soar
SOARインストールメディアの展開
wget -O splunk_soar-unpriv-8.7.0.232-281d350a-el9-x86_64.tgz "https://download.splunk.com/products/splunk_soar-unpriv/releases/8.7.0/linux/splunk_soar-unpriv-8.7.0.232-281d350a-el9-x86_64.tgz"
sudo tar -xzvf splunk_soar-unpriv-8.7.0.232-281d350a-el9-x86_64.tgz -C /home/soar/
sudo chown -R soar:soar /home/soar/splunk-soar
tmuxの開始(sshが切れた場合でも実行を継続するために使用)
tmux new -s soar-install
インストーラー準備コマンドの実行
sudo /home/soar/splunk-soar/soar-prepare-system --splunk-soar-home /opt/soar --https-port 8443 --splunk-soar-user soar
インストーラー準備コマンドを実行すると、いくつかの質問が表示されます。
クラスターに関する質問以外は、とりあえずYで回答しておけばよさそうです。
またインストーラー準備コマンドとインストーラー実行中にsshセッションが切れることがあります。
その際は再度sshでログインし、tmux attach -t soar-installを実行するとインストール中の状態に戻ることができます。
| 質問 | 指定する値 | 備考 |
|---|---|---|
| Install pre-requisite RPM packages required by Splunk SOAR (Y/n): | Y | yesと答える必要あり |
| GlusterFS is only needed if you are using an external file share. This is common if you're constructing a Splunk SOAR cluster. Do you want to run this step? (Y/n): | n | 今回はクラスター構成にしないためno |
| Enable the chronyd service to guarantee clock synchronization. Do you want to run this step? (Y/n): | Y | 事前にchronydを構成していれば聞かれない可能性あり |
| Create a non-privileged user for running Splunk SOAR (On-premises). (Y/n): | Y | soarユーザーを作成したため聞かれない可能性あり |
| Do you want to set a password for <non-privileged_user> now? (Y/n): | Y | soarユーザーのパスワードを設定されていれば聞かれない可能性あり |
| Set system resource limits for Splunk SOAR user, particularly file descriptor limits, which are low by default. (Y/n): | Y | インストールディレクトリの空き容量が500GB以下だと警告が出る。警告なので無視して進めることが可能 |
インストール実行
su - soar
# (soarのパスワードを入力)
/home/soar/splunk-soar/soar-install --splunk-soar-home /opt/soar --https-port 8443
soarユーザーからログアウト/tmux終了
exit
# soarからログアウト
exit
# tmux終了
ブラウザでのSOARログイン画面表示
https://<public_ip>:8443
デフォルトのユーザー名はsoar_local_admin、パスワードはpasswordです。
ログインし、利用許諾などへの合意が済めば初回インストールは完了です。
無事にインストールとログインが完了しました。
次回からは、このSOARを使っていくつかのプレイブックを作成して実行してみます。
参考資料
SOAR Community Edtionのダウンロード先
https://www.splunk.com/en_us/download/soar-free-trial.html
System requirements for evaluation use
https://help.splunk.com/en/splunk-soar/soar-on-premises/install-and-upgrade-soar-on-premises/8.7.0/system-requirements/system-requirements-for-evaluation-use
Splunk SOAR (On-premises) ports and endpoints
https://help.splunk.com/en/splunk-soar/soar-on-premises/install-and-upgrade-soar-on-premises/8.7.0/system-requirements/splunk-soar-on-premises-ports-and-endpoints
Install Splunk SOAR (On-premises) as an unprivileged user
https://help.splunk.com/en/splunk-soar/soar-on-premises/install-and-upgrade-soar-on-premises/8.7.0/install-splunk-soar-on-premises/install-splunk-soar-on-premises-as-an-unprivileged-user
Splunk SOAR apps overview
https://help.splunk.com/en/splunk-soar/soar-cloud/develop-apps/develop-apps/introduction/splunk-soar-apps-overview

