|
|
@@ -323,6 +323,7 @@ flowchart LR
|
|
323
|
323
|
C3 --> G
|
|
324
|
324
|
G --> H[Optional Incident Pipeline<br/>IRIS case + Shuffle + PagerDuty stub]
|
|
325
|
325
|
```
|
|
|
326
|
+
|
|
326
|
327
|
- `scripts/send-wazuh-endpoint-agent-test-events.sh`
|
|
327
|
328
|
- additional simulation scripts under `scripts/` for firewall and endpoint scenarios with continuous mode enabled
|
|
328
|
329
|
|
|
|
@@ -497,44 +498,44 @@ sequenceDiagram
|
|
497
|
498
|
|
|
498
|
499
|
### 11) SOC Integrator API Inventory
|
|
499
|
500
|
|
|
500
|
|
-| Group | Method | Endpoint | Notes |
|
|
501
|
|
-|---|---|---|---|
|
|
502
|
|
-| Core | GET | `/health` | Service health and target configuration |
|
|
503
|
|
-| Core | POST | `/ingest/wazuh-alert` | Normalize inbound Wazuh alert payload |
|
|
504
|
|
-| Core | POST | `/action/create-incident` | Create PagerDuty incident |
|
|
505
|
|
-| Core | POST | `/action/trigger-shuffle` | Trigger Shuffle workflow execution |
|
|
506
|
|
-| Core | POST | `/action/create-iris-case` | Create IRIS case (legacy action endpoint) |
|
|
507
|
|
-| IRIS | POST | `/iris/tickets` | Create IRIS ticket/case via soc-integrator |
|
|
508
|
|
-| IRIS | GET | `/iris/tickets` | List/query IRIS tickets/cases |
|
|
509
|
|
-| IOC | POST | `/ioc/enrich` | IOC enrichment from configured intel sources |
|
|
510
|
|
-| IOC | POST | `/ioc/evaluate` | IOC decisioning/verdict |
|
|
511
|
|
-| IOC | POST | `/ioc/upload-file` | Upload file to IOC backend (VirusTotal flow) |
|
|
512
|
|
-| IOC | GET | `/ioc/analysis/{analysis_id}` | Retrieve IOC analysis status/result |
|
|
513
|
|
-| IOC | POST | `/ioc/evaluate-file` | Evaluate file indicator or uploaded sample |
|
|
514
|
|
-| IOC | GET | `/ioc/history` | Retrieve stored IOC trace history |
|
|
515
|
|
-| Shuffle | GET | `/shuffle/health` | Shuffle service reachability check |
|
|
516
|
|
-| Shuffle | GET | `/shuffle/auth-test` | Validate Shuffle API key access |
|
|
517
|
|
-| Shuffle | POST | `/shuffle/login` | Login against Shuffle API |
|
|
518
|
|
-| Shuffle | POST | `/shuffle/generate-apikey` | Generate Shuffle API key from credentials |
|
|
519
|
|
-| Shuffle | GET | `/shuffle/workflows` | List workflows |
|
|
520
|
|
-| Shuffle | GET | `/shuffle/workflows/{workflow_id}` | Get workflow detail |
|
|
521
|
|
-| Shuffle | POST | `/shuffle/workflows/{workflow_id}/execute` | Execute specific workflow |
|
|
522
|
|
-| Shuffle | GET | `/shuffle/apps` | List installed/available Shuffle apps |
|
|
523
|
|
-| Shuffle | POST | `/shuffle/proxy` | Generic proxy request to Shuffle API |
|
|
524
|
|
-| Wazuh | GET | `/sync/wazuh-version` | Fetch Wazuh version information |
|
|
525
|
|
-| Wazuh | GET | `/wazuh/auth-test` | Validate Wazuh API authentication |
|
|
526
|
|
-| Wazuh | GET | `/wazuh/manager-info` | Manager information |
|
|
527
|
|
-| Wazuh | GET | `/wazuh/agents` | List Wazuh agents |
|
|
528
|
|
-| Wazuh | GET | `/wazuh/alerts` | Query recent Wazuh alerts |
|
|
529
|
|
-| Wazuh | GET | `/wazuh/manager-logs` | Read manager logs |
|
|
530
|
|
-| Wazuh | POST | `/wazuh/sync-to-mvp` | Sync Wazuh alerts into MVP pipeline |
|
|
531
|
|
-| Wazuh | GET | `/wazuh/auto-sync/status` | Auto-sync loop status |
|
|
532
|
|
-| MVP | POST | `/mvp/incidents/ingest` | Ingest incident into MVP flow |
|
|
533
|
|
-| MVP | POST | `/mvp/ioc/evaluate` | Evaluate IOC under MVP policy |
|
|
534
|
|
-| MVP | POST | `/mvp/vpn/evaluate` | Evaluate VPN event under MVP policy |
|
|
535
|
|
-| MVP | GET | `/mvp/config/policies` | Read MVP policy configuration |
|
|
536
|
|
-| MVP | PUT | `/mvp/config/policies` | Update MVP policy configuration |
|
|
537
|
|
-| MVP | GET | `/mvp/health/dependencies` | Dependency health snapshot |
|
|
|
501
|
+| Group | Method | Endpoint | Notes |
|
|
|
502
|
+| ------- | ------ | ------------------------------------------ | -------------------------------------------- |
|
|
|
503
|
+| Core | GET | `/health` | Service health and target configuration |
|
|
|
504
|
+| Core | POST | `/ingest/wazuh-alert` | Normalize inbound Wazuh alert payload |
|
|
|
505
|
+| Core | POST | `/action/create-incident` | Create PagerDuty incident |
|
|
|
506
|
+| Core | POST | `/action/trigger-shuffle` | Trigger Shuffle workflow execution |
|
|
|
507
|
+| Core | POST | `/action/create-iris-case` | Create IRIS case (legacy action endpoint) |
|
|
|
508
|
+| IRIS | POST | `/iris/tickets` | Create IRIS ticket/case via soc-integrator |
|
|
|
509
|
+| IRIS | GET | `/iris/tickets` | List/query IRIS tickets/cases |
|
|
|
510
|
+| IOC | POST | `/ioc/enrich` | IOC enrichment from configured intel sources |
|
|
|
511
|
+| IOC | POST | `/ioc/evaluate` | IOC decisioning/verdict |
|
|
|
512
|
+| IOC | POST | `/ioc/upload-file` | Upload file to IOC backend (VirusTotal flow) |
|
|
|
513
|
+| IOC | GET | `/ioc/analysis/{analysis_id}` | Retrieve IOC analysis status/result |
|
|
|
514
|
+| IOC | POST | `/ioc/evaluate-file` | Evaluate file indicator or uploaded sample |
|
|
|
515
|
+| IOC | GET | `/ioc/history` | Retrieve stored IOC trace history |
|
|
|
516
|
+| Shuffle | GET | `/shuffle/health` | Shuffle service reachability check |
|
|
|
517
|
+| Shuffle | GET | `/shuffle/auth-test` | Validate Shuffle API key access |
|
|
|
518
|
+| Shuffle | POST | `/shuffle/login` | Login against Shuffle API |
|
|
|
519
|
+| Shuffle | POST | `/shuffle/generate-apikey` | Generate Shuffle API key from credentials |
|
|
|
520
|
+| Shuffle | GET | `/shuffle/workflows` | List workflows |
|
|
|
521
|
+| Shuffle | GET | `/shuffle/workflows/{workflow_id}` | Get workflow detail |
|
|
|
522
|
+| Shuffle | POST | `/shuffle/workflows/{workflow_id}/execute` | Execute specific workflow |
|
|
|
523
|
+| Shuffle | GET | `/shuffle/apps` | List installed/available Shuffle apps |
|
|
|
524
|
+| Shuffle | POST | `/shuffle/proxy` | Generic proxy request to Shuffle API |
|
|
|
525
|
+| Wazuh | GET | `/sync/wazuh-version` | Fetch Wazuh version information |
|
|
|
526
|
+| Wazuh | GET | `/wazuh/auth-test` | Validate Wazuh API authentication |
|
|
|
527
|
+| Wazuh | GET | `/wazuh/manager-info` | Manager information |
|
|
|
528
|
+| Wazuh | GET | `/wazuh/agents` | List Wazuh agents |
|
|
|
529
|
+| Wazuh | GET | `/wazuh/alerts` | Query recent Wazuh alerts |
|
|
|
530
|
+| Wazuh | GET | `/wazuh/manager-logs` | Read manager logs |
|
|
|
531
|
+| Wazuh | POST | `/wazuh/sync-to-mvp` | Sync Wazuh alerts into MVP pipeline |
|
|
|
532
|
+| Wazuh | GET | `/wazuh/auto-sync/status` | Auto-sync loop status |
|
|
|
533
|
+| MVP | POST | `/mvp/incidents/ingest` | Ingest incident into MVP flow |
|
|
|
534
|
+| MVP | POST | `/mvp/ioc/evaluate` | Evaluate IOC under MVP policy |
|
|
|
535
|
+| MVP | POST | `/mvp/vpn/evaluate` | Evaluate VPN event under MVP policy |
|
|
|
536
|
+| MVP | GET | `/mvp/config/policies` | Read MVP policy configuration |
|
|
|
537
|
+| MVP | PUT | `/mvp/config/policies` | Update MVP policy configuration |
|
|
|
538
|
+| MVP | GET | `/mvp/health/dependencies` | Dependency health snapshot |
|
|
538
|
539
|
|
|
539
|
540
|
Additional FastAPI-generated endpoints:
|
|
540
|
541
|
|
|
|
@@ -619,15 +620,15 @@ This update documents production log sources and required fields for Appendix C
|
|
619
|
620
|
|
|
620
|
621
|
### Appendix C Production Data Onboarding Checklist
|
|
621
|
622
|
|
|
622
|
|
-| Source | Log Path / Channel | Must-Have Fields | Use Cases | Verification Query (Wazuh/Indexer) |
|
|
623
|
|
-|---|---|---|---|---|
|
|
624
|
|
-| VPN Gateway (FortiGate/SSL-VPN) | Syslog export from firewall/VPN device | `timestamp`, `user`, `src_ip`, `action/result`, `event_id` (if mapped), `country` (optional) | C1, C2 | `full_log:*vpn* AND full_log:*user=*` |
|
|
625
|
|
-| Active Directory / Windows DC | Windows Security Event Log (agent/forwarder) | `event_id`, `timestamp`, `user/account`, `src_ip` (where present), `logon_type`, `success/failure` | C1, C2, C3 | `rule.id:* AND (data.win.system.eventID:4624 OR full_log:*event_id=4624*)` |
|
|
626
|
|
-| Cloud IdP (Entra/Okta/Google) | API export / SIEM connector -> syslog/json | `user`, `src_ip`, `event_time`, `outcome`, `geo.country` (if available), `app/service` | C1, C2 | `full_log:*source=*idp* OR full_log:*okta* OR full_log:*entra*` |
|
|
627
|
|
-| Windows Endpoints/Servers | Wazuh agent + Sysmon/Security logs | `event_id`, `user`, `src_ip`, `dst_host`, `dst_port`, `process/action` | C2, C3 | `full_log:*source=windows* AND rule.id:*` |
|
|
628
|
|
-| Linux Servers | auth.log / secure / sudo / sshd | `timestamp`, `user`, `src_ip`, `action`, `success` | C2, C3 | `full_log:*sshd* OR full_log:*sudo*` |
|
|
629
|
|
-| East-West Firewall | Internal traffic logs (allow/deny/flow) | `src_ip`, `dst_ip/dst_host`, `dst_port`, `action`, `timestamp` | C3 | `full_log:*src_ip=* AND full_log:*dst_port=*` |
|
|
630
|
|
-| IDS/NDR | IDS alerts / network detection logs | `src_ip`, `dst_ip/dst_host`, `dst_port`, `signature/category`, `timestamp` | C3 | `full_log:*scan* OR full_log:*lateral* OR full_log:*enumeration*` |
|
|
|
623
|
+| Source | Log Path / Channel | Must-Have Fields | Use Cases | Verification Query (Wazuh/Indexer) |
|
|
|
624
|
+| ------------------------------- | -------------------------------------------- | -------------------------------------------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------- |
|
|
|
625
|
+| VPN Gateway (FortiGate/SSL-VPN) | Syslog export from firewall/VPN device | `timestamp`, `user`, `src_ip`, `action/result`, `event_id` (if mapped), `country` (optional) | C1, C2 | `full_log:*vpn* AND full_log:*user=*` |
|
|
|
626
|
+| Active Directory / Windows DC | Windows Security Event Log (agent/forwarder) | `event_id`, `timestamp`, `user/account`, `src_ip` (where present), `logon_type`, `success/failure` | C1, C2, C3 | `rule.id:* AND (data.win.system.eventID:4624 OR full_log:*event_id=4624*)` |
|
|
|
627
|
+| Cloud IdP (Entra/Okta/Google) | API export / SIEM connector -> syslog/json | `user`, `src_ip`, `event_time`, `outcome`, `geo.country` (if available), `app/service` | C1, C2 | `full_log:*source=*idp* OR full_log:*okta* OR full_log:*entra*` |
|
|
|
628
|
+| Windows Endpoints/Servers | Wazuh agent + Sysmon/Security logs | `event_id`, `user`, `src_ip`, `dst_host`, `dst_port`, `process/action` | C2, C3 | `full_log:*source=windows* AND rule.id:*` |
|
|
|
629
|
+| Linux Servers | auth.log / secure / sudo / sshd | `timestamp`, `user`, `src_ip`, `action`, `success` | C2, C3 | `full_log:*sshd* OR full_log:*sudo*` |
|
|
|
630
|
+| East-West Firewall | Internal traffic logs (allow/deny/flow) | `src_ip`, `dst_ip/dst_host`, `dst_port`, `action`, `timestamp` | C3 | `full_log:*src_ip=* AND full_log:*dst_port=*` |
|
|
|
631
|
+| IDS/NDR | IDS alerts / network detection logs | `src_ip`, `dst_ip/dst_host`, `dst_port`, `signature/category`, `timestamp` | C3 | `full_log:*scan* OR full_log:*lateral* OR full_log:*enumeration*` |
|
|
631
|
632
|
|
|
632
|
633
|
#### Acceptance Checklist (Per Source)
|
|
633
|
634
|
|
|
|
@@ -653,7 +654,6 @@ Project: FoodProject SOC Platform (Wazuh + Shuffle + IRIS-web + SOC Integrator)
|
|
653
|
654
|
### Major Progress Areas
|
|
654
|
655
|
|
|
655
|
656
|
1. SOC Integrator Expansion
|
|
656
|
|
-
|
|
657
|
657
|
- Added full admin UI stack:
|
|
658
|
658
|
- `soc-integrator/app/ui/index.html`
|
|
659
|
659
|
- `soc-integrator/app/ui/assets/app.js`
|
|
|
@@ -666,9 +666,7 @@ Project: FoodProject SOC Platform (Wazuh + Shuffle + IRIS-web + SOC Integrator)
|
|
666
|
666
|
- `soc-integrator/app/repositories/mvp_repo.py`
|
|
667
|
667
|
- Added GeoIP adapter integration:
|
|
668
|
668
|
- `soc-integrator/app/adapters/geoip.py`
|
|
669
|
|
-
|
|
670
|
669
|
2. Wazuh Simulation and Dashboard Delivery
|
|
671
|
|
-
|
|
672
|
670
|
- Added Appendix-specific event generators:
|
|
673
|
671
|
- `scripts/send-wazuh-proposal-appendix-b-events.sh`
|
|
674
|
672
|
- `scripts/send-wazuh-proposal-appendix-c-events.sh`
|
|
|
@@ -683,9 +681,11 @@ Project: FoodProject SOC Platform (Wazuh + Shuffle + IRIS-web + SOC Integrator)
|
|
683
|
681
|
### Wazuh Custom Rules Added (Current Active Set)
|
|
684
|
682
|
|
|
685
|
683
|
Active custom rules are currently defined in:
|
|
|
684
|
+
|
|
686
|
685
|
- `wazuh-docker/single-node/config/wazuh_cluster/local_rules.xml`
|
|
687
|
686
|
|
|
688
|
687
|
Rule groups/ranges implemented:
|
|
|
688
|
+
|
|
689
|
689
|
- Base and appendix classifiers:
|
|
690
|
690
|
- `100200`: base marker for synthetic SOC events (`soc_mvp_test=true`)
|
|
691
|
691
|
- `100210`: Appendix A classifier
|
|
|
@@ -706,10 +706,9 @@ Rule groups/ranges implemented:
|
|
706
|
706
|
- `C3` Lateral movement/internal recon: `100521-100524`
|
|
707
|
707
|
|
|
708
|
708
|
Operational note:
|
|
709
|
|
-- Split rule files under `wazuh_cluster/rules/soc-*.xml` exist as staging artifacts in this workspace; active detection content is loaded from `local_rules.xml`.
|
|
710
|
709
|
|
|
|
710
|
+- Split rule files under `wazuh_cluster/rules/soc-*.xml` exist as staging artifacts in this workspace; active detection content is loaded from `local_rules.xml`.
|
|
711
|
711
|
3. Operations and Runtime Hardening
|
|
712
|
|
-
|
|
713
|
712
|
- Updated orchestration and runtime configuration:
|
|
714
|
713
|
- `run-combined-stack.sh`
|
|
715
|
714
|
- `compose-overrides/soc-integrator.yml`
|