SIEM and Security Log Correlation#
A SIEM collects logs from across your infrastructure, normalizes them, and applies correlation rules to detect threats that no single log source would reveal. A brute force attempt is visible in auth logs. Lateral movement after successful brute force requires correlating auth logs with network flow data and process execution logs. The SIEM makes that correlation possible.
Log Sources#
The value of a SIEM depends entirely on the logs you feed it. Missing a log source means missing the attacks that source would reveal.
Operating System Audit Logs#
Linux audit logs (auditd) record system calls, file access, user authentication, and privilege changes. These are the foundation for detecting host-level compromise.
# Key audit rules for security monitoring
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k privilege_escalation
-a always,exit -F arch=b64 -S execve -k process_execution
-a always,exit -F arch=b64 -S connect -k network_connectionsOn Kubernetes nodes, auditd captures container escapes and privilege escalation that container-level monitoring misses. Windows Security Event Log provides equivalent data: logon events (4624/4625), privilege use (4672), and process creation (4688).
Kubernetes API Server Audit Logs#
Every interaction with the Kubernetes API is an auditable event. API audit logs capture who did what, when, and from where:
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata
resources:
- group: ""
resources: ["secrets", "configmaps"]
- level: RequestResponse
resources:
- group: ""
resources: ["pods/exec", "pods/portforward"]
- level: Metadata
verbs: ["create", "delete", "patch", "update"]Critical events to monitor: pods/exec (someone executing commands inside a running pod), secrets access (credential theft), clusterrolebindings creation (privilege escalation), and serviceaccounts/token requests (identity theft).
Network Flow Data#
Network flows record which hosts communicated, on which ports, for how long, and how much data was transferred. They do not capture packet contents, but they reveal communication patterns.
Zeek produces structured network metadata from packet captures (connection records, DNS queries, HTTP transactions). VPC Flow Logs in AWS, GCP, and Azure capture network flows without packet capture infrastructure. Suricata combines network intrusion detection with flow logging, inspecting traffic against rule sets (EmergingThreats, ET Pro).
Application Logs#
Application-level logs capture authentication events, authorization decisions, and data access that infrastructure logs cannot see. Standardize formats across services with structured JSON including timestamp, service name, user identifier, action, target resource, and outcome:
{
"timestamp": "2026-02-22T14:30:00Z",
"service": "auth-api",
"level": "warn",
"event": "login_failed",
"user": "admin@example.com",
"source_ip": "203.0.113.45",
"reason": "invalid_password",
"attempt_count": 4
}Cloud Provider Logs#
AWS CloudTrail, GCP Cloud Audit Logs, and Azure Activity Logs record every API call across their respective platforms. These detect IAM changes, security group modifications, storage policy changes, and other control plane actions indicating account compromise or insider threat.
Correlation Rules#
Individual log events are noise. Correlation rules combine events across sources and time windows to produce meaningful alerts.
Brute Force Detection#
A single failed login is normal. Fifty failed logins from the same IP in five minutes is an attack:
# Sigma rule format
title: Brute Force Attempt
logsource:
category: authentication
detection:
selection:
event_type: login_failed
condition: selection | count(source_ip) by target_user > 20
timeframe: 5m
level: highLateral Movement#
A successful login from a source IP that previously failed authentication against multiple hosts suggests credential compromise and lateral movement:
Sequence:
1. Multiple failed logins from IP-A to hosts B, C, D within 10 minutes
2. Successful login from IP-A to host E within 30 minutes of step 1
3. New outbound connections from host E to internal hosts
Alert: Possible lateral movement after brute forcePrivilege Escalation#
A web server process spawning a shell and escalating to root is not normal:
Sequence:
1. Web server process spawns child process (/bin/sh or /bin/bash)
2. Child process executes privilege escalation (sudo, su, pkexec)
3. New process runs as root
Alert: Web shell with privilege escalationData Exfiltration#
Correlate data access with network flows:
Sequence:
1. Database query returns > 10,000 rows (application log)
2. Outbound transfer > 100MB to external IP (network flow)
3. Destination IP not in known-good list
Alert: Possible data exfiltrationMITRE ATT&CK Mapping#
The MITRE ATT&CK framework catalogs adversary tactics and techniques. Mapping your detection rules to ATT&CK identifies coverage gaps.
Key tactics and the log sources that detect them:
| ATT&CK Tactic | Techniques | Primary Log Sources |
|---|---|---|
| Initial Access | Phishing (T1566), Exploit Public-Facing App (T1190) | Email gateway, WAF, application logs |
| Execution | Command and Scripting (T1059), Container Admin (T1609) | Process execution (auditd), K8s audit |
| Persistence | Create Account (T1136), Implant Container (T1525) | IAM logs, K8s audit, container runtime |
| Privilege Escalation | Exploitation (T1068), Container Escape (T1611) | auditd, seccomp, K8s audit |
| Credential Access | Brute Force (T1110), Unsecured Credentials (T1552) | Auth logs, K8s secrets access |
| Lateral Movement | Remote Services (T1021), Internal Proxy (T1090) | Network flows, auth logs |
| Exfiltration | Exfil Over Web (T1567), Transfer Size Limits (T1030) | Network flows, proxy logs, DLP |
Build a detection coverage matrix. For each ATT&CK technique relevant to your environment, list which detection rules cover it and which log sources feed those rules. Gaps in the matrix are blind spots.
Sigma Rules#
Sigma is the open standard for detection rules, analogous to Snort/Suricata rules for network detection but applicable to any log source. Write detection logic once in Sigma format and convert it to your SIEM’s native query language.
title: Kubernetes Pod Exec
id: a]f8e4b2-1234-5678-9abc-def012345678
status: stable
description: Detects kubectl exec into a running pod
logsource:
product: kubernetes
service: audit
detection:
selection:
verb: create
objectRef.resource: pods
objectRef.subresource: exec
condition: selection
level: medium
tags:
- attack.execution
- attack.t1609Convert Sigma rules to SIEM-specific formats:
# Convert to Elasticsearch query
sigma convert -t elasticsearch rule.yml
# Convert to Splunk SPL
sigma convert -t splunk rule.yml
# Convert to OpenSearch
sigma convert -t opensearch rule.ymlThe Sigma community maintains thousands of detection rules. Start with these rather than writing everything from scratch.
Open-Source SIEM Options#
Wazuh#
Wazuh combines host-based intrusion detection, log analysis, file integrity monitoring, vulnerability detection, and compliance reporting. Agents run on monitored hosts and send data to the Wazuh server, which stores events in OpenSearch.
Strengths: built-in CIS benchmark scanning, file integrity monitoring, active response, Docker/Kubernetes monitoring, and pre-built detection rules. Deploys on Kubernetes via the official Helm chart.
Limitations: default rules produce high false positive rates – expect significant tuning time. OpenSearch requires 16GB+ memory for production.
Security Onion#
Security Onion bundles Suricata, Zeek, Elasticsearch, and Kibana for network security monitoring with pre-built threat hunting dashboards.
Strengths: full packet capture, network flow analysis, and IDS alerting in a single deployment with an integrated analyst workflow.
Limitations: network-focused only. Best deployed alongside Wazuh rather than instead of it.
ELK/OpenSearch Stack#
Running Elasticsearch or OpenSearch with Kibana gives you a log aggregation platform you can build SIEM functionality on top of. Maximum flexibility but significant engineering investment – you must build detection rules, correlation logic, alerting, and case management yourself. Consider this only if Wazuh or Security Onion do not fit your requirements.
Cloud-Native Options#
AWS Security Hub aggregates findings from GuardDuty, Inspector, and Macie, mapping them to CIS and PCI-DSS standards. GuardDuty handles threat detection for CloudTrail, VPC Flow Logs, and DNS logs.
Google Cloud SCC centralizes security findings across GCP. Chronicle provides petabyte-scale log analysis with sub-second search.
Microsoft Sentinel is Azure’s cloud-native SIEM with hundreds of pre-built connectors, MITRE ATT&CK-mapped detection rules, and automated response playbooks via Logic Apps.
For hybrid environments, use cloud-native tools for cloud-specific logs and an open-source SIEM (Wazuh) for on-premises and Kubernetes infrastructure. Forward cloud findings to the central SIEM for cross-environment correlation.
Implementation Priorities#
Start with the log sources covering the most common attack patterns: (1) authentication logs from all systems, (2) Kubernetes API audit logs, (3) network flow data from VPC flow logs or Zeek, and (4) cloud provider audit logs. Add application logs, file integrity monitoring, and process execution logging as your detection engineering matures. Each new log source creates correlation opportunities but increases storage costs – add sources intentionally, with specific detection rules planned for each.