Moderne Sicherheitsanalysen erfordern die Verarbeitung großer Mengen an Sicherheitsdaten in Echtzeit, während Bedrohungen schnell erkannt und darauf reagiert werden muss. OpenSearch bietet leistungsfähige Funktionen für Security Information and Event Management (SIEM) und ermöglicht es Organisationen, Sicherheitsereignisse in ihrer gesamten Infrastruktur zu sammeln, zu analysieren und darauf zu reagieren. In diesem Kapitel erfahren Sie, wie Sie umfassende Sicherheitsanalysen mit OpenSearch implementieren können.
Sicherheitsdaten stammen aus vielen verschiedenen Quellen, die jeweils einzigartige Einblicke in potenzielle Sicherheitsbedrohungen bieten. Diese Daten müssen strukturiert und korreliert werden, um aussagekräftige Sicherheitserkenntnisse zu gewinnen. Beginnen wir mit der Einrichtung unserer Sicherheitsdaten-Pipeline.
Zunächst erstellen wir ein Index-Template, das verschiedene Arten von Sicherheitsereignissen aufnehmen kann:
PUT _index_template/security_events
{
"index_patterns": ["security-events-*"],
"template": {
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1,
"index.mapping.total_fields.limit": 10000,
"index.lifecycle.name": "security_events_policy"
},
"mappings": {
"properties": {
"@timestamp": { "type": "date" },
"event": {
"properties": {
"category": { "type": "keyword" },
"type": { "type": "keyword" },
"severity": { "type": "keyword" },
"action": { "type": "keyword" }
}
},
"source": {
"properties": {
"ip": { "type": "ip" },
"port": { "type": "long" },
"geo": {
"properties": {
"country_iso_code": { "type": "keyword" },
"city_name": { "type": "keyword" },
"location": { "type": "geo_point" }
}
}
}
},
"destination": {
"properties": {
"ip": { "type": "ip" },
"port": { "type": "long" },
"geo": {
"properties": {
"country_iso_code": { "type": "keyword" },
"city_name": { "type": "keyword" },
"location": { "type": "geo_point" }
}
}
}
},
"user": {
"properties": {
"name": { "type": "keyword" },
"domain": { "type": "keyword" },
"roles": { "type": "keyword" }
}
},
"process": {
"properties": {
"name": { "type": "keyword" },
"pid": { "type": "long" },
"command_line": { "type": "keyword" }
}
}
}
}
}
}
Dieses Template bietet eine strukturierte Möglichkeit, verschiedene Sicherheitsereignisse zu speichern und bewahrt dabei die Flexibilität für unterschiedliche Ereignistypen. Das Mapping enthält wesentliche Felder für die Sicherheitsanalyse, wie Quell- und Zielinformationen, Benutzerdetails und Prozessdaten.
Security Information and Event Management (SIEM) kombiniert Sicherheitsinformationsmanagement (SIM) mit Sicherheitsereignismanagement (SEM). Implementieren wir die wichtigsten SIEM-Funktionalitäten in OpenSearch.
Zunächst erstellen wir eine Engine für Erkennungsregeln, die Sicherheitsbedrohungen identifizieren kann:
PUT _plugins/_security_analytics/rules/suspicious_login_attempts
{
"name": "Verdächtige Login-Versuche",
"risk_score": 75,
"severity": "high",
"description": "Erkennt mehrere fehlgeschlagene Login-Versuche von derselben Quell-IP",
"query": {
"bool": {
"must": [
{
"match": {
"event.category": "authentication"
}
},
{
"match": {
"event.type": "failure"
}
}
]
}
},
"threshold": {
"field": "source.ip",
"value": 5,
"timeframe": "5m"
},
"tags": ["authentication", "brute-force"]
}
Wir können Korrelationsregeln erstellen, um komplexe Angriffsmuster zu erkennen:
PUT _plugins/_security_analytics/correlations/lateral_movement
{
"name": "Mögliche Laterale Bewegung",
"description": "Erkennt erfolgreiche Authentifizierung nach mehreren Fehlversuchen von verschiedenen Standorten",
"rules": [
{
"id": "auth_failures",
"query": {
"bool": {
"must": [
{
"match": {
"event.category": "authentication"
}
},
{
"match": {
"event.type": "failure"
}
}
]
}
},
"threshold": {
"field": "source.ip",
"value": 3,
"timeframe": "10m"
}
},
{
"id": "auth_success",
"query": {
"bool": {
"must": [
{
"match": {
"event.category": "authentication"
}
},
{
"match": {
"event.type": "success"
}
}
]
}
}
}
],
"sequence": ["auth_failures", "auth_success"],
"timeframe": "15m"
}
Effektive Bedrohungserkennung erfordert sowohl Echtzeitüberwachung als auch historische Analyse. Implementieren wir ein umfassendes Bedrohungserkennungssystem.
Wir erstellen einen Monitor, der kontinuierlich Sicherheitsereignisse analysiert:
PUT _plugins/_alerting/monitors/real_time_threats
{
"type": "monitor",
"name": "Echtzeit-Bedrohungserkennung",
"enabled": true,
"schedule": {
"period": {
"interval": 1,
"unit": "MINUTES"
}
},
"inputs": [
{
"search": {
"indices": ["security-events-*"],
"query": {
"bool": {
"should": [
{
"range": {
"risk_score": {
"gte": 80
}
}
},
{
"terms": {
"event.type": ["malware", "intrusion"]
}
}
],
"filter": [
{
"range": {
"@timestamp": {
"gte": "now-5m",
"lte": "now"
}
}
}
]
}
}
}
}
],
"triggers": [
{
"name": "Bedrohung mit hohem Risiko",
"severity": "High",
"condition": {
"script": {
"source": "ctx.results[0].hits.total.value > 0"
}
},
"actions": [
{
"name": "Security-Team benachrichtigen",
"destination_id": "security_slack",
"message_template": {
"source": "Bedrohung mit hohem Risiko erkannt:\n{{#ctx.results.0.hits.hits}}* {{_source.event.type}} von {{_source.source.ip}}\n{{/ctx.results.0.hits.hits}}"
}
}
]
}
]
}
Wir können unsere Bedrohungserkennung durch die Integration von Threat Intelligence Feeds verbessern:
PUT _ingest/pipeline/threat_intel_enrichment
{
"description": "Reichert Sicherheitsereignisse mit Threat Intelligence Daten an",
"processors": [
{
"script": {
"lang": "painless",
"source": """
if (ctx.containsKey('source') && ctx.source.containsKey('ip')) {
def ip = ctx.source.ip;
def threat_info = ThreatIntel.lookup(ip);
if (threat_info != null) {
ctx.threat = new HashMap();
ctx.threat.indicator = ip;
ctx.threat.type = threat_info.type;
ctx.threat.confidence = threat_info.confidence;
ctx.threat.last_seen = threat_info.last_seen;
}
}
"""
}
}
]
}
Compliance-Überwachung erfordert die Verfolgung spezifischer Ereignisse und die Generierung von Berichten. Implementieren wir entsprechende Funktionen.
Zunächst definieren wir Regelwerke für gängige Standards:
PUT _plugins/_security_analytics/compliance/pci_dss
{
"name": "PCI DSS Compliance",
"rules": [
{
"id": "pci_10.2.4",
"name": "Ungültige Zugriffsversuche",
"description": "Überwacht und protokolliert alle ungültigen Zugriffsversuche",
"query": {
"bool": {
"must": [
{
"match": {
"event.category": "authentication"
}
},
{
"match": {
"event.type": "failure"
}
}
]
}
}
},
{
"id": "pci_10.2.5",
"name": "Administrator-Aktivität",
"description": "Überwacht und protokolliert alle Administrator-Aktivitäten",
"query": {
"bool": {
"must": [
{
"terms": {
"user.roles": ["admin", "administrator"]
}
}
]
}
}
}
]
}
Erstellen wir ein Berichtssystem für Compliance-Anforderungen:
PUT _plugins/_reporting/definition/compliance_report
{
"report_params": {
"report_name": "Monatlicher Compliance-Bericht",
"report_source": "compliance_dashboard",
"description": "Monatlicher Compliance-Status-Bericht",
"report_format": "pdf"
},
"trigger": {
"trigger_type": "schedule",
"schedule": {
"interval": "1M"
}
},
"delivery": {
"recipients": ["security@example.com"],
"channel": "email",
"condition": {
"script": "true"
}
}
}
Die Erstellung effektiver Sicherheits-Dashboards ist entscheidend für Überwachung und Reaktion. Hier ein Beispiel für eine Dashboard-Konfiguration:
POST _plugins/_dashboards/api/saved_objects/dashboard/security_overview
{
"attributes": {
"title": "Sicherheitsübersicht",
"panels": [
{
"type": "visualization",
"name": "Bedrohungskarte",
"params": {
"type": "region_map",
"source": {
"index": "security-events-*",
"aggs": {
"countries": {
"terms": {
"field": "source.geo.country_iso_code",
"size": 100
}
}
}
}
}
},
{
"type": "visualization",
"name": "Top-Bedrohungen",
"params": {
"type": "metric",
"source": {
"index": "security-events-*",
"aggs": {
"threat_types": {
"terms": {
"field": "event.type",
"size": 5
}
}
}
}
}
}
]
}
}
Bei der Implementierung von Security Analytics in OpenSearch sollten Sie folgende wichtige Praktiken beachten:
Datenaufbewahrung: Implementieren Sie angemessene Datenaufbewahrungsrichtlinien basierend auf Compliance-Anforderungen und Untersuchungsbedürfnissen. Nutzen Sie Index Lifecycle Management (ILM) zur Automatisierung dieses Prozesses.
Performance-Optimierung: Sicherheitsanalysen erfordern oft die Verarbeitung großer Datenmengen. Verwenden Sie geeignete Shard-Einstellungen und optimieren Sie Ihre Abfragen für bessere Performance.
Alert-Tuning: Beginnen Sie mit konservativen Schwellenwerten und passen Sie diese basierend auf Ihrer Umgebung schrittweise an, um Fehlalarme zu reduzieren und gleichzeitig eine effektive Bedrohungserkennung zu gewährleisten.
Datenanreicherung: Erweitern Sie Ihre Sicherheitsereignisse mit zusätzlichem Kontext wie Asset-Informationen, Benutzerdetails und Threat Intelligence, um die Analysekapazitäten zu verbessern.