
Strelka Web UI は、Strelka Enterprise File Scanner 用のブラウザおよび API ベースのファイル送信フロントエンドです。ユーザーはファイルを Strelka クラスタに送信し、過去のレスポンス結果を簡単に確認できます。Strelka Web UI は LDAP 認証と API アクセスをサポートし、Strelka スキャナーと対話するための安全かつ柔軟な方法を提供します。このドキュメントでは、Strelka Web UI のセットアップと使用方法、およびその機能と関連プロジェクトについて詳しく説明します。
ファイル送信 UI には以下の機能があります:
デフォルトでは、Strelka UI はシステムをテストできる最小限の「クイックスタート」デプロイメントを使用するように構成されています。このデプロイメントはローカルの Strelka インスタンスを対象とし、ローカルデータベースを起動します。ユーザーは任意のユーザー名/パスワードでこのシステムにアクセスできます。リモートの Strelka インスタンスやデータベースを対象とする場合、または LDAP を認証に使用する場合の追加情報については、追加セットアップセクションを参照してください。
Start or ensure Strelka cluster is ready and accessible.
See https://github.com/target/strelka for more information.
# Terminal 1
# From the ./strelka-ui directory
$ docker-compose -f docker-compose.yml up
1) Open A Browser
2) Navigate to 0.0.0.0:8080
3) Login with:
- Username: strelka
- Password: strelka
このセクションでは、より安全に使用するために、リモートの Strelka インスタンス、ストレージ用のリモートデータベース、認証用の LDAP サーバーを対象とする方法について説明します。これらを有効にするには、環境変数を使用してデフォルトを上書きできます。
バックエンド設定は環境変数を介して提供され、./app/config/config.py で静的に設定できます。
ローカルで実行する場合、設定の優先順位は System environment -> .env -> ./app/config/config.py です。
Docker で実行する場合、設定の優先順位は Docker environment -> System environment -> ./app/config/config.py です。
環境変数の設定については、./app/example.env を参照してください。
以下に ./app/config/config.py の設定項目を示します。
UI の送信テーブルに参照を設定して、ユーザーが request.id に基づいて外部サイトへすばやく移動できるようにすることもできます。./ui/src/config.js を変更し、次の表の SEARCH_URL の例に従うことで、外部サイト(例: SIEM / ロガー)へのリンクをユーザーに提供できます。リンクに <REPLACE> という文字列が含まれていることを確認してください。UI はその文字列を対象ファイルのリクエスト ID に置き換えます。
./ui/src/config.js でサポートされている変更フィールド:
| フィールド名 | 値 | 例 |
|---|---|---|
| SEARCH_URL | 外部アプリケーションの検索 URL | 例: https://search.com/?q=request.id= |
ネットワーク環境でカスタム CA バンドル(例: 企業の TLS 検査プロキシ)が必要な場合、証明書ファイルをリポジトリにコミットせずに、ビルド時と実行時の両方で提供できます。
ビルド時 — docker compose build を実行する前に、CUSTOM_CA_CERT 経由で CA バンドルのパスを渡します。証明書は BuildKit シークレットを使用して一時的にマウントされ、イメージレイヤーに書き込まれることはありません:
CUSTOM_CA_CERT=/path/to/your/ca-bundle.crt docker compose build
# or, combined with up:
CUSTOM_CA_CERT=/path/to/your/ca-bundle.crt docker compose up --build
カスタム CA が不要なオープンネットワークでは、変数を完全に省略してください — ビルドは通常どおり動作します:
docker compose up --build
実行時 — プロジェクトのルートにある certs ディレクトリは、実行中のコンテナ内の /certs にマウントされます。CA バンドルをそこに配置し、./app/strelka_ui/.env または Docker 環境変数として REQUESTS_CA_BUNDLE(および必要に応じて SSL_CERT_FILE)を設定します:
# ./app/strelka_ui/.env
REQUESTS_CA_BUNDLE=/certs/ca-bundle.crt
SSL_CERT_FILE=/certs/ca-bundle.crt
Strelka UI は、ユーザースクリプトによるアクセスのための API ルートも提供します。詳細については、以下のルートを参照してください:
Strelka UI API への認証方法、スキャン統計の収集、Python の requests を使用したファイル送信の例は、./misc/examples/api_examples.py にあります。
データベースは ORM として https://www.sqlalchemy.org/ を使用しています。データベースマイグレーションは Flask-Migrate を通じて Alembic により提供されます。一般的なデータベースタスクを支援するヘルパースクリプト manage.py が用意されています。
新しいデータベースを作成する場合、または既存のデータベースを変更する場合は、次の手順を実行する必要があります - クラスタを起動すると、これらのコマンドが自動的に実行されます。
モデルの変更から新しいマイグレーションを生成します:
現在のデータベース設定を使用してデータベースを更新します
バックエンドアプリケーションは主に以下の技術で構成されています:
フロントエンド UI は、Flask から配信される React を使用して作成された React JS アプリケーションです。UI は Antd ライブラリと Antd ProComponents を使用し、ルーティングは React Router によって処理されます。
Strelka UI および関連コードは、Apache 2.0 ライセンスの条件に基づいてリリースされています。
| フィールド名 | 値 | 必須 |
|---|
| STRELKA_HOST | Strelka ホスト名(例: 0.0.0.0) | 必須 |
| STRELKA_PORT | Strelka ポート番号(例: 57314) | 必須 |
| STRELKA_CERT | Strelka 用証明書のパス(必要な場合)(例: /path/to/cert.pem) | 任意 |
| CA_CERT_PATH | LDAP 用 CA 証明書のパス(必要な場合)(例: /path/to/ca_certs) | 任意 |
| VIRUSTOTAL_API_KEY | VirusTotal ハッシュ検索用の API キー | 必須 |
| VIRUSTOTAL_API_LIMIT | VirusTotal でスキャンするファイル数の上限(デフォルト: 30) | 必須 |
| LDAP_URL | LDAP サーバーの URL(例: ldaps://ldap.example.com:636) | 任意 |
| LDAP_SEARCH_BASE | LDAP クエリの検索ベース(例: DC=example,DC=com) | 任意 |
| LDAP_USERNAME_ORGANIZATION | LDAP クエリのユーザー名組織(例: org//) | 任意 |
| LDAP_ATTRIBUTE_ACCOUNT_NAME_FIELD | アカウント名の LDAP 属性(例: sAMAccountName) | 任意 |
| LDAP_ATTRIBUTE_FIRST_NAME_FIELD | 名の LDAP 属性(例: givenName) | 任意 |
| LDAP_ATTRIBUTE_LAST_NAME_FIELD | 姓の LDAP 属性(例: sn) | 任意 |
| LDAP_ATTRIBUTE_MEMBER_OF_FIELD | メンバーシップの LDAP 属性(例: memberOf) | 任意 |
| LDAP_ATTRIBUTE_MEMBER_REQUIREMENT_FIELD | メンバー要件の LDAP 属性(例: AD Attribute) | 任意 |
| STATIC_ASSET_FOLDER | UI のビルドフォルダー(例: build) | 必須 |
| MIGRATION_DIRECTORY | SQLAlchemy マイグレーションディレクトリ(例: ./migrations) | 必須 |
| DATABASE_USERNAME | データベースのユーザー名(例: admin) | 必須 |
| DATABASE_PASSWORD | データベースのパスワード(例: password123) | 必須 |
| DATABASE_HOST | データベースのホスト名(例: db.example.com) | 必須 |
| DATABASE_PORT | データベースのポート番号(例: 5432) | 必須 |
| DATABASE_DBNAME | データベース名(例: mydb) | 必須 |
| API_KEY_EXPIRATION | API キーの有効期限(日数)(例: 30) | 必須 |
| SEARCH_NAME | 外部アプリケーションの検索名 | 例: Splunk |
| DEFAULT_EXCLUDED_SUBMITTERS | 送信テーブルビューから除外されるデフォルトユーザー。デフォルトで自動化を非表示にするのに便利です。 | 例: SearchBot |