
파일 제출 및 분석을 위한 Strelka 웹 UI
[Releases][release] | [Pull Requests][pr] | [Issues][issues]
[![GitHub release][img-version-badge]][repo] [![Build Status][img-actions-badge]][actions-ci] [![Pull Requests][img-pr-badge]][pr] [![Slack][img-slack-badge]][slack] [![License][img-license-badge]][license]
Strelka Web UI는 Strelka Enterprise File Scanner를 위한 브라우저 및 API 기반 파일 제출 프론트엔드입니다. 사용자는 Strelka 클러스터에 파일을 제출하고 과거 응답 결과를 손쉽게 검토할 수 있습니다. Strelka Web UI는 LDAP 인증과 API 접근을 지원하여 Strelka 스캐너와 안전하고 유연하게 상호작용할 수 있는 방법을 제공합니다. 이 문서는 Strelka Web UI의 설정 및 사용 방법과 기능, 관련 프로젝트에 대한 세부 정보를 제공합니다.
파일 제출 UI는 다음과 같은 기능을 제공합니다:
기본적으로 Strelka UI는 사용자가 시스템을 테스트할 수 있는 최소한의 "quickstart" 배포를 사용하도록 구성되어 있습니다. 이 배포는 로컬 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의 구성 항목을 설명합니다.
| Field Name | Value | Required |
|---|---|---|
| STRELKA_HOST | Strelka hostname (e.g., 0.0.0.0) | Yes |
| STRELKA_PORT | Strelka port number (e.g., 57314) | Yes |
| STRELKA_CERT | Path to certificate for Strelka, if needed (e.g., /path/to/cert.pem) | No |
| CA_CERT_PATH | Path to CA certificates for LDAP, if needed (e.g., /path/to/ca_certs) | No |
| VIRUSTOTAL_API_KEY | API Key for VirusTotal Hash Lookup | Yes |
| VIRUSTOTAL_API_LIMIT | Limit how many files should be scanned by VirusTotal (Default: 30) | Yes |
| LDAP_URL | URL to LDAP server (e.g., ldaps://ldap.example.com:636) | No |
| LDAP_SEARCH_BASE | Search base for LDAP queries (e.g., DC=example,DC=com) | No |
| LDAP_USERNAME_ORGANIZATION | Username organization for LDAP queries (e.g., org//) | No |
| LDAP_ATTRIBUTE_ACCOUNT_NAME_FIELD | LDAP attribute for account name (e.g., sAMAccountName) | No |
| LDAP_ATTRIBUTE_FIRST_NAME_FIELD | LDAP attribute for first name (e.g., givenName) | No |
| LDAP_ATTRIBUTE_LAST_NAME_FIELD | LDAP attribute for last name (e.g., sn) | No |
| LDAP_ATTRIBUTE_MEMBER_OF_FIELD | LDAP attribute for member of (e.g., memberOf) | No |
| LDAP_ATTRIBUTE_MEMBER_REQUIREMENT_FIELD | LDAP attribute for member requirement (e.g., AD Attribute) | No |
| STATIC_ASSET_FOLDER | Build folder for UI (e.g., build) | Yes |
| MIGRATION_DIRECTORY | SQLAlchemy migrations directory (e.g., ./migrations) | Yes |
| DATABASE_USERNAME | Database username (e.g., admin) | Yes |
| DATABASE_PASSWORD | Database password (e.g., password123) | Yes |
| DATABASE_HOST | Database hostname (e.g., db.example.com) | Yes |
| DATABASE_PORT | Database port number (e.g., 5432) | Yes |
| DATABASE_DBNAME | Name of the database (e.g., mydb) | Yes |
| API_KEY_EXPIRATION | Duration in days of API key expiration (e.g., 30) | Yes |
UI 제출 테이블에 참조를 설정하여 사용자가 request.id를 기반으로 외부 사이트로 빠르게 이동할 수 있도록 할 수도 있습니다. ./ui/src/config.js를 수정하고 다음 표의 SEARCH_URL 예제를 따르면 사용자에게 외부 사이트(예: SIEM / 로거)로의 링크를 제공할 수 있습니다. 링크에 <REPLACE> 문자열이 포함되어 있는지 확인하면 UI가 해당 문자열을 관련 파일의 요청 ID로 대체합니다.
./ui/src/config.js에서 지원되는 수정 필드:
| Field Name | Value | Example |
|---|---|---|
| SEARCH_URL | Search URL for the external application | Ex: https://search.com/?q=request.id= |
| SEARCH_NAME | Search name for the external application | Ex: Splunk |
| DEFAULT_EXCLUDED_SUBMITTERS | Default users to be exluded from Submission table view. Useful for hiding automations by default. | Ex: SearchBot |
네트워크 환경에 사용자 지정 CA 번들(예: 기업용 TLS 검사 프록시)이 필요한 경우, 인증서 파일을 저장소에 커밋하지 않고도 빌드 시점과 런타임 모두에서 제공할 수 있습니다.
빌드 시점 — docker compose build를 실행하기 전에 CUSTOM_CA_CERT를 통해 CA 번들 경로를 전달하십시오. 인증서는 BuildKit secret을 사용하여 임시로 마운트되며 어떤 이미지 레이어에도 기록되지 않습니다:
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에서 확인할 수 있습니다.