|
41 | 41 | "email": "support@microsoft.com", |
42 | 42 | "_email": "[variables('email')]", |
43 | 43 | "_solutionName": "Pulse Connect Secure", |
44 | | - "_solutionVersion": "3.0.3", |
| 44 | + "_solutionVersion": "3.0.4", |
45 | 45 | "solutionId": "azuresentinel.azure-sentinel-solution-pulseconnectsecure", |
46 | 46 | "_solutionId": "[variables('solutionId')]", |
47 | 47 | "parserObject1": { |
|
59 | 59 | "workspaceResourceId": "[resourceId('microsoft.OperationalInsights/Workspaces', parameters('workspace'))]", |
60 | 60 | "_workbookcontentProductId1": "[concat(take(variables('_solutionId'),50),'-','wb','-', uniqueString(concat(variables('_solutionId'),'-','Workbook','-',variables('_workbookContentId1'),'-', variables('workbookVersion1'))))]", |
61 | 61 | "analyticRuleObject1": { |
62 | | - "analyticRuleVersion1": "1.0.3", |
| 62 | + "analyticRuleVersion1": "1.0.4", |
63 | 63 | "_analyticRulecontentId1": "34663177-8abf-4db1-b0a4-5683ab273f44", |
64 | 64 | "analyticRuleId1": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '34663177-8abf-4db1-b0a4-5683ab273f44')]", |
65 | 65 | "analyticRuleTemplateSpecName1": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('34663177-8abf-4db1-b0a4-5683ab273f44')))]", |
66 | | - "_analyticRulecontentProductId1": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','34663177-8abf-4db1-b0a4-5683ab273f44','-', '1.0.3')))]" |
| 66 | + "_analyticRulecontentProductId1": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','34663177-8abf-4db1-b0a4-5683ab273f44','-', '1.0.4')))]" |
67 | 67 | }, |
68 | 68 | "analyticRuleObject2": { |
69 | | - "analyticRuleVersion2": "1.0.3", |
| 69 | + "analyticRuleVersion2": "1.0.4", |
70 | 70 | "_analyticRulecontentId2": "1fa1528e-f746-4794-8a41-14827f4cb798", |
71 | 71 | "analyticRuleId2": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '1fa1528e-f746-4794-8a41-14827f4cb798')]", |
72 | 72 | "analyticRuleTemplateSpecName2": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('1fa1528e-f746-4794-8a41-14827f4cb798')))]", |
73 | | - "_analyticRulecontentProductId2": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','1fa1528e-f746-4794-8a41-14827f4cb798','-', '1.0.3')))]" |
| 73 | + "_analyticRulecontentProductId2": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','1fa1528e-f746-4794-8a41-14827f4cb798','-', '1.0.4')))]" |
74 | 74 | }, |
75 | 75 | "_solutioncontentProductId": "[concat(take(variables('_solutionId'),50),'-','sl','-', uniqueString(concat(variables('_solutionId'),'-','Solution','-',variables('_solutionId'),'-', variables('_solutionVersion'))))]" |
76 | 76 | }, |
|
84 | 84 | "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" |
85 | 85 | ], |
86 | 86 | "properties": { |
87 | | - "description": "PulseConnectSecure Data Parser with template version 3.0.3", |
| 87 | + "description": "PulseConnectSecure Data Parser with template version 3.0.4", |
88 | 88 | "mainTemplate": { |
89 | 89 | "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", |
90 | 90 | "contentVersion": "[variables('parserObject1').parserVersion1]", |
|
216 | 216 | "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" |
217 | 217 | ], |
218 | 218 | "properties": { |
219 | | - "description": "PulseConnectSecure Workbook with template version 3.0.3", |
| 219 | + "description": "PulseConnectSecure Workbook with template version 3.0.4", |
220 | 220 | "mainTemplate": { |
221 | 221 | "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", |
222 | 222 | "contentVersion": "[variables('workbookVersion1')]", |
|
272 | 272 | "contentId": "Syslog", |
273 | 273 | "kind": "DataType" |
274 | 274 | }, |
275 | | - { |
276 | | - "contentId": "PulseConnectSecure", |
277 | | - "kind": "DataConnector" |
278 | | - }, |
279 | 275 | { |
280 | 276 | "contentId": "SyslogAma", |
281 | 277 | "kind": "DataConnector" |
|
308 | 304 | "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" |
309 | 305 | ], |
310 | 306 | "properties": { |
311 | | - "description": "PulseConnectSecureVPN-BruteForce_AnalyticalRules Analytics Rule with template version 3.0.3", |
| 307 | + "description": "PulseConnectSecureVPN-BruteForce_AnalyticalRules Analytics Rule with template version 3.0.4", |
312 | 308 | "mainTemplate": { |
313 | 309 | "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", |
314 | 310 | "contentVersion": "[variables('analyticRuleObject1').analyticRuleVersion1]", |
|
325 | 321 | "description": "This query identifies evidence of potential brute force attack by looking at multiple failed attempts to log into the VPN server", |
326 | 322 | "displayName": "PulseConnectSecure - Potential Brute Force Attempts", |
327 | 323 | "enabled": false, |
328 | | - "query": "let threshold = 20;\nPulseConnectSecure\n| where Messages contains \"Login failed\"\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), count() by User, Source_IP\n| where count_ > threshold\n| extend timestamp = StartTime, AccountCustomEntity = User, IPCustomEntity = Source_IP\n", |
| 324 | + "query": "let threshold = 20;\nPulseConnectSecure\n| where Messages contains \"Login failed\"\n| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), count() by User, Source_IP\n| where count_ > threshold\n", |
329 | 325 | "queryFrequency": "PT1H", |
330 | 326 | "queryPeriod": "PT1H", |
331 | 327 | "severity": "Low", |
|
336 | 332 | "status": "Available", |
337 | 333 | "requiredDataConnectors": [ |
338 | 334 | { |
| 335 | + "connectorId": "SyslogAma", |
339 | 336 | "datatypes": [ |
340 | 337 | "Syslog" |
341 | | - ], |
342 | | - "connectorId": "SyslogAma" |
| 338 | + ] |
343 | 339 | } |
344 | 340 | ], |
345 | 341 | "tactics": [ |
|
350 | 346 | ], |
351 | 347 | "entityMappings": [ |
352 | 348 | { |
353 | | - "entityType": "Account", |
354 | 349 | "fieldMappings": [ |
355 | 350 | { |
356 | 351 | "identifier": "FullName", |
357 | | - "columnName": "AccountCustomEntity" |
| 352 | + "columnName": "User" |
358 | 353 | } |
359 | | - ] |
| 354 | + ], |
| 355 | + "entityType": "Account" |
360 | 356 | }, |
361 | 357 | { |
362 | | - "entityType": "IP", |
363 | 358 | "fieldMappings": [ |
364 | 359 | { |
365 | 360 | "identifier": "Address", |
366 | | - "columnName": "IPCustomEntity" |
| 361 | + "columnName": "Source_IP" |
367 | 362 | } |
368 | | - ] |
| 363 | + ], |
| 364 | + "entityType": "IP" |
369 | 365 | } |
370 | 366 | ] |
371 | 367 | } |
|
421 | 417 | "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" |
422 | 418 | ], |
423 | 419 | "properties": { |
424 | | - "description": "PulseConnectSecureVPN-DistinctFailedUserLogin_AnalyticalRules Analytics Rule with template version 3.0.3", |
| 420 | + "description": "PulseConnectSecureVPN-DistinctFailedUserLogin_AnalyticalRules Analytics Rule with template version 3.0.4", |
425 | 421 | "mainTemplate": { |
426 | 422 | "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", |
427 | 423 | "contentVersion": "[variables('analyticRuleObject2').analyticRuleVersion2]", |
|
438 | 434 | "description": "This query identifies evidence of failed login attempts from a large number of distinct users on a Pulse Connect Secure VPN server", |
439 | 435 | "displayName": "PulseConnectSecure - Large Number of Distinct Failed User Logins", |
440 | 436 | "enabled": false, |
441 | | - "query": "let threshold = 100;\nPulseConnectSecure\n| where Messages startswith \"Login failed\"\n| summarize dcount(User) by Computer, bin(TimeGenerated, 15m)\n| where dcount_User > threshold\n| extend timestamp = TimeGenerated, HostCustomEntity = Computer\n", |
| 437 | + "query": "let threshold = 100;\nPulseConnectSecure\n| where Messages startswith \"Login failed\"\n| summarize dcount(User) by Computer, bin(TimeGenerated, 15m)\n| where dcount_User > threshold\n", |
442 | 438 | "queryFrequency": "PT1H", |
443 | 439 | "queryPeriod": "PT1H", |
444 | 440 | "severity": "Medium", |
|
449 | 445 | "status": "Available", |
450 | 446 | "requiredDataConnectors": [ |
451 | 447 | { |
| 448 | + "connectorId": "SyslogAma", |
452 | 449 | "datatypes": [ |
453 | 450 | "Syslog" |
454 | | - ], |
455 | | - "connectorId": "SyslogAma" |
| 451 | + ] |
456 | 452 | } |
457 | 453 | ], |
458 | 454 | "tactics": [ |
|
463 | 459 | ], |
464 | 460 | "entityMappings": [ |
465 | 461 | { |
466 | | - "entityType": "Host", |
467 | 462 | "fieldMappings": [ |
468 | 463 | { |
469 | 464 | "identifier": "FullName", |
470 | | - "columnName": "HostCustomEntity" |
| 465 | + "columnName": "Computer" |
471 | 466 | } |
472 | | - ] |
| 467 | + ], |
| 468 | + "entityType": "Host" |
473 | 469 | } |
474 | 470 | ] |
475 | 471 | } |
|
521 | 517 | "apiVersion": "2023-04-01-preview", |
522 | 518 | "location": "[parameters('workspace-location')]", |
523 | 519 | "properties": { |
524 | | - "version": "3.0.3", |
| 520 | + "version": "3.0.4", |
525 | 521 | "kind": "Solution", |
526 | 522 | "contentSchemaVersion": "3.0.0", |
527 | 523 | "displayName": "Pulse Connect Secure", |
|
0 commit comments