|
|
%!s(int64=6) %!d(string=před) dny | |
|---|---|---|
| Shuffle | %!s(int64=3) %!d(string=před) týdny | |
| compose-overrides | %!s(int64=6) %!d(string=před) dny | |
| docs | před 1 týdnem | |
| flask-openapi-shuffle | %!s(int64=4) %!d(string=před) týdny | |
| iris-web | %!s(int64=6) %!d(string=před) dny | |
| samples | před 1 týdnem | |
| scripts | %!s(int64=6) %!d(string=před) dny | |
| shuffle-workflows | %!s(int64=3) %!d(string=před) týdny | |
| soc-integrator | %!s(int64=6) %!d(string=před) dny | |
| wazuh-docker | před 1 týdnem | |
| .gitignore | %!s(int64=3) %!d(string=před) týdny | |
| README.md | před 1 měsícem | |
| Security Detection & Threat Intelligence Enhancement Proposal-2.md | před 1 měsícem | |
| Security Detection & Threat Intelligence Enhancement Proposal-revise.md | %!s(int64=2) %!d(string=před) týdny | |
| overall.md | %!s(int64=2) %!d(string=před) týdny | |
| overall.pdf | %!s(int64=2) %!d(string=před) týdny | |
| package-lock.json | před 1 měsícem | |
| package.json | před 1 měsícem | |
| progress-update.md | %!s(int64=2) %!d(string=před) týdny | |
| progress-update.pdf | %!s(int64=2) %!d(string=před) týdny | |
| run-combined-stack.sh | %!s(int64=6) %!d(string=před) dny | |
| soc-status.sh | před 1 měsícem | |
| virustotal_v3.json | %!s(int64=4) %!d(string=před) týdny | |
| virustotal_v3.openapi.json | %!s(int64=4) %!d(string=před) týdny | |
| virustotal_v3.yaml | %!s(int64=4) %!d(string=před) týdny |
This repository runs a combined SOC lab with:
wazuh-docker (single-node)iris-webShufflepagerduty-stubsoc-integrator (FastAPI)All services are connected through a shared Docker network (soc_shared).
nc (for test event script)Start all services (detached):
./run-combined-stack.sh up --all -d
Start all and stream logs:
./run-combined-stack.sh up --all
Stop all:
./run-combined-stack.sh down --all
Status overview:
./run-combined-stack.sh status
https://localhosthttps://localhost:55000https://localhost:8443http://localhost:3001http://localhost:18080http://localhost:8088http://localhost:8088/docsKey env file:
soc-integrator/.envMain sections:
/wazuh/*, /shuffle/*, /action/*)/mvp/*)/wazuh/sync-to-mvp)/wazuh/auto-sync/status)POST /mvp/incidents/ingestPOST /mvp/ioc/evaluatePOST /mvp/vpn/evaluateGET /mvp/config/policiesPUT /mvp/config/policiesGET /mvp/health/dependenciesProtected endpoints require:
X-Internal-API-KeySOC_INTEGRATOR_INTERNAL_KEY in soc-integrator/.envcurl -X POST http://localhost:8088/mvp/incidents/ingest \
-H 'Content-Type: application/json' \
-H 'X-Internal-API-Key: dev-internal-key' \
-d '{
"source":"manual",
"event_type":"ioc_ips",
"event_id":"evt-1",
"timestamp":"2026-02-12T16:00:00Z",
"severity":"high",
"title":"Test IOC",
"description":"MVP test",
"asset":{"hostname":"labhost","user":"analyst"},
"network":{"src_ip":"203.0.113.10","country":"US"},
"tags":["mvp","test"],
"risk_context":{"admin_account":true},
"raw":{},
"payload":{}
}'
Send synthetic events via syslog UDP 514:
scripts/send-wazuh-test-events.sh all
Scenarios:
ioc_dnsioc_ipsvpn_outside_thwindows_auth_failallSee scripts/README.md for details.
Sync Wazuh alerts from indexer into MVP pipeline:
curl -X POST "http://localhost:8088/wazuh/sync-to-mvp?limit=50&minutes=120&q=*" \
-H 'X-Internal-API-Key: dev-internal-key'
Notes:
wazuh-alerts-* in Wazuh indexer.source + event_id.send-wazuh-test-events.sh traffic appears only after Wazuh rules generate alerts.Enable automatic sync worker:
sed -i 's/^WAZUH_AUTO_SYNC_ENABLED=.*/WAZUH_AUTO_SYNC_ENABLED=true/' soc-integrator/.env
./run-combined-stack.sh up integrator --build -d
./run-combined-stack.sh logs integrator -f
Auto-sync settings in soc-integrator/.env:
WAZUH_AUTO_SYNC_ENABLED (true|false)WAZUH_AUTO_SYNC_INTERVAL_SECONDS (default 60)WAZUH_AUTO_SYNC_QUERY (default *)WAZUH_AUTO_SYNC_LIMIT (default 50)WAZUH_AUTO_SYNC_MINUTES (default 120)All logs (non-follow):
./run-combined-stack.sh logs --all --tail 200
Follow one stack:
./run-combined-stack.sh logs integrator -f
./run-combined-stack.sh logs wazuh -f
pagerduty-stub (not real PagerDuty).