
फ़ाइल सबमिशन और विश्लेषण के लिए Strelka वेब UI
Strelka वेब UI, Strelka Enterprise File Scanner के लिए एक ब्राउज़र और API-आधारित फ़ाइल सबमिशन फ्रंटएंड है। यह उपयोगकर्ताओं को Strelka क्लस्टर में फ़ाइलें सबमिट करने और ऐतिहासिक प्रतिक्रिया परिणामों को आसानी से समीक्षा करने की अनुमति देता है। Strelka वेब UI LDAP प्रमाणीकरण और API पहुंच का समर्थन करता है, जो Strelka स्कैनर के साथ इंटरैक्ट करने का एक सुरक्षित और लचीला तरीका प्रदान करता है। यह दस्तावेज़ Strelka वेब 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 में कॉन्फ़िगरेशन आइटम का विवरण देते हैं।
आप UI सबमिशन तालिका में एक संदर्भ भी सेट कर सकते हैं ताकि उपयोगकर्ता request.id के आधार पर किसी बाहरी साइट पर तुरंत पहुंच सकें। ./ui/src/config.js को संशोधित करके और निम्नलिखित तालिका में SEARCH_URL उदाहरण का अनुसरण करके, आप उपयोगकर्ताओं को एक बाहरी साइट (उदा., SIEM / लॉगर) का लिंक प्रदान कर सकते हैं। सुनिश्चित करें कि आपके लिंक में <REPLACE> स्ट्रिंग है और UI उस स्ट्रिंग को प्रासंगिक फ़ाइल के request ID से बदल देगा।
./ui/src/config.js में समर्थित संशोधन फ़ील्ड:
| फ़ील्ड नाम | मान | उदाहरण |
|---|---|---|
| SEARCH_URL |
यदि आपके नेटवर्क वातावरण को कस्टम 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 रूट भी प्रदान करता है। विवरण के लिए कृपया नीचे दिए गए रूट देखें:
Python requests का उपयोग करके Strelka UI API में प्रमाणित करने, स्कैन आँकड़े एकत्र करने और फ़ाइल सबमिट करने के उदाहरण ./misc/examples/api_examples.py में पाए जा सकते हैं।
डेटाबेस ORM के रूप में https://www.sqlalchemy.org/ का उपयोग करता है। Flask-Migrate का उपयोग Alembic के माध्यम से db माइग्रेशन प्रदान करने के लिए किया जाता है। सामान्य डेटाबेस कार्यों में सहायता के लिए एक सहायक स्क्रिप्ट फ़ाइल, manage.py, प्रदान की जाती है।
यदि आप एक नया डेटाबेस बना रहे हैं, या वर्तमान डेटाबेस को संशोधित कर रहे हैं, तो आपको निम्नलिखित चरण करने होंगे - हालाँकि क्लस्टर प्रारंभ करने पर, ये कमांड आपके लिए निष्पादित कर दिए जाएंगे:
मॉडल परिवर्तनों से नया माइग्रेशन जनरेट करें:
वर्तमान डेटाबेस कॉन्फ़िगरेशन का उपयोग करके डेटाबेस अपडेट करें:
बैकएंड एप्लिकेशन मुख्य रूप से निम्नलिखित तकनीकों से बना है:
फ्रंटएंड UI एक React JS एप्लिकेशन है जिसे React का उपयोग करके बनाया गया है और Flask से सर्व किया जाता है। UI Antd लाइब्रेरी और Antd ProComponents का उपयोग करता है, और रूटिंग React Router द्वारा संभाली जाती है।
Strelka UI और इससे जुड़ा कोड Apache 2.0 License की शर्तों के तहत जारी किया गया है।
| फ़ील्ड नाम | मान | आवश्यक |
|---|
| 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) | हाँ |
| बाहरी एप्लिकेशन के लिए खोज URL |
| उदा.: https://search.com/?q=request.id= |
| SEARCH_NAME | बाहरी एप्लिकेशन के लिए खोज नाम | उदा.: Splunk |
| DEFAULT_EXCLUDED_SUBMITTERS | सबमिशन तालिका दृश्य से बाहर किए जाने वाले डिफ़ॉल्ट उपयोगकर्ता। डिफ़ॉल्ट रूप से स्वचालन छिपाने के लिए उपयोगी। | उदा.: SearchBot |