Confluent Sigma: 検出エンジニア向けオープンソースソリューションガイド
目次:
セキュリティチームは、複雑なデータ環境で脅威を検出するために、より迅速かつ柔軟な方法を必要としています。高ボリュームのデータストリームでは、操作が複数のツールに分散していると、検出が困難になり、インシデント対応の機敏性が制限され、大規模なデータセットの管理に高いコストがかかります。
Confluent Sigmaは、SIEMから検出ロジックをストリーム処理レイヤーに移動させるShift-Left脅威検出戦略を可能にすることで、これらの課題に対応します。これにより、セキュリティチームは攻撃が進行中の間にデータが正規化、インデックス化、保存されるのを待つのではなく、ソースに近づいたところで高忠実度の信号を検出し、対応することができます。
Confluent Sigmaは Kafka Streams を使用して、SIEMに到達する前にソースデータにSigmaルールを適用します。 Sigma は、ログイベントを記述するためのオープンソースでベンダーニュートラルな標準です。ライブデータストリームにルールを適用することにより、Confluent SigmaはSigmaの移植性をApache Kafkaの速度とスケーラビリティと組み合わせています。
このガイドでは、Confluent Sigmaのインストールとその主要なユースケースの実用シナリオを紹介し、セキュリティチームがDetection as Codeを採用し、より効果的に脅威に対応できるよう支援します。
即時的なスケールと高度なエンタープライズ機能を必要とするセキュリティチームには、 SOCプライムプラットフォーム がConfluent Sigmaに基づく完全にサポートされたエンタープライズグレードのソリューションを提供します。
Confluent Sigmaモジュールと処理ロジック
Confluent Sigma は、次の3つの主要モジュールで構成されています。
- sigma-parser: Sigmaルールを読み取り処理するためのコア機能を提供するJavaライブラリ。
- sigma-streams-ui: Sigma Streamsプロセスと対話するための開発志向のUIで、ユーザーが公開ルールを表示したり、ルールを追加または編集したり、プロセッサのステータスを監視したり、検出を可視化したりすることができます。
- sigma-streams: プロジェクトの主要モジュールで、実際のストリームプロセッサと関連するコマンドラインスクリプトを含みます。
Sigma Streamsプロセッサは、ルールタイプに基づいた検出ロジックを効率的に適用するためにKafka Streamsを活用します。
- 単純トポロジー: このトポロジーは、複数ルールへの1つのサブトポロジーをサポートし、単一イベントレコードに基づく非集約検出に使用されます。プロセッサはKafka Streamsの
flatMapValues
関数を使用してレコードを変換します。各ルールをフィルタリングしてストリーミングデータをDSLルールと照合し、マッチ結果を出力リストに追加します。このプロセスは非常に効率的で、最終検出レコードはすぐに動的出力トピックに送信されます。 - 集計トポロジー: このトポロジーは、各ルールに対して状態を管理するための1つのサブトポロジーを必要とし、カウントや時間ウィンドウを含む複雑でステートフルな検出に使用されます。高度なルールの場合、プロセッサはまずデータを検証し、定義されたキー(例:
id_orig_h
)でグループ化します。そして、ルールからのスライディングウィンドウ(例:timeframe: 10s
)を適用し、そのウィンドウ内でのインスタンスの数をカウントし、最後にルール内の集約および操作に基づいてフィルタリングします(例:count() > 10
)。最終的な集約検出レコードは動的出力トピックに送信されます。
一致が発生した場合、出力前に結果の検出イベントが強化されます。
- ルールメタデータ: イベントには一致するルールの
title
,author
,product
およびservice
. - フィールドマッピング: ルールが正規表現(regex)を使用する場合、抽出されたフィールドは出力に追加されます。
- カスタムフィールド: ルールで定義されたカスタムメタデータは、コンテキストや下流のルーティングのために含まれます。
- 動的出力: 結果は、ルールの
outputTopic
フィールドで指定されたトピックに送信されます。
Confluent Sigmaのインストール方法
ステップ1:開始するには
Confluent Sigmaは、機能するために3つの主要なKafkaトピックに依存しています。Sigma Streamsプロセッサはこれらのトピックを継続的に監視し、ロジックを適用して検出を出力します。
- ルールトピック: Sigmaルールを含む
- 入力データトピック: (例:ログ)などの受信イベントデータを含む。
- 出力トピック: Sigmaルールの1つ以上に一致したイベントを含む。
Sigmaルールは専用のKafkaトピックに公開され、Sigma Streamsプロセッサがこれを監視します。これらのルールは、別のサブスクライブされたトピックからのデータにリアルタイムで適用されます。ルールに一致するレコードは、指定された出力トピックに転送されます。
注意: すべての3つのトピックは構成で定義されなければなりませんが、ルールは特定のルールロジックに基づいて異なるトピックにルーティングするために出力先を上書きすることができます。
Confluent Sigmaを開始する前に、次のものを用意する必要があります。
- Kafka環境
- Apache Kafkaクラスタの実行中(ローカルまたはプロダクション)。
- Kafka CLIツールへのアクセス(kafka-topics、kafka-console-producer、kafka-console-consumer)。
- 適切なネットワーク接続とトピックを作成および管理する適切な権限。
- Sigma Streams アプリケーション
- Confluent Sigma Streamsアプリケーションをダウンロードしてインストールします。
- を確認する
bin/confluent-sigma.sh
スクリプトが実行可能であること。
- Sigmaルール
- YAMLまたはJSON形式の有効なSigmaルールファイル。
- 各ルールは Sigma仕様.
- Sigmaルールローダー (オプション)
- 大量ルールをロードする予定がある場合は、SigmaRuleLoaderユーティリティをインストールしてください。
- 設定ファイル
有効なsigma.properties設定ファイルを持っていることを確認してください:- ルールトピック
- 入力データトピック
- 出力トピック
- ブートストラップサーバ設定
ステップ2:Sigmaルールトピックの作成
Sigmaルールを追加する前に、Sigmaルールトピックを作成してください。以下は、Sigmaルールトピックを作成する例です:kafka-topics --bootstrap-server localhost:9092 --topic sigma_rules --replication-factor 1 --partitions 1 --config cleanup.policy=compact --create
注意: 本番デプロイメントでは、少なくとも 3のレプリケーションファクターを使用してください。ルールはイベントデータと比較して比較的少ないため、 one パーティションが通常は十分です。
ステップ3: Sigmaルールのロード
Sigmaルールは、ユーザー指定のKafkaトピックに保存されます。各Kafkaレコードのキーは次の要件を満たす必要があります。
- タイプ:
string
- ルールのタイトルフィールドに設定される
注意: Sigmaの仕様ではIDフィールドは必要ありませんので、ルールタイトルはユニークでなければなりません。新しく公開または更新されたルールは、実行中のSigma Streamsプロセッサによって自動的に取り込まれます。
ルールは以下を使用してKafkaに取り込むことができます:
- SigmaRuleLoaderアプリケーション
- The
kafka-console-producer
コマンドラインツール
SigmaRuleLoaderを使用したルール取り込み
SigmaRuleLoaderアプリケーションは、YAMLファイルとして一括または単一ルールの取り込みを可能にします。
-fileオプションを使用して単一のSigmaルールファイルをロードします。例:sigma-rule-loader.sh -bootStrapServer localhost:9092 -topic sigma-rules -file zeek_sigma_rule.yml
Sigmaルールを含むディレクトリ全体をロードする場合は、-dirオプションを使用してください:sigma-rule-loader.sh -bootStrapServer localhost:9092 -topic sigma-rules -dir zeek_sigma_rules
CLIによるルール取り込み
標準Kafka CLIを使用してSigmaルールを手動でロードすることもできます。例えば、 kafka-console-producer
ユーティリティ:kafka-console-producer --broker-list localhost:9092 --topic sigma-rules --property "key.separator=:"
CLIを用いたJSON形式によるルール取り込みのコードスニペットはこちらです:--property "key.separator=:"
{"title":Sigma Rule Test,"id":"123456789","status":"experimental","description":"This is just a test.", "author":"Test", "date":"1970/01/01","references":["https://confluent.io/"],"tags":["test.test"],"logsource": {"category":"process_creation","product":"windows"},"detection":{"selection":{"CommandLine|contains|all": [" /vss "," /y "]},"condition":"selection"},"fields":["CommandLine","ParentCommandLine"],"falsepositives": ["Administrative activity"],"level":"high"}
ステップ4: Sigma Streams アプリケーションの実行
Confluent Sigma StreamsはJavaアプリケーションであり、直接実行するか、 confluent-sigma.sh
スクリプトを通して実行できます。スクリプトを使用してアプリケーションを実行するには、次のコマンドを使用します:
bin/confluent-sigma.sh properties-file
Confluent Sigma Streamsの構成検索順序:
- コマンドライン引数 (
properties-file
). $SIGMAPROPS
環境変数。
注意: If you do not specify the properties-file
を指定しない場合、アプリケーションは $SIGMAPROPS
変数を確認します。
- 前者が設定されていない場合、アプリケーションは次のディレクトリを検索して
properties-file
:~/.config
~/.confluent
~/tmp
の sigma.properties
例はこちら.
実装の推奨事項
Kafkaトピックによるルールのホットリロード
主要な運用上の課題として、停止時間なしで検出ルールを更新することがあります。Sigmaルールが追加または修正されるたびにストリーム処理アプリケーションを再起動することは非効率であり、検出カバレッジにギャップを生じさせます。
- 推奨事項: 「ルールトピック」として機能する専用の圧縮Kafkaトピックを作成します。confluent-sigmaアプリケーションはグローバルKTableを使用してこのトピックから消費する必要があります。新しいまたは更新されたSigmaルールがこのトピックに公開されると(ユニークなルールIDをキーとして)、グローバルKTableはリアルタイムに自動的に更新されます。その後、メインのイベント処理ストリームはこのグローバルKTableと結びつけることができ、再起動なしで常に最新のルールセットを確保することができます。
- 影響: これにより停止時間ゼロでルールが展開され、セキュリティアナリストが新しい脅威にほぼ即座に対応できるようになります。ルール管理のライフサイクルをアプリケーション展開ライフサイクルから切り離します。
ルールマッチング前のインストリームでのイベント強化
生のセキュリティログは、しばしば高信頼性アラートに必要なコンテキストを欠いています。例えば、生ログはIPアドレスを含むがその評価を含まない場合や、ユーザーIDを含むがユーザーの部署や役割を含まない場合があります。すべての強化をSIEMに依存すると、コンテキストが遅れ、よりノイズの多いアラートを生成する可能性があります。
- 具体的な推奨事項: メインのSigmaルールマッチングロジックの前に、Kafka Streamsトポロジー内で強化フェーズを実装します。 ストリームテーブル結合 を使用して、着信イベントストリームを強化します。
- 脅威インテリジェンス: 脅威インテリジェンスフィードから読み込まれる既知の悪意のあるIP、ドメイン、またはファイルハッシュのグローバルKTableとイベントストリームを結合します。
- アセット/ユーザー情報: CMDBまたはActive DirectoryフィードからポピュレートされるKTableとイベントストリームを結合し、デバイス所有者、サーバーの重要度、ユーザーの役割などのコンテキストを追加します。
- 影響: これにより、劇的に 誤検知を減少させ and アラート優先度の精度を高めます。重要なサーバーや特権ユーザーが関与するイベントは即座にエスカレーションされます。また、SIEMに送信されるアラートを初期設定でより価値のあるものにします。
ベストプラクティス
専用のKafkaトピック
- 分離性: 異なるデータストリームに専用のトピックを使用することで、それらの間での隔離を提供します。これにより、あるデータストリームの問題(例:トラフィックの急増)が他のストリームに影響を与える可能性が低くなります。
- パフォーマンス: 専用のトピックは、各トピックをその特定のユースケースに最適化した設定を可能にすることでパフォーマンスを向上させることができます。例えば、各トピックに対して異なるパーティション数や異なるレプリケーションファクターを設定することができます。
スケーラビリティ
- 水平スケーリング: Confluent Sigmaアプリケーションは、並行して複数のインスタンスを実行することにより水平スケーリングを行うことができます。各インスタンスはデータのサブセットを処理し、システム全体のスループットを増加させます。
- パーティションニング: 水平スケーリングを有効にするためには、Kafkaトピックをパーティショニングする必要があります。これにより、複数のアプリケーションインスタンスが同じトピックから並行してデータを消費することができます。データを均等にパーティションに配分するパーティションキーを選択することが必要です。
- コンシューマーグループ: 複数のConfluent Sigmaアプリケーションインスタンスを実行する場合、同じコンシューマーグループの一部としてそれらを設定するべきです。これにより、入力トピック内の各メッセージがアプリケーションの一つのインスタンスによってのみ処理されることが保証されます。
暗号化
プロデューサー、コンシューマー、およびKafkaブローカー間のデータの転送を暗号化するために、TLS/SSLを使用するべきです。これにより、データの盗聴や改ざんを防ぎます。
監視
Confluent Sigmaアプリケーションの健康状態とパフォーマンスを本番環境で監視することは非常に重要です。以下のメトリックを監視するべきです:
- 処理されたメッセージの数
- 生成されたアラートの数
- アプリケーションのレイテンシー
- アプリケーションのCPUとメモリ使用量
主要なメトリクス
前述のメトリクスに加えて、以下も監視するべきです:
- コンシューマーラグ: これはトピック内でコンシューマーによってまだ処理されていないメッセージの数です。コンシューマーラグが高いと、アプリケーションが受信データの速度に追いつけていない可能性があります。
- エンドツーエンドのレイテンシー: これはメッセージがプロデューサーからコンシューマーに移動するのにかかる時間です。高いエンドツーエンドのレイテンシーは、ネットワークまたはKafkaクラスターの問題を示している可能性があります。
Confluent Sigmaユースケース
Confluent Sigmaは、セキュリティチームがSigmaルールを直接Kafkaストリームに適用してリアルタイムで脅威を検出できるようにし、データがSIEMに到達する前に異常に対応し、ルールの洗練を効率化することを可能にします。
主なユースケースには次のものが含まれます:
- Shift-Left脅威検出: SIEMにログが到達する前に、ソースで検出ロジックを適用し、ライブ攻撃に対する迅速な対応を可能にします。
- 検出のためのCI/CDパイプラインの設定: ルールの展開と更新を環境全体で自動化し、運用効率および一貫性を向上させます。
- 環境全体のルールのバージョン管理: KafkaトピックやGitを使用して構造化されたルールのバージョン管理を維持し、トレース可能性を確保し、ロールバックを容易にします。
- ログインジェスションのコスト削減: SIEMにすべてのログを取り込むことなく脅威をインフライトで検出し、ストレージと処理コストを削減します。
- SIEMクエリのレイテンシーを除去: リアルタイムのストリームでルールを処理することで高忠実度の検出を即座にアクセスできます。
- 相関速度の向上: Kafka Streams内で集計とスライディングウィンドウロジックを適用してイベントを迅速に相関させ、アラートを生成します。
SOCプライム技術によって強化されたConfluent Sigma
オープンソースのConfluent Sigmaプロジェクトは、Shift-Left検出のための堅牢な基盤を提供しますが、その本当のポテンシャルは、エンタープライズグレードのソリューションと統合されるときに最大限に発揮されます。 SOC Prime。以下の比較は、大規模で複雑な環境の要求に応じてコア機能がどのように進化するかを強調しています。
Confluent SigmaとSOC Primeソリューションは、検知ライフサイクルを劇的に加速させるツールとコンテンツへの直接アクセスを提供します:
- 脅威検知マーケットプレイス: 脅威検知マーケットプレイスを活用することで、セキュリティチームは新たな脅威に対応した15,000以上のSigmaルールから選択し、自動化された方法でKafka環境に直接ストリーミングできます。
- Uncoder AI: SOC PrimeのUncoder AIを使用すると、エンドツーエンドの検知エンジニアリングのためのIDEと共同パイロットとして、防御者は複数の言語フォーマットからSigmaに検知コードを変換し、MITRE ATT&CKに自動マッピングし、AIでゼロからコードを作成したり、即時に調整したりして効率的な脅威検知を確保できます。.
- 運用の卓越性: APIとCI/CDによる自動展開は一貫した繰り返し可能なルール展開を保証し、1日あたり最大23 TB/CPUコアの高スループット性能により、あらゆる環境でリアルタイムでスケーラブルな脅威検知を可能にします。
- 専門サポート: SOC Primeの高度なエンジニアリング専門知識を頼りに、オープンソースの検知スタックのインストール、管理、スケーリングに関する指導付きサポートを受けることができます。