
Antigena (Darktrace) → Aruba ClearPass CoA ब्रिज — मॉडल-संचालित, रीयल-टाइम उपयोगकर्ता/डिवाइस क्वारंटाइन। शून्य SOC क्लिक्स। हेक्सागोनल आर्किटेक्चर, 82% परीक्षण कवरेज।
Antigena (Darktrace) → Aruba ClearPass CoA ब्रिज — मॉडल-संचालित, रीयल-टाइम उपयोगकर्ता/डिवाइस क्वारंटाइन। डिटेक्शन और कंटेनमेंट के बीच शून्य SOC क्लिक।
एक प्रोडक्शन NDR↔NAC इंटीग्रेशन पैटर्न का सैनिटाइज़्ड रेफरेंस इम्प्लीमेंटेशन जो वित्त-क्षेत्रीय पैमाने (बहु-हज़ार एंडपॉइंट, 24/7 SOC) पर संचालित किया गया। ग्राहक-विशिष्ट भागों को सिंथेटिक फिक्स्चर से बदल दिया गया; वास्तुकला, निर्णय प्रवाह और परिचालन पैटर्न वास्तविक हैं।
NDR (Darktrace, ExtraHop, Vectra) का वादा सेकंडों में डिटेक्शन है। अधिकांश बैंकों में वास्तविकता: सेकंडों में डिटेक्शन, घंटों में कंटेनमेंट — क्योंकि SOC का NAC/फायरवॉल टीमों को हैंडऑफ़ मैन्युअल है।
यह टूलकिट Antigena (Darktrace का स्वायत्त प्रतिक्रिया मॉड्यूल) को Aruba ClearPass (ClearPass REST API के माध्यम से) से जोड़कर उस अंतर को बंद करता है। जब एक Darktrace मॉडल एक कॉन्फ़िगरेबल गंभीरता सीमा से ऊपर फायर करता है, तो टूलकिट:
मॉडल फायर → क्वारंटाइन VLAN सक्रिय होने तक एंड-टू-एंड माध्य विलंबता: 5 सेकंड से कम।
zero-touch-containment/
├── README.md ← आप यहाँ हैं
├── LICENSE
├── .gitignore
├── docs/
│ ├── architecture.md ← पूर्ण आर्किटेक्चर गहराई + SOLID ट्रेस
│ └── lessons-learned.md ← इसे प्रोडक्शन में चलाने से 10 सबक
│
├── webhook/ ← इनबाउंड HTTP परत (SRP द्वारा विभाजित)
│ ├── app.py ← केवल FastAPI रूट्स + लाइफस्पैन
│ ├── auth.py ← verify_hmac() — HMAC-SHA1 मान्यता
│ ├── replay.py ← ReplayCache — LRU रिप्ले सुरक्षा
│ └── models.py ← AntigenaEvent pydantic स्कीमा
│
├── engine/ ← YAML-संचालित निर्णय इंजन
│ ├── decision.py ← DecisionEngine (QuarantineReader Protocol पर निर्भर)
│ ├── rules.py ← मैपिंग + अलाउलिस्ट के लिए YAML लोडर
│ └── models.py ← Action + MappingRule + ActionKind
│
├── clearpass/ ← NAC एडेप्टर (CoAClient Protocol को लागू करता है)
│ ├── client.py ← ClearPassClient — REST CoA-शैली ऑप्स
│ ├── ports.py ← CoAClient Protocol — किसी भी NAC बैकएंड के लिए पोर्ट
│ └── auth.py ← OAuth2 TokenCache
│
├── ledger/ ← SQLite लेज़र (5 पोर्ट लागू करता है — ISP लागू)
│ ├── store.py ← SqliteLedger — ऑल-इन-वन कार्यान्वयन
│ ├── ports.py ← EventStore + QuarantineWriter + QuarantineReader
│ │ + ReleaseManager + HealthChecker (अलग किए गए)
│ └── schema.py ← SQL DDL स्थिरांक
│
├── cli/ ← SOC संचालन CLI
│ └── soc.py ← `ztc release-expired` + नियोजित कमांड
│
├── config/
│ ├── mapping.example.yaml ← गंभीरता → क्रिया मैपिंग
│ └── allowlist.example.yaml ← VIP / कभी-क्वारंटाइन न करें सूची
│
├── deploy/
│ ├── docker-compose.yml
│ ├── Dockerfile
│ └── .env.example
│
├── tests/ ← प्रत्येक परत को कवर करने वाले 60 परीक्षण
│ ├── test_decision.py
│ ├── test_ledger.py
│ ├── test_webhook_helpers.py
│ ├── test_clearpass_client.py
│ ├── test_protocols.py ← संरचनात्मक ISP/DIP अनुपालन परीक्षण
│ └── fixtures/sample_event.json
│
├── requirements.txt
└── pyproject.toml
git clone https://gitlab.com/zimlama/zero-touch-containment.git
cd zero-touch-containment
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp config/mapping.example.yaml config/mapping.yaml
cp config/allowlist.example.yaml config/allowlist.yaml
cp deploy/.env.example .env # CLEARPASS_HOST, OAUTH क्रेडेंशियल, HMAC सीक्रेट भरें
# वेबहुक रिसीवर चलाएँ
uvicorn webhook.app:app --host 0.0.0.0 --port 8080
# दूसरे शेल में: एक नमूना इवेंट रीप्ले करें
curl -X POST http://localhost:8080/antigena \
-H "Content-Type: application/json" \
-H "X-Darktrace-Signature: sha1=$(echo -n @tests/fixtures/sample_event.json | openssl dgst -sha1 -hmac "$HMAC_SECRET" | awk '{print $2}')" \
--data @tests/fixtures/sample_event.json
वेबहुक HMAC-SHA1 सत्यापित करता है, mapping.yaml के विरुद्ध निर्णय इंजन चलाता है, और या तो:
┌──────────────┐ 1. वेबहुक ┌──────────────────┐ 2. मान्य करें ┌──────────────────┐
│ Darktrace │ ──────────────▶ │ वेबहुक │ ───────────────▶ │ निर्णय │
│ Antigena │ HMAC-SHA1 │ रिसीवर │ पार्स + प्रमाणी │ इंजन │
│ मॉडल फायर │ │ (FastAPI) │ │ (YAML-संचालित) │
└──────────────┘ └──────────────────┘ └─────────┬────────┘
│
▼
3. क्रिया समाधान
(अलाउलिस्ट + दर सीमा)
│
┌───────────────────────┬───────────────────────┼────────────────────────┐
▼ ▼ ▼ ▼
┌──────────────┐ ┌────────────────┐ ┌──────────────┐ ┌─────────────┐
│ ClearPass │ │ SQLite │ │ Slack/Teams │ │ SIEM │
│ REST API │ │ लेज़र │ │ सूचना │ │ (संरचित │
│ - भूमिका स्वैप│ │ - स्थिति │ │ │ │ लॉग) │
│ - डिस्कनेक्ट │ │ - स्वचालित │ │ │ │ │
│ │ │ रिलीज़ │ │ │ │ │
└──────────────┘ └────────────────┘ └──────────────┘ └─────────────┘
पूर्ण विवरण के लिए docs/architecture.md देखें।
यहाँ के पैटर्न एक Tier-1 लैटिन अमेरिकी वित्तीय संस्थान में बहु-वर्षीय NDR + NAC एंगेजमेंट से आए हैं:
टूलकिट उस इंटीग्रेशन का आसुत, सैनिटाइज़्ड संस्करण है। मॉडल नाम, टेनेंट आईडी, ClearPass एंडपॉइंट, आईपी योजनाएँ सिंथेटिक समकक्षों से बदल दी गई हैं।
docs/lessons-learned.md से क्या सीखेंगे10 बातें जो मैं चाहता हूँ कि कोई मुझे Antigena↔ClearPass प्रोडक्शन तैनाती के पहले दिन से पहले बताता — वेबहुक विश्वसनीयता, ClearPass REST API विचित्रताएँ, भूमिका स्वैप और डिस्कनेक्ट के बीच अंतर, झूठी-सकारात्मक कंटेनमेंट तूफान, और ऑपरेटर हैंडऑफ़ डिज़ाइन शामिल।
षट्कोणीय लेयरिंग जिसमें ठोस एडेप्टर और ऑर्केस्ट्रेशन कोड के बीच स्पष्ट प्रोटोकॉल पोर्ट हैं:
पूर्ण विवरण के लिए docs/architecture.md देखें।
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[test]"
HMAC_SECRET=test-secret python -m pytest tests/ -v
निर्णय इंजन, SQLite लेज़र, HMAC मान्यता, रीप्ले कैश, ClearPass क्लाइंट (एसिंक, respx-मॉक्ड), और संरचनात्मक प्रोटोकॉल अनुपालन को कवर करने वाले 60 परीक्षण।
list, release, quarantine, audit (Tier-2)Leonardo Mejía — वरिष्ठ साइबर सुरक्षा और SD-WAN आर्किटेक्ट · 15+ वर्ष ज़ीरो ट्रस्ट · हाइब्रिड क्लाउड · NDR · एंटरप्राइज SD-WAN
MIT — LICENSE देखें।
इस रिपो में पैटर्न सैनिटाइज़्ड एब्स्ट्रैक्शन हैं, मालिकाना ग्राहक कोड नहीं। स्वतंत्र रूप से उपयोग करें; श्रेय की सराहना की जाती है।
| परत | उपकरण |
|---|
| भाषा | Python 3.11+ |
| वेब | FastAPI + Uvicorn (वेबहुक रिसीवर) |
| HTTP क्लाइंट | httpx (एसिंक) + tenacity (रिट्री-विथ-बैकऑफ़) |
| प्रमाणीकरण | इनबाउंड HMAC-SHA1 (Darktrace) · आउटबाउंड OAuth2 client_credentials (ClearPass) |
| कॉन्फ़िग | YAML — गंभीरता → क्रिया मैपिंग + अलाउलिस्ट |
| स्थिति | SQLite + WAL — क्वारंटाइन लेज़र + स्वचालित रिलीज़ |
| लॉगिंग | structlog — SIEM इंजेस्ट के लिए JSON आउटपुट |
| परीक्षण | pytest + respx (httpx मॉक) + रिकॉर्डेड फिक्स्चर |
| परिनियोजन | Docker Compose, एकल-VM-अनुकूल |
| सिद्धांत | कार्यान्वयन |
|---|
| SRP | webhook/ को auth + replay + models + रूटिंग में विभाजित किया। clearpass/ को client + auth + ports में विभाजित किया। ledger/ को store + ports + schema में विभाजित किया। |
| OCP | नए NAC बैकएंड CoAClient प्रोटोकॉल लागू करते हैं — वेबहुक या इंजन में कोई बदलाव नहीं। |
| LSP | परीक्षण इन-मेमोरी फ़ेक का उपयोग करते हैं जो समान प्रोटोकॉल को संतुष्ट करते हैं। पाइपलाइन व्यवहार अपरिवर्तित। |
| ISP | लेज़र 5 अलग पोर्ट (EventStore, QuarantineWriter, QuarantineReader, ReleaseManager, HealthChecker) में विभाजित है। वेबहुक केवल पहले दो पर निर्भर करता है; इंजन केवल QuarantineReader पर। |
| DIP | webhook/app.py और engine/decision.py प्रोटोकॉल पर निर्भर करते हैं, कभी ठोस वर्गों पर नहीं। |