Skip to main content

Overview

RAXE integrates with enterprise SIEMs to provide centralized threat visibility. Forward scan events in native formats to:

Splunk

HTTP Event Collector (HEC) format

CrowdStrike

Falcon LogScale (Humio) ingest

Microsoft Sentinel

Data Collector API with HMAC auth

ArcSight

SmartConnector CEF format

CEF (Generic)

Any CEF-compatible SIEM via HTTP or Syslog

Syslog

UDP, TCP, or TLS transport
CEF (Common Event Format) support means RAXE works with any SIEM that accepts CEF, including QRadar, LogRhythm, Elastic SIEM, Sumo Logic, and more.

Quick Start (CLI)

Configure SIEM integration per customer:
# Splunk HEC
raxe customer siem configure cust_acme --mssp mssp_partner \
    --type splunk \
    --url https://splunk.company.com:8088/services/collector/event \
    --token "hec-token-here" \
    --index security \
    --source raxe

# Test the connection
raxe customer siem test cust_acme --mssp mssp_partner

# View configuration
raxe customer siem show cust_acme --mssp mssp_partner

Splunk

Configuration

raxe customer siem configure cust_acme --mssp mssp_partner \
    --type splunk \
    --url https://splunk.company.com:8088/services/collector/event \
    --token "your-hec-token" \
    --index security \
    --source raxe \
    --sourcetype _json

Splunk Event Format

{
  "time": 1706619000,
  "host": "raxe-agent-01",
  "source": "raxe",
  "sourcetype": "_json",
  "index": "security",
  "event": {
    "event_type": "scan",
    "threat_detected": true,
    "severity": "critical",
    "rule_ids": ["pi-001", "pi-003"],
    "prompt_hash": "sha256:abc123...",
    "customer_id": "cust_acme",
    "agent_id": "agent_prod_001"
  }
}

Splunk Options

OptionDescriptionDefault
--indexSplunk index namemain
--sourceEvent source identifierraxe
--sourcetypeSplunk sourcetype_json
--hostHost identifierAgent hostname

CrowdStrike Falcon LogScale

Configuration

raxe customer siem configure cust_acme --mssp mssp_partner \
    --type crowdstrike \
    --url https://cloud.community.humio.com/api/v1/ingest/hec \
    --token "your-ingest-token" \
    --repository security

CrowdStrike Options

OptionDescriptionDefault
--repositoryLogScale repository-
--parserCustom parser name-

Microsoft Sentinel

Configuration

raxe customer siem configure cust_acme --mssp mssp_partner \
    --type sentinel \
    --url https://YOUR-WORKSPACE.ods.opinsights.azure.com/api/logs \
    --token "base64-encoded-shared-key" \
    --workspace-id "your-workspace-id" \
    --log-type RaxeEvents

Sentinel Event Format

Events are transformed to PascalCase for Azure conventions:
{
  "TimeGenerated": "2026-01-30T10:30:00Z",
  "EventType": "scan",
  "ThreatDetected": true,
  "Severity": "Critical",
  "RuleIds": ["pi-001"],
  "PromptHash": "sha256:abc123...",
  "CustomerId": "cust_acme"
}

Sentinel Options

OptionDescriptionRequired
--workspace-idAzure Log Analytics workspace IDYes
--log-typeCustom log type nameYes
Sentinel uses HMAC-SHA256 authentication. The token should be your Log Analytics workspace shared key, base64-encoded.

ArcSight

Configuration

raxe customer siem configure cust_acme --mssp mssp_partner \
    --type arcsight \
    --url https://arcsight.company.com/receiver/v1/events \
    --token "connector-token" \
    --smart-connector-id sc-001 \
    --device-vendor RAXE \
    --device-product ThreatDetection

ArcSight Options

OptionDescriptionDefault
--smart-connector-idSmartConnector ID-
--device-vendorCEF device vendorRAXE
--device-productCEF device productThreatDetection

CEF (Common Event Format)

CEF support enables integration with any SIEM that accepts CEF, including:
  • IBM QRadar
  • LogRhythm
  • Elastic SIEM
  • Sumo Logic
  • Exabeam
  • And many more

CEF over HTTP

raxe customer siem configure cust_acme --mssp mssp_partner \
    --type cef \
    --url https://collector.company.com/cef \
    --token "bearer-token"

CEF over Syslog (UDP)

raxe customer siem configure cust_acme --mssp mssp_partner \
    --type cef \
    --url syslog://siem.company.com \
    --transport udp \
    --port 514

CEF over Syslog (TCP with TLS)

raxe customer siem configure cust_acme --mssp mssp_partner \
    --type cef \
    --url syslog://siem.company.com \
    --transport tcp \
    --port 6514 \
    --tls

CEF Message Format

RAXE generates standard CEF messages:
CEF:0|RAXE|ThreatDetection|0.10.0|pi-001|Prompt Injection Detected|10|rt=1706619000000 src=inst_abc123 suser=agent_prod_001 cs1=sha256:abc123 cs1Label=PromptHash cs2=pi-001,pi-003 cs2Label=RuleIDs cs3=PI cs3Label=ThreatFamilies

CEF Field Mapping

CEF FieldRAXE FieldDescription
rttimestampReceipt time (ms epoch)
srcinstallation_idSource identifier
suseragent_idAgent identifier
cs1prompt_hashSHA-256 prompt hash
cs2rule_idsComma-separated rule IDs
cs3familiesThreat families detected
cs5mssp_idMSSP identifier
cs6customer_idCustomer identifier
cn1prompt_lengthPrompt character count
cn2detection_countNumber of detections
cn3scan_duration_msScan latency

CEF Severity Mapping

RAXE SeverityCEF SeveritySyslog Priority
none06 (informational)
LOW35 (notice)
MEDIUM54 (warning)
HIGH73 (error)
CRITICAL102 (critical)

CEF Options

OptionDescriptionDefault
--transporthttp, udp, or tcphttp
--portSyslog port514 (UDP), 6514 (TCP)
--tlsEnable TLS (TCP only)false
--facilitySyslog facility16 (local0)

Multi-Customer Routing

The SIEM dispatcher routes events to the correct SIEM based on customer:
from raxe.infrastructure.siem import SIEMDispatcher, create_siem_adapter

dispatcher = SIEMDispatcher()

# Customer A → Splunk
dispatcher.register_adapter(
    create_siem_adapter(splunk_config),
    customer_id="cust_acme"
)

# Customer B → CrowdStrike
dispatcher.register_adapter(
    create_siem_adapter(crowdstrike_config),
    customer_id="cust_beta"
)

# Global adapter (receives ALL events)
dispatcher.register_adapter(create_siem_adapter(global_config))

# Start background delivery
dispatcher.start()

# Events auto-route based on customer_id
dispatcher.dispatch(event)

Testing

Test Connection

# Test SIEM connectivity
raxe customer siem test cust_acme --mssp mssp_partner
Output:
Testing SIEM connection for cust_acme...
✓ Connection successful (HTTP 200)
✓ Authentication valid
✓ Test event delivered

View Configuration

raxe customer siem show cust_acme --mssp mssp_partner
Output:
SIEM Configuration: cust_acme

  Type:     splunk
  URL:      https://splunk.company.com:8088/services/collector/event
  Index:    security
  Source:   raxe
  Enabled:  true

Disable SIEM

raxe customer siem disable cust_acme --mssp mssp_partner

Event Batching

SIEM adapters batch events for efficiency:
SettingDefaultDescription
batch_size100Events per batch
flush_interval_seconds10Max wait before flush
retry_count3Retries on failure
timeout_seconds30Request timeout
Configure via SDK:
config = SIEMConfig(
    siem_type=SIEMType.SPLUNK,
    endpoint_url="...",
    auth_token="...",
    batch_size=50,
    flush_interval_seconds=5,
    retry_count=5,
    timeout_seconds=60,
)

Troubleshooting

  1. Verify URL is correct (include full path for HEC endpoints)
  2. Check firewall allows outbound to SIEM
  3. Verify token/credentials are valid
  4. Test with curl: curl -X POST <url> -H "Authorization: Bearer <token>"
  1. Check SIEM index/repository permissions
  2. Verify event format matches SIEM expectations
  3. Check SIEM ingestion logs for parsing errors
  4. Ensure batch has been flushed (default: 10 seconds)
  1. Verify syslog daemon is running
  2. Check port is correct (514 UDP, 6514 TLS)
  3. For TLS, ensure certificate is valid
  4. Check firewall allows UDP/TCP on syslog port
  • Splunk: Token must have HEC permissions
  • Sentinel: Use base64-encoded shared key
  • CrowdStrike: Use ingest API token
  • CEF HTTP: Bearer token format required

Best Practices

Create a dedicated index (Splunk) or repository (LogScale) for RAXE events. This enables:
  • Easier searching and dashboards
  • Separate retention policies
  • Access control isolation
Always use TLS (port 6514) for syslog in production. UDP syslog is unencrypted and can be spoofed.
Use audit logging to track SIEM delivery success rates:
from raxe.infrastructure.audit.mssp_audit_logger import get_mssp_audit_logger
stats = get_mssp_audit_logger().get_stats()
print(f"Success rate: {stats['successful'] / stats['total_deliveries']:.1%}")
Different customers may use different SIEMs. Configure each customer individually to route events correctly.