OpenCTI Docker 構築ガイド — 実践デプロイと初回ログイン
OpenCTI を Docker Compose で構築する実践手順。構成、起動順、ヘルス確認、初回ログイン、コネクタ運用の初期戦略まで解説。
OpenCTI Docker 構築ガイド — 実践デプロイと初回ログイン
TL;DR
OpenCTI は単一コンテナではなく、opencti 本体、worker、各種 connector、elasticsearch、redis、rabbitmq、minio を含むスタック運用です。起動順とヘルスを段階確認し、最初はコネクタを絞ることで安定運用に入りやすくなります。
構成概要
| コンポーネント | 役割 | 主なポート |
|---|---|---|
opencti | Web UI / API バックエンド | 8800 |
worker | バックグラウンド処理 | 内部 |
| connectors | フィード取込・出力処理 | 内部 |
elasticsearch | 検索/ドキュメントストア | 内部 9200 |
redis | キャッシュ・キュー補助 | 内部 6379 |
rabbitmq | メッセージブローカー | 5672, 管理 15672 |
minio | オブジェクトストレージ | 9000 |
sequenceDiagram
participant A as Attacker machine
participant C as Docker Compose
participant ES as Elasticsearch
participant MQ as RabbitMQ
participant RD as Redis
participant MO as MinIO
participant O as OpenCTI
participant W as Workers
participant CN as Connectors
A->>C: docker compose up -d
C->>ES: 起動 + healthy
C->>MQ: 起動 + healthy
C->>RD: 起動 + healthy
C->>MO: 起動 + healthy
C->>O: 本体起動
O-->>C: platform healthy
C->>W: worker 起動
C->>CN: connector 起動
事前準備
- Docker Engine + Docker Compose plugin
- 例:
/opt/threat-intelligence/openctiの作業ディレクトリ - Elasticsearch を考慮した十分なメモリ/ディスク
- コネクタを段階的に有効化する運用方針
Step 1: .env を設定する
まず .env の管理者情報とベースURLを定義します。
1
cd /opt/threat-intelligence/opencti
最低限設定すべき項目:
OPENCTI_ADMIN_EMAIL=admin@admin.test
OPENCTI_ADMIN_PASSWORD=<STRONG_PASSWORD>
OPENCTI_ADMIN_TOKEN=<RANDOM_UUID>
OPENCTI_BASE_URL=http://<YOUR_SERVER_IP>:8800
8800 で公開するなら、OPENCTI_BASE_URL も同じURLに揃えるのが重要です。
Step 2: スタック全体を起動する
1
docker compose up -d
初回は起動に時間がかかるので、段階的に状態を見ます。
1
docker compose ps
期待する順序:
elasticsearch/rabbitmq/redis/minioがhealthyopenctiがhealthy- workers / connectors が
Up
Step 3: UI の到達確認
1
curl -I http://127.0.0.1:8800
200 系応答なら UI は到達可能です。
初回ログイン
- URL:
http://<SERVER_IP>:8800 - ユーザー:
OPENCTI_ADMIN_EMAIL - パスワード:
OPENCTI_ADMIN_PASSWORD
ログイン後の推奨初動:
- 管理者パスワードとトークン運用の見直し
- 管理者共有を避け、役割別ユーザーを作成
- connector の権限・実行周期を見直し
コネクタ初期運用の考え方
最初から大量コネクタを有効化すると、取り込み負荷とノイズログが増えがちです。まずは MITRE + 少数の主要フィードで品質と負荷を見て、段階的に拡張する運用が安定します。
sequenceDiagram
participant A as Attacker machine
participant UI as OpenCTI UI/API
participant MQ as RabbitMQ
participant W as Worker
participant CN as Connector
participant DB as Elasticsearch/MinIO
A->>UI: connector 範囲とスケジュール設定
CN->>MQ: ジョブ/イベント投入
W->>MQ: タスク取得
W->>DB: エンティティ/リレーション正規化・保存
UI-->>A: グラフ・オブザーバブル反映
よくある落とし穴
1) アクセスポート間違い
8800 に公開しているのに 8080 へアクセスすると接続できません。docker compose ps で公開ポートを確認します。
2) Base URL 不一致
OPENCTI_BASE_URL が実際の公開URLと違うと、セッションやリンク動作が不安定になります。
3) 初期同期時のコネクタ警告
初回同期では一時的な警告が出ることがあります。継続的な失敗かどうかをログで切り分けて判断します。
運用前ハードニングチェック
- UI/API のアクセス元制限
.envをGit管理外に保つ- Elasticsearch/MinIO 含むバックアップ設計
- worker/connector の継続監視
- イメージバージョン固定とロールバック手順
参考
This post is licensed under CC BY 4.0 by the author.