DockerでTheHive & Cortexを構築:手動のアラート管理から脱却するためのSOCの強力な武器

Security tutorial - IT technology blog
Security tutorial - IT technology blog

手動によるアラート管理の混乱

SOCの運用を担当しているなら、SIEMやEDR、メールレポートなどの膨大なダッシュボードに囲まれて一日が始まる光景は珍しくないでしょう。不審なIPをコピーしてVirusTotalでチェックし、その結果をExcelに転記したりSlackで報告したりといった、退屈で疲れるルーチン作業の繰り返しです。

1日に5〜10件程度なら対応できるかもしれません。しかし、その数が50件、100件と増えると、手動での対応は致命的な欠陥を露呈します。重要なIoC(Indicator of Compromise)を見落としやすくなるだけでなく、誰がどのケースを担当しているか不透明になり、作業の重複やリソースの浪費、そして対応時間(MTTR)の増大を招きます。

なぜExcelやJiraはSOCの「救世主」になれないのか?

コスト削減のためにJiraでセキュリティインシデントを管理しようとする組織も多いですが、実際には失敗に終わることがほとんどです。一般的なタスク管理ツールには、セキュリティ特有の「遺伝子」が欠けているからです。

  • データの自動相関がない: Jiraは、そのIPアドレスが3ヶ月前の別の攻撃キャンペーンに出現したものであることを教えてはくれません。
  • 「コンテキストスイッチ」の悪夢: IP、ドメイン、ファイルのハッシュ値をチェックするために、何十ものブラウザタブを行き来する必要があります。これにより、アナリストの作業効率は最大40%低下します。
  • 断片的な対応プロセス(プレイブック): Excel上の無機質なメモだけで、SOC Tier 1のアナリストにSOP(標準作業手順書)を厳守させるのは非常に困難です。

TheHive + Cortex:オープンソース界最強のコンビ

これらを根本的に解決するために、TheHiveCortexの組み合わせは現在最高の選択肢です。これは、入手可能な中で最も強力なオープンソースSOARエコシステムです。

  • TheHive: 指揮センター(ケース管理)の役割を担います。すべてのアラートを集約し、調査を管理し、科学的にタスクを割り当てる場所です。
  • Cortex: 強力な分析「エンジン」です。手動でチェックする代わりに、IPを投入するだけでCortexが100以上のサードパーティサービス(VirusTotal, Shodan, AbuseIPDBなど)に自動で問い合わせ、30秒以内に結果を返します。

Docker ComposeによるTheHive 5とCortexのインストールガイド

Dockerによるデプロイは、このシステムを構築する最短ルートです。Linux上でのJavaライブラリの競合や複雑なデータベース設定の悩みから解放されます。

ステップ1:システムリソースの準備

TheHiveとElasticsearchはかなり多くのRAMを消費します。最低でも8GB RAM(長期的な安定運用のために16GB推奨)を搭載した Ubuntu 22.04サーバーを用意してください。

最初からセキュリティを意識することが重要です。パスワード生成ツールなどを使用して、データベースに強力なパスワードを設定してください。パスワードがネットワーク経由で送信されないよう、完全にブラウザ上で動作するツールの使用を優先しましょう。

ステップ2:docker-compose.ymlファイルの構成

TheHive 5システムは、Cassandra(ストレージ)、Elasticsearch(クエリ)、Minio(ファイル保存)、そしてCortexの複数のコンポーネントで構成されています。以下は、迅速にデプロイするために最適化された設定ファイルです。

version: '3.8'
services:
  cassandra:
    image: cassandra:4
    container_name: cassandra
    environment:
      - MAX_HEAP_SIZE=1G
      - HEAP_NEWSIZE=200M

  elasticsearch:
    image: elasticsearch:7.17.9
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms2g -Xmx2g"

  minio:
    image: minio/minio
    container_name: minio
    command: server /data
    environment:
      - MINIO_ROOT_USER=thehive
      - MINIO_ROOT_PASSWORD=your_strong_password

  cortex:
    image: thehiveproject/cortex:latest
    container_name: cortex
    depends_on:
      - elasticsearch
    ports:
      - "9001:9001"

  thehive:
    image: thehiveproject/thehive:5.2
    container_name: thehive
    depends_on:
      - cassandra
      - elasticsearch
      - minio
      - cortex
    ports:
      - "9000:9000"

重要な注意点: 実行前に、ホストマシンで sudo sysctl -w vm.max_map_count=262144 コマンドを実行してください。この設定がないと、Elasticsearchは起動時にクラッシュします。

ステップ3:起動と確認

準備が整ったら、次のコマンドでシステムを起動します。

docker-compose up -d

2〜3分ほどお待ちください。その後、http://<IP-Server>:9000 にアクセスします。デフォルトのユーザー名/パスワードは admin/secret です。ログイン後、最初に行うべきことはパスワードの即時変更です。

実運用における「血肉となる」経験則

デプロイはあくまで第一歩です。システムを真に効果的に活用するために、以下の4つのポイントに注意してください。

1. CortexのAnalyzerを厳選する: 何百ものアナライザーをすべてインストールしようとしないでください。VirusTotal、AlienVault OTX、AbuseIPDBなど、真に質の高いものに集中しましょう。多すぎると情報のノイズが増え、帯域幅を浪費します。

2. ケーステンプレートの標準化: アナリストにいちいちタイトルを手入力させないでください。「フィッシング」、「ブルートフォース」、「マルウェア」などのテンプレートをあらかじめ作成しましょう。具体的なタスクを定義しておくことで、SOC Tier 1が正確に対応でき、人的ミスを最小限に抑えられます。

3. 多層的なバックアップ戦略: TheHiveのデータはCassandra、ES、Minioに分散しています。Dockerボリュームだけに頼らず、定期的なバックアップスクリプトを設定し、独立したストレージサーバー(オフサイトバックアップ)に転送するようにしましょう。

4. SIEMとの自動連携: SOARの真の力は自動化にあります。Wazuhやお使いのSIEMからAPI経由でTheHiveにアラートを自動送信するように設定してください。これにより、SOCチームはデータの収集に時間を取られることなく、対応そのものに集中できるようになります。

TheHiveとCortexを使いこなすことで、SOCチームの立ち位置は、インシデントを追いかける「受動的」な状態から、ゲームをコントロールする「能動的」な状態へと完全に変わります。application.conf の設定で行き詰まった場合は、下のコメント欄で質問してください。サポートします!

Share: