Überblick — was der Bildschirm leistet
Sicherheit ▸ Bedrohungen (/security/threats) formt die Suricata-IDS-Alarmtabelle suricata_alert_ct zu einer Ansicht von Quell-IP-Entitäten (src_ip) für die Triage um. Statt Tausende Rohalarme aufzulisten, bündelt der Bildschirm sie zu „Wer (welche IP) hat uns getroffen, wie hart und auf welche Weise“ und sortiert nach Schweregrad.
Er verbindet drei Dinge auf einer Seite:
- Triage der Bedrohungsentitäten — eine Karte je src_ip mit Alarmanzahl, höchstem Schweregrad, unterschiedlichen Signaturen und Zeitpunkt der letzten Beobachtung.
- Verknüpfung mit der automatischen Aktion (Sperrung) — das /24 jeder Bedrohungs-IP wird gegen die Auto-Defense-Tabelle
blacklist_infoabgeglichen und erhält ein Badge Gesperrt / Erkannt, damit Erkennung und Reaktion als eine Geschichte lesbar werden. - Signaturerläuterung (Signature Lore) — die meisten Suricata-Signaturzeichenketten sind schwer lesbare Engine-Ereignisse (stream-, decoder- oder app-layer-Ereignisse) und keine Content-Regeln. Dieser Bildschirm erzählt in einem Erläuterungspanel, was jede Signatur tatsächlich impliziert (was sie erkannt hat · warum sie ausgelöst hat [benign→malicious] · worauf zu achten ist · Worst Case).
Alles ist schreibgeschützt. Die einzige zustandsändernde Aktion ist ein Deep Link, der eine Bedrohungs-IP an die Sperrliste übergibt; der eigentliche Sperr-Schreibvorgang erfolgt dort unter einer eigenen Berechtigung.
Wann Sie ihn nutzen
- Morgendliche Triage: die IPs überfliegen, die Sie in den letzten 24 Stunden am stärksten getroffen haben, samt Schweregrad.
- Entscheiden, ob eine bestimmte IP eine echte Bedrohung oder nur Rauschen ist — schnelle Einordnung über den Tonfall [benign/watch/malicious] der Erläuterung und das Auto-Sperr-Badge.
- Einer Kollegin oder einem Kollegen erklären, „was diese Signatur überhaupt bedeutet“ — das Erläuterungspanel dient zugleich als Lehrmaterial.
- Nach der Untersuchung einer Bedrohungs-IP diese zum Sperrkandidaten befördern (→ Deep Link zur Sperrliste, → Popup IP-Reputation).
Aufbau
Obere KPIs (auf das Zeitfenster bezogen)
| KPI | Bedeutung | Herleitung |
|---|---|---|
| alerts | Gesamtzahl der IDS-Alarme im Zeitfenster | Anzahl aus suricata_alert_ct mit alert_ts >= since |
| entities | Anzahl der Bedrohungs-IP-Entitäten | führende src_ips (bis zu 48) |
| blocked | bereits automatisch gesperrte Bedrohungs-IPs | /24 der Entität ∈ blacklist_info(is_use=1) |
| critical | unbehandelte kritische Bedrohungs-IPs (alle beobachteten = critical_all) |
max_sev <= 1 und noch nicht gesperrt |
Karten/Zeilen der Bedrohungsentitäten
Zeigt bis zu 48 führende src_ips, absteigend nach Alarmanzahl. Jede Entität führt mit:
| Feld | Beschreibung |
|---|---|
ip |
Quell-IP (src_ip) |
alerts |
Alarmanzahl dieser IP im Zeitfenster |
sev |
höchster Schweregrad (1=kritisch … 3=informativ). Suricata: niedriger ist schwerwiegender → MIN(severity) ergibt den höchsten |
sigs |
unterschiedliche Signaturen (sid) — Vielfalt des Angriffs |
last_ts |
Zeitpunkt der letzten Beobachtung |
blocked |
true, wenn das /24 dieser IP auf der Auto-Sperrliste steht |
block_source |
Quell-Tag der Sperrung: kitsune · suricata · manual · other (aus der reason-Zeichenkette geparst) |
country / asn |
Geo-/ASN-Anreicherung (ip_info_loop, neueste Zeile) |
Ihr eigenes Netz wird ausgeschlossen.
SecurityScope::excludePrefixes()filtert das /24 der IPs registrierter Instanzen (zuzüglich der Whitelist interner Netze aus der Betriebsrichtlinie) mitNOT LIKEheraus, damit Ihre eigenen Server nicht als Quelle auftauchen und die Bedrohungsliste zumüllen. Erscheint eine interne IP dennoch wegen der Richtungskennzeichnung, wird ihr eininternal-Badge angeheftet (gesteuert voninternalMatchers) und die Reputationsschaltfläche ausgeblendet.
Schweregradverteilung · Kategorien · Signaturen
- Schweregradverteilung:
{1: n, 2: n, 3: n}— Anzahl kritischer/warnender/informativer Alarme. - Kategorien: die 10 häufigsten Kategorien (absteigend nach Anzahl) mit ihrem jeweils niedrigsten Schweregrad.
- Signaturen: die 12 häufigsten Signaturen (absteigend nach Anzahl). Jeder Eintrag führt
signature·sid·cnt·sev(Minimum) sowieexplain(die SignatureLore-Klassifikation). Ein Klick auf eine Signatur öffnet das nebenstehende Erläuterungspanel.
Panel der Signaturerläuterung
App\Support\SignatureLore::classify() klassifiziert die Signaturzeichenkette in eine Familie und einen Detailschlüssel; der eigentliche Text liegt im Sprachpaket resources/lang/{ko,en}/siglore.php. Das Frontend führt family + key zusammen (das Detail überschreibt die Familie) und rendert daraus eine vierteilige Erzählung.
| Teil | Inhalt |
|---|---|
| Was sie erkannt hat (meaning) | was die Signatur protokollseitig erfasst hat |
| Warum sie ausgelöst hat · Möglichkeiten (why) | mögliche Ursachen, nach Tonfall aufgeführt [benign] → [watch] → [malicious] |
| Worauf zu achten ist (caution) | wie sich Rauschen von einem echten Signal trennen lässt |
| Worst Case (worst) | die Kompromittierung, zu der es führen kann, wenn man es ignoriert |
Jede Familie trägt einen implizierten Schweregrad (tone) — selbst informative Ereignisse implizieren Unterschiedliches.
| family | Bezeichnung | tone | Symbol |
|---|---|---|---|
stream |
Anomalie beim Reassemblieren des TCP-Streams | warn | mdi-transit-connection-variant |
decoder |
Anomalie bei Paketdekodierung/-integrität | info | mdi-package-variant-closed |
applayer |
Anomalie des Anwendungsprotokolls | warn | mdi-swap-horizontal-bold |
http |
Anomalie beim HTTP-Parsing | warn | mdi-web |
tls |
TLS-Anomalie | warn | mdi-lock-outline |
dns |
DNS-Anomalie | warn | mdi-dns-outline |
scan |
Scan/Aufklärung | warn | mdi-radar |
exploit |
Exploit-Versuch | crit | mdi-bug-outline |
malware |
Schadsoftware/C2 | crit | mdi-virus-outline |
dos |
DoS/Flooding | crit | mdi-flash-alert-outline |
policy |
Richtlinie/Information | info | mdi-file-document-outline |
generic |
sonstige IDS-Signatur | info | mdi-shield-alert-outline |
Es gibt 14 Detailschlüssel, die die Familie überschreiben: invalid_timestamp · checksum · retransmit · handshake · evasion · stateanomaly · host_header · desync · malformed · one_direction · mismatch · starttls · tls_anomaly · unsolicited.
Die meisten stream-/decoder-Signaturen (z. B.
SURICATA STREAM Packet with invalid timestamp,SURICATA TCPv4 invalid checksum) sind informativ auf sev3 und lösen massenhaft aufgrund von Infrastruktureigenschaften wie asymmetrischem Routing und Prüfsummen-Offloading der Netzwerkkarte aus — harmloses Rauschen. Achten Sie weniger auf die Signatur selbst als darauf, ob dieselbe src_ip in einem kurzen Zeitfenster mehrere Familien stapelt (Scan + Handshake-Anomalie usw.). Diese Häufung ist das Signal für Absicht.
Vorgehen
1) Zeitraum wählen
Das Standardfenster beträgt 24 h. Unterstützte Zeiträume:
| range | Fenster (Min.) |
|---|---|
1h |
60 |
6h |
360 |
24h |
1440 (Standard) |
Der Umschalter wird als ?range= übergeben; jeder Wert außerhalb der Whitelist wird auf 24h heruntergestuft.
2) Bedrohungs-IPs triagieren
- Beginnen Sie bei den Entitäten mit dem höchsten Schweregrad (
sev=1kritisch) und der größten Alarmanzahl. - Ein Badge Gesperrt bedeutet, dass die Auto-Defense bereits reagiert hat — prüfen Sie
block_source, um zu sehen, welche Engine gesperrt hat. - Nicht gesperrt + hoher Schweregrad + viele Signaturen ist Ihr wichtigster Kandidat für Untersuchung bzw. Sperrung.
3) IP-Detailansicht (sicherheitsspezifisches Popover)
Ein Klick auf eine IP ruft GET /security/threats/ip-detail?ip=<IP>&range=<range> auf. Die IP wird streng mit FILTER_VALIDATE_IP validiert; ein ungültiger Wert liefert 422 (invalid_ip). Zurückgegebene Felder:
{
"ok": true,
"detail": {
"ip": "203.0.113.10",
"cidr": "203.0.113.0/24",
"geo": { "country": "US", "city": null, "asn": "ASNNNNN", "isp": "...", "org": "..." },
"signatures": [
{ "signature": "...", "severity": 3, "cnt": 42, "explain": { "family": "stream", "key": "invalid_timestamp", "tone": "warn", "icon": "mdi-...", "svg": "stream" } }
],
"blocked": true,
"block_source": "suricata",
"block_reason": "[Suricata Auto-Block] ...",
"block_at": "2026-08-13 04:12:00",
"abuse_url": "https://www.abuseipdb.com/check/203.0.113.10"
}
}
- geo/ASN: Anreicherung über
ip_info_loop. - signatures: die 8 häufigsten Signaturen dieser IP (absteigend nach Anzahl), jeweils mit ihrer
explain-Erläuterung. - Sperrstatus: /24-Abgleich gegen
blacklist_info(c_class,is_use=1) → Quell-Tag · roher reason · Sperrzeitpunkt.
4) Reputation prüfen · zur Sperrung befördern
- Klicken Sie auf das Symbol (
.infr-ipsym) neben einer IP → In-App-Popup von AbuseIPDB unter IP-Reputation (mixins/abuse_check.js+/security/ip-reputation). Es zeigt Missbrauchs-Konfidenz, Anzahl der Meldungen, Land, Nutzungsart und Details der jüngsten Meldungen. - Wenn Sie sich nach der Untersuchung für eine Sperrung entscheiden → Deep Link zur Sperrliste mit
?add=<IP>(beim Einfügen auf /24 normalisiert, unter eigener Berechtigung und mit Auditierung).
Datenquellen
| Tabelle | Zweck | Zugriff |
|---|---|---|
suricata_alert_ct |
IDS-Alarme (src_ip · severity · category · signature · sid · alert_ts) | lesend |
blacklist_info |
Auto-Sperrliste (/24 c_class · reason · country · is_use) |
lesend (Badge der automatischen Aktion) |
ip_info_loop |
Geo-/ASN-/ISP-Anreicherung | lesend |
| IPs registrierter Instanzen + interne Netze aus der Betriebsrichtlinie | Ausschluss des eigenen Netzes · internal-Badge | SecurityScope |
Alle Quellen liegen auf der Verbindung
legacy_glory(präfixlose Legacy-Tabellen, die von der Collector-Flotte gefüllt werden) und sind schreibgeschützt. Das Lese-Rückgrat istApp\Repositories\SecurityRepository(Parameterbindung · enge Zeitfenster · LIMIT). Controller und Service legen diese Tabellen niemals an und ändern sie nie.
Cache · Aktualisierung
- Die Ergebnisse von
ThreatService::build()werden je Zeitraum 30 Sekunden zwischengespeichert (Schlüsselinfr:sec:th:<range>). - Der Bildschirm aktualisiert sich per 30-Sekunden-Polling (
/security/threats/live) — nicht über Reverb. - Da der höchste Schweregrad über
MIN(severity)bestimmt wird, ist ein niedrigerersevgefährlicher (1=kritisch, 3=informativ).
Zugriff
| Aktion | Level |
|---|---|
| Bildschirm ansehen · Detailansicht · Reputation | ≥ 2 (staff=5, admin=10) |
| Demo-Zugriff (1) | verweigert |
- Das gesamte Präfix
/security/*ist durch die Middlewareinfr.level:2geschützt. Die Demo (1) hat keinen Zugriff auf Sicherheitsdaten (RBAC-Level). - Bedrohungen ist durchgängig GET (schreibgeschützt) und daher kein Ziel für Audit-Schreibvorgänge. Destruktive bzw. nach außen wirkende Aktionen wie das Schreiben einer Sperrung oder eine Missbrauchsmeldung erfolgen unter eigener Berechtigung und Auditierung in der Sperrliste bzw. in den Abläufen der internationalen Zusammenarbeit.
Fehlerbehebung und FAQ
F. invalid timestamp / invalid checksum überwiegen — ist das ein Angriff?
Meistens nicht. invalid checksum löst massenhaft im Verkehr Ihrer eigenen Server aus, weil die Netzwerkkarte die Prüfsummenberechnung übernimmt; invalid timestamp entsteht durch asymmetrisches Routing und Middleboxen. Beides ist harmloses Rauschen auf sev3 — genau das erklären die [benign]-Einträge der Erläuterung. Werden Sie erst dann misstrauisch, wenn sie sich auf eine bestimmte externe src_ip konzentrieren, die zusätzlich weitere Signale stapelt (Scan · Handshake-Anomalie).
F. Warum ist Schweregrad 1 der kritischste?
Nach der Suricata-Konvention gilt severity 1=hoch, 2=mittel, 3=informativ. Deshalb wird das höchste Risiko einer Entität mit MIN(severity) berechnet.
F. Die IP meines eigenen Servers erscheint in der Bedrohungsliste.
SecurityScope schließt die /24 registrierter Instanzen und die interne Whitelist aus, doch eine nicht registrierte IP oder eine Richtungskennzeichnung (src/dst) kann sie dennoch zutage fördern. Registrieren Sie die IP unter Instanzen oder ergänzen Sie den Bereich in der Betriebsrichtlinie. Erscheint sie weiterhin, wird ein internal-Badge angeheftet.
F. Die IP-Detailansicht liefert 422.
Der Parameter ip ist keine gültige IP (invalid_ip). Vergewissern Sie sich, dass es sich um einen echten IPv4-/IPv6-Wert handelt.
F. Die Erläuterung zeigt nur „sonstige IDS-Signatur“.
Signaturen, die keine Schlüsselwortregel von SignatureLore::match() erfasst, fallen auf die Familie generic zurück. Beurteilen Sie sie anhand von Kategorie und Signaturname und ergänzen Sie bei Bedarf einen Detailschlüssel in siglore.php.
F. Die Liste bleibt 30 Sekunden lang unverändert. Das ist so vorgesehen. Der Service nutzt einen Cache von 30 Sekunden je Zeitraum plus 30-Sekunden-Polling. Wenn Sie sofort den frischesten Wert brauchen, laden Sie nach Ablauf des Caches neu (das erzwingt eine Neuberechnung).
Verwandte Themen
- Sicherheitsübersicht — der Abwehrtrichter Bedrohung→Erkennung→Reaktion (Herzstück)
- Erkennungen und JA3 — Kitsune ML · srct-Heuristiken · JA3-Sequenzanomalie
- Regelsätze — der maßgebliche Erkennungskatalog mit 44 Regelsätzen
- Sperrliste und Reputation — automatische Sperren ansehen/hinzufügen/aufheben (
blacklist_info) - IP-Reputation — In-App-Reputations-Popup von AbuseIPDB
- Whitelist — von der Sperrung ausgenommene IPs/CIDRs
