株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

Falcon NG-SIEM で フリート管理(Fleet Management)を使ってみよう。

Falcon NG-SIEMという製品、皆さんはご存じでしょうか?
CrowdStrike社が提供するSIEM製品(SaaSサービス)になります。製品の詳細はこちらのメーカーWebサイトをご覧ください。

SIEM製品なのでイベント(ログ)を取り込む必要がでてきます。Falcon NG-SIEMはどのロケーションのイベント(ログ)でも取り込むことができます。
例えば…

  1. 他社SaaSサービス
  2. パブリッククラウド上のサーバー群
  3. オンプレミス環境のサーバー群

のケースに対応可能です。
1.のケースではCrowdStrike社が対応しているSaaSサービスが対象となります。
2.と3.のケースでは LogScale Collector というデータ収集コンポーネントを利用し、ログデータを効率的に収集、処理、転送します。
これまでこのデータ収集コンポーネントのステータスをFalcon Cloud上から管理・確認することができませんでしたが新しくリリースされた フリート管理(Fleet Management) 機能を利用することで、ステータスの管理、設定のConfig変更が実施できるようになりました。

今回は、このフリート管理を利用してLogScale Collectorを設定していきたいと思います。

利用までの大枠の手順

  1. HTTP/HECイベントを取得する設定を行い、API URL/Tokenを作成
  2. LogScale Collecotorをインストール
  3. 登録トークンを適用(sudo humio-log-collector enroll xxxxxx)
  4. Falcon UI上でConfigを作成(LogScale Collecotorに適用するConfig)
  5. グループの作成→作成したConfigを適用するように設定、対象となるLogScale Collecotorサーバーを指定

環境

LogScale Collectorをインストールする環境としてLinuxサーバーを1台用意します。

  • OS: Alma Linux 9.5 (Teal Serval)
  • cpu: 4core
  • memory: 8GB
  • Disk: 80GB

事前準備

今回はNG-SIEMで連携する実際の機器やサービスを用意せずに、スクリプトで作成した簡易的なログを取り込むことで検証します。
LogScale Collector サーバー上で下記のスクリプトを作成し実行しておきます。

  • Filename: script.sh
#!/bin/bash

# 追加する文字列のベース
BASE_STRING="samplelog"

# スクリプトのあるディレクトリを取得
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)

# 出力先ファイル
OUTPUT_FILE="$SCRIPT_DIR/output.txt"

# ホスト名とプロセス情報を取得
HOSTNAME=$(hostname)
PID=$$

# 無限ループで10秒ごとに追記
while true; do
    # 現在の日時を取得 (フォーマットはISO 8601形式に近い)
    CURRENT_TIME=$(date +"%Y-%m-%dT%H:%M:%S%z")

    # 最終的なログ文字列 (key=value形式)
    LOG_ENTRY="timestamp=$CURRENT_TIME hostname=$HOSTNAME pid=$PID message=$BASE_STRING"

    # ファイルに追記
    echo "$LOG_ENTRY" >> "$OUTPUT_FILE"

    # 10秒待機
    sleep 10
done

script.shを実行するとscript.shを配置したディレクトリに output.txt というファイルが作成されます。
output.txt のフルパスが後ほど必要になりますので、確認してメモしてください。

ここでは /home/user/output.txt に作成されています。
ファイルは10秒ごとにエントリを追加しますので、スクリプトを実行したコンソールはそのまま実行し続けてください。
※ この先の作業でLogScale Collectorサーバーに対しての操作は別のコンソールを開いて実施します。

Permissionについて スクリプトの保存場所、output.txtの出力場所によってはLogScale Collectorにアクセス権が不足していてファイルを参照できない場合があります。
事前にすべてのユーザーがファイルを参照できるように設定してください。
参考:
sudo chmod a+r /home/user/output.txt /home/user
sudo chmod a+x /home/user

  • 出力されるログサンプル

HTTP/HECイベントを取得する設定を行い、API URL/Tokenを作成

Falcon Console上で作業を実施します。
https://falcon.us-2.crowdstrike.com/data-connectors/ を開き、"HEC"で検索します。
HEC / HTTP Event Connector をクリックします。

Connectorの設定を行います。本来であればログフォーマットに合わせて設定やパーサーの選択をしますが、今回はフリート管理の検証のため単純にログの取り込みを行うための設定のみ行います。

設定名 設定値
Data Source samplelog
Data Type CSV
Connector name samplelog-fleetmgmt-test
Description(optional)
Parsers kv (Generic Source)

作成後、APIキーの作成ボタンが表示されますのでAPIキーを作成し、値を保存します。

LogScale Collectorをインストール

LogScale Collectorをインストールします。インストーラは https://falcon.us-2.crowdstrike.com/support/tool-downloads から LogScale Collector For RHEL - X64, v1.8.1 をダウンロードします。

Logscale Collector サーバーでインストールを実行します。
ドキュメントは LogScaleのドキュメントを参照します。
- https://library.humio.com/falcon-logscale-collector/log-collector-install-custom-linux.html

  • インストールコマンド: sudo rpm -ivh humio-log-collector_1.8.1_linux_amd64.rpm
$ sudo rpm -ivh humio-log-collector_1.8.1_linux_amd64.rpm

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for user:
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:humio-log-collector-1.8.1-1      ################################# [100%]

登録トークンを適用

LogScale Collectorサーバーがフリート管理配下となるように登録トークンを適用します。
この作業実施前はローカル管理の状態であるため、LogScale CollectorのConfigは下記のようになっています。

$ sudo cat /etc/humio-log-collector/config.yaml
dataDirectory: /var/lib/humio-log-collector
sources:
#  var_log:
#    type: file
#    include: /var/log/*
#    exclude: /var/log/*.gz
#    sink: humio
sinks:
  humio:
    type: humio
    token: <ingest-token>
    url: https://cloud.humio.com

登録トークンはデフォルトで用意されているものがあります。今回はこのトークンを利用します。
https://falcon.us-2.crowdstrike.com/data-connectors/fleet-management/enrollment-tokens

Default Collector install token の目のアイコンをクリックするとコマンドが表示されます。

Linux用のコマンドを利用します。

sudo humio-log-collector enroll eyJoZWFkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
$ sudo humio-log-collector enroll eyJoZWFkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[sudo] password for user:
The LogScale Collector was enrolled successfully and is now managed by https://flc-api.us-2.crowdstrike.com.

The local configuration file was written to /etc/humio-log-collector/config.yaml and the data directory is located at /var/lib/humio-log-collector.

The service was restarted.

この状態でConfigを確認します。フリート管理の値が設定されます。

$ sudo cat /etc/humio-log-collector/config.yaml
dataDirectory: /var/lib/humio-log-collector
fleetManagement:
  url: https://flc-api.us-2.crowdstrike.com
  mode: full

Falcon ConsoleにLogScale Collectorサーバーのエントリが追加されていることが確認できます。
https://falcon.us-2.crowdstrike.com/data-connectors/fleet-management/overview

現時点では何も設定していないので、"No config" となっています。

Falcon UI上でConfigを作成

ログ取り込み用のConfigを作成します。
事前準備で作成しているログファイルの中身をイベントとして取得する設定とイベントデータを作成したAPI URLに送付するように設定します。
Configのサンプルはこちら
https://library.humio.com/falcon-logscale-collector/log-collector-config-advanced-example.html

sources:
  samplelog:
    type: file
    include:
      - "/home/user/output.txt"  
    sink: fleetmgmt_test_sink

sinks:
  fleetmgmt_test_sink:
    type: hec
    # 作成したAPI URL
    url: https://e98a0265f97b4fcc9173041051f928de.ingest.us-2.crowdstrike.com/services/collector
    # 作成したAPI KEY
    token: 6d7bf1ec497542af9efdcc8c43792c76

設定の詳細はドキュメントをご確認ください。
簡単な動作説明としては、sourcesで指定されたファイルやSyslog等をsinkで指定した宛先に送付するという構造になります。

https://falcon.us-2.crowdstrike.com/data-connectors/fleet-management/config-overview
設定の概要の一覧から New config をクリックします。
Nameを入力し、Empty config を選択して新規作成にすすみます。

上記のConfigを左側のDraft editorに上記のConfigを入力し、SavePublish をクリックしてConfigを後悔します。

グループの作成→作成したConfigを適用するように設定、対象となるLogScale Collecotorサーバーを指定

フリート管理のグループを作成します。
グループに適用するConfigとグループに所属するLogScale Collectorサーバーを指定します。

https://falcon.us-2.crowdstrike.com/data-connectors/fleet-management/groups
New groupをクリックします。
Name を指定し、先ほど作成したConfigをドロップダウンリストから指定します。

グループに所属させるLogScale Collectorサーバーを指定します。
Type query to filterにクエリを書き、対象を選択します。
ここでは、hostname= のフィルタで指定します。フィルタ入力後にRunをクリックすると、対象ホストがフィルタで選択されているか確認できます。
Create groupでグループの作成を完了します。

動作確認

Falcon UI

フリートの概要 から対象のLogScale CollectorサーバーにConfigが適用されていることを確認します。
https://falcon.us-2.crowdstrike.com/data-connectors/fleet-management/overview

"See more details" から詳細を確認できます。

高度なイベント検索 を使って、ログが取り込まれているか確認します。LogScale Collectorサーバーのホスト名だけを入力して検索します。
https://falcon.us-2.crowdstrike.com/investigate/search

以上がフリート管理の設定方法です。
実際の運用設定ではSyslogを受信したイベントをFalcon NG-SIEMに送付する設定や、送付したイベントようのパーサーの設定などが必要となってきます。
Falcon NG-SIEMの導入や運用についてご質問がございましたらネットワールドまでご連絡いただければと思います。