
scoringengine v2.1.1
लाल/सफेद/नीली टीम प्रतियोगिताओं के लिए स्कोरिंग इंजन
स्कोरिंग इंजन
स्कोरिंग इंजन एक ओपन-सोर्स प्लेटफ़ॉर्म है जो रेड/व्हाइट/ब्लू टीम साइबर सुरक्षा प्रतियोगिताओं को चलाने के लिए है। यह प्रत्येक राउंड में सेवा जाँचों को स्वचालित करता है और एक वेब-आधारित स्कोरबोर्ड और कॉन्फ़िगरेशन इंटरफ़ेस प्रदान करता है।

विशेषताएँ
- सेवा जाँचों का स्वचालित शेड्यूलिंग और निष्पादन
- Celery वर्कर्स और Redis के माध्यम से वितरित समानांतर निष्पादन
- स्कोर देखने और सेवाओं को कॉन्फ़िगर करने के लिए वेब इंटरफ़ेस
- स्कोर और कॉन्फ़िगरेशन तक प्रोग्रामेटिक पहुँच के लिए JSON API
- 28 अंतर्निहित सेवा जाँचें (SSH, HTTP, DNS, SMTP, और अधिक)
- Airgapped/ऑफ़लाइन परिनियोजन के लिए समर्थन
- पूर्व-जनित डेमो डेटा के साथ उदाहरण मोड
आर्किटेक्चर
स्कोरिंग इंजन निम्नलिखित घटकों के साथ एक वितरित आर्किटेक्चर का उपयोग करता है:
| घटक | तकनीक | उद्देश्य |
|---|---|---|
| वेब UI | Flask | स्कोरबोर्ड, टीम प्रबंधन, प्रशासन |
| कार्य कतार | Celery | वितरित कार्य शेड्यूलिंग और निष्पादन |
| संदेश ब्रोकर | Redis | कार्य कतार बैकएंड और कैशिंग |
| डेटाबेस | MySQL/MariaDB | टीमों, सेवाओं और परिणामों के लिए स्थायी भंडारण |
| रिवर्स प्रॉक्सी | Nginx | HTTP सर्वर और लोड बैलेंसिंग |
समर्थित सेवा जाँचें
स्कोरिंग इंजन में सामान्य सेवाओं के लिए बॉक्स से बाहर जाँचें शामिल हैं:
| श्रेणी | सेवाएँ |
|---|---|
| नेटवर्क | ICMP, DNS, NFS |
| वेब | HTTP, HTTPS, Elasticsearch, WordPress |
| प्रमाणीकरण | SSH, Telnet, LDAP, WinRM |
| फ़ाइल स्थानांतरण | FTP, SMB |
| ईमेल | SMTP, SMTPS, IMAP, IMAPS, POP3, POP3S |
| डेटाबेस | MySQL, PostgreSQL, MSSQL |
| रिमोट डेस्कटॉप | RDP, VNC |
| VPN | OpenVPN |
कस्टम जाँचें scoring_engine/checks/ में एक Python क्लास बनाकर जोड़ी जा सकती हैं।
पूर्वापेक्षाएँ
Docker स्थापना (अनुशंसित)
- Docker
- Docker Compose (Docker Desktop में शामिल; Linux पर अलग से स्थापित करें)
- Windows उपयोगकर्ताओं के लिए, सुनिश्चित करें कि Docker Desktop Linux कंटेनरों का उपयोग करने के लिए सेट है।
स्रोत स्थापना
Docker के बिना स्रोत से स्थापित करने के लिए:
- Python 3.10 या उच्चतर आवश्यक है
- MariaDB/MySQL डेटाबेस सर्वर
- Redis सर्वर
# पैकेज स्थापित करें
pip install -e .
# या परीक्षण निर्भरताओं के साथ स्थापित करें
pip install -e .
pip install -r tests/requirements.txt
त्वरित प्रारंभ
सभी सेवाओं का निर्माण और प्रारंभ करें:
docker compose build
docker compose up
या सुविधा के लिए Makefile का उपयोग करें:
make build
make run
चलने पर, एप्लिकेशन तक http://localhost पर पहुँचें।
डेमो क्रेडेंशियल्स
निम्नलिखित क्रेडेंशियल्स में से किसी का उपयोग करके लॉग इन करें:
| उपयोगकर्ता नाम | पासवर्ड | भूमिका |
|---|---|---|
whiteteamuser | testpass | श्वेत टीम (प्रशासक) |
team1user1 | testpass | नीली टीम 1 |
team2user1 | testpass | नीली टीम 2 |
team2user2 | testpass | नीली टीम 2 |
redteamuser | testpass | लाल टीम |
पर्यावरण चर
प्रारंभ करने से पहले डेटाबेस रीसेट करें:
SCORINGENGINE_OVERWRITE_DB=true docker compose up
नमूना डेटा (डेमो मोड) के साथ चलाएँ:
SCORINGENGINE_EXAMPLE=true docker compose up
या ताज़ा डेमो के लिए दोनों को मिलाएँ:
make run-demo
पूर्व-निर्मित Docker छवियाँ
दोनों रजिस्ट्रियों से पूर्व-निर्मित छवियाँ उपलब्ध हैं:
- GitHub Container Registry:
ghcr.io/scoringengine/scoringengine/<image>:<tag> - Docker Hub:
scoringengine/<image>:<tag>
उपलब्ध छवियाँ: base, bootstrap, engine, web, worker
टैग: latest, develop, संस्करण टैग (जैसे, v1.1.0)
Airgapped परिनियोजन
इंटरनेट पहुँच के बिना प्रतियोगिताओं के लिए:
# एक पूर्ण परिनियोजन पैकेज बनाएँ
./bin/create-airgapped-package.sh
# scoringengine-airgapped.tar.gz को airgapped सिस्टम में स्थानांतरित करें
# फिर निकालें और परिनियोजित करें:
tar -xzf scoringengine-airgapped.tar.gz
cd scoringengine-airgapped
./deploy.sh
विस्तृत निर्देशों के लिए Airgapped परिनियोजन मार्गदर्शिका देखें।
विकास
Makefile कमांड
| कमांड | विवरण |
|---|---|
make build | सभी Docker छवियाँ बनाएँ |
make run | सभी सेवाएँ प्रारंभ करें |
make run-demo | डेमो डेटा के साथ प्रारंभ करें (डेटाबेस रीसेट करता है) |
make stop | सभी सेवाएँ रोकें |
make clean | सेवाएँ रोकें और वॉल्यूम हटाएँ |
make rebuild-new | नए डेटाबेस के साथ पूर्ण पुनर्निर्माण |
make run-tests | कवरेज के साथ यूनिट परीक्षण चलाएँ |
make build-integration | एकीकरण परीक्षण वातावरण बनाएँ |
make run-integration-tests | एकीकरण परीक्षण चलाएँ |
परीक्षण चलाना
परिवर्तन सबमिट करने से पहले लिंटर्स और परीक्षण सूट चलाएँ:
# Pre-commit हुक स्थापित करें
pip install pre-commit
pre-commit install
# बदली गई फ़ाइलों पर लिंटर्स चलाएँ
pre-commit run --files <changed-files>
# सभी परीक्षण चलाएँ
pytest tests/
# कवरेज के साथ परीक्षण चलाएँ
make run-tests
सभी फ़ाइलों की जाँच करने के लिए: pre-commit run --all-files
स्थानीय रूप से दस्तावेज़ीकरण बनाना
pip install -r docs/requirements.txt
cd docs
make html
अपने ब्राउज़र में docs/build/html/index.html खोलें।
संस्करण प्रबंधन
यह प्रोजेक्ट सिमैंटिक वर्जनिंग का उपयोग करता है। संस्करण बढ़ाने के लिए:
# विकास निर्भरताएँ स्थापित करें
pip install -r tests/requirements.txt
# संस्करण बढ़ाएँ (patch/minor/major)
bump-my-version bump patch
विस्तृत निर्देशों के लिए VERSION_MANAGEMENT.md देखें।
दस्तावेज़ीकरण
पूर्ण दस्तावेज़ीकरण https://scoringengine.readthedocs.io/en/latest/ पर उपलब्ध है।
लाइसेंस
MIT लाइसेंस के तहत जारी किया गया।