Skip to content

Commit 8d68187

Browse files
Add DDoS attack detection analytic rule for Azure Firewall
This analytic rule identifies DDoS attacks in Azure Firewall IDPS logs, providing details on severity, actions, and threat categories.
1 parent a690626 commit 8d68187

1 file changed

Lines changed: 70 additions & 0 deletions

File tree

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
id: c3ffdbe6-2e62-4984-9e80-933ed90b2f6a
2+
name: DDoS attack detected
3+
description: |
4+
Identifies DDoS attack in Azure Firewall IDPS logs.
5+
severity: High
6+
status: Available
7+
requiredDataConnectors:
8+
- connectorId: AzureFirewall
9+
dataTypes:
10+
- AZFWIdpsSignature
11+
queryFrequency: 1h
12+
queryPeriod: 24h
13+
triggerOperator: gt
14+
triggerThreshold: 1
15+
tactics:
16+
- Impact
17+
relevantTechniques:
18+
- T1498
19+
query: |
20+
let TimeWindow = 30d;
21+
let HitThreshold = 10;
22+
let MinSeverity = 2;
23+
let EnableCategoryFilter = true;
24+
let EnableDescriptionFilter = false;
25+
let EnableActionFilter = false;
26+
let CategoriesOfInterest = dynamic([
27+
"Attempted Denial of Service",
28+
"Denial of Service",
29+
"Detection of a Denial of Service Attack"
30+
]);
31+
let DescriptionsOfInterest = dynamic([
32+
"attempted-dos",
33+
"successful-dos",
34+
"denial-of-service"
35+
]);
36+
let MatchActions = dynamic(["Deny", "alert"]);
37+
AZFWIdpsSignature
38+
| where TimeGenerated >= ago(TimeWindow)
39+
| where Severity >= MinSeverity
40+
| where (EnableCategoryFilter == false) or (Category has_any (CategoriesOfInterest))
41+
| where (EnableDescriptionFilter == false) or (Description has_any (DescriptionsOfInterest))
42+
| where (EnableActionFilter == false) or (Action in~ (MatchActions))
43+
| summarize
44+
StartTime = min(TimeGenerated),
45+
EndTime = max(TimeGenerated),
46+
TotalHits = count(),
47+
MaxSeverity = max(Severity),
48+
Actions = make_set(Action, 5),
49+
Signatures = make_set(SignatureId, 20),
50+
Description = make_set(substring(tostring(Description), 0, 120), 3)
51+
by SourceIp, ThreatCategory = Category
52+
| where TotalHits >= HitThreshold
53+
| project
54+
StartTime,
55+
EndTime,
56+
SourceIp,
57+
ThreatCategory,
58+
TotalHits,
59+
MaxSeverity,
60+
Actions,
61+
Signatures,
62+
Description
63+
| order by MaxSeverity desc, TotalHits desc
64+
entityMappings:
65+
- entityType: IP
66+
fieldMappings:
67+
- identifier: Address
68+
columnName: SourceIp
69+
version: 1.0.0
70+
kind: Scheduled

0 commit comments

Comments
 (0)