
파일 제출 및 분석을 위한 Strelka 웹 UI
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 인증 사용에 대한 추가 정보는 추가 설정 섹션을 참조하세요:
Strelka 클러스터가 준비되고 접근 가능한지 시작 또는 확인하세요.
자세한 내용은 https://github.com/target/strelka 를 참조하세요.
# 터미널 1
# ./strelka-ui 디렉토리에서
$ docker-compose -f docker-compose.yml up
1) 브라우저를 엽니다.
2) 0.0.0.0:8080 으로 이동합니다.
3) 다음으로 로그인합니다:
- 사용자 이름: strelka
- 비밀번호: strelka
이 섹션에서는 원격 Strelka 인스턴스, 스토리지용 원격 데이터베이스, 더 안전한 사용을 위한 LDAP 인증 서버를 대상으로 지정하는 방법에 대한 세부 정보를 제공합니다. 이를 활성화하려면 환경 변수를 사용하여 기본값을 재정의할 수 있습니다.
백엔드 구성은 환경 변수를 통해 제공되며 ./app/config/config.py에 정적으로 설정할 수 있습니다.
로컬 실행 시 구성 우선 순위는 다음과 같습니다: 시스템 환경 -> .env -> ./app/config/config.py.
Docker 실행 시 구성 우선 순위는 다음과 같습니다: Docker 환경 -> 시스템 환경 -> ./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
# 또는 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 경로도 제공합니다. 자세한 내용은 아래 경로를 참조하세요:
Python requests를 사용하여 Strelka UI API에 인증하고, 스캔 통계를 수집하고, 파일을 제출하는 예제는 ./misc/examples/api_examples.py에서 찾을 수 있습니다.
데이터베이스는 ORM으로 https://www.sqlalchemy.org/를 사용합니다. Flask-Migrate는 Alembic을 통한 DB 마이그레이션을 제공하는 데 사용됩니다. 일반적인 데이터베이스 작업을 돕기 위해 헬퍼 스크립트 파일인 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 |