Aanbeveling voor het onderzoeken van de basislijn van het besturingssysteem (op basis van CIS-benchmark)
Voer basis- en geavanceerde onderzoeken uit op basis van aanbevelingen voor de basislijn van het besturingssysteem.
Basisonderzoek voor beveiligingsaanveling voor besturingssysteembasislijn
U kunt aanbevelingen voor de basislijn van het besturingssysteem onderzoeken door te navigeren naar Defender for IoT in Azure Portal. Zie voor meer informatie hoe u aanbevelingen voor beveiliging onderzoekt.
Onderzoek naar geavanceerde beveiligingsaanveling voor besturingssysteembasislijn
In deze sectie wordt beschreven hoe u de testresultaten van de basislijn van het besturingssysteem beter kunt begrijpen en hoe u query's uitvoert op gebeurtenissen in Azure Log Analytics.
Vereisten:
Het geavanceerde onderzoek naar beveiligingsaanbieding voor de basislijn van het besturingssysteem wordt alleen ondersteund met behulp van Azure Log Analytics. U moet Defender for IoT verbinden met een Log Analytics-werkruimte voordat u doorgaat.
Zie Microsoft Defender for IoT Agent-oplossing configureren voor meer informatie.
Ga als volgende te werk om query's uit te voeren op uw IoT-beveiligingsevenementen in Log Analytics:
Ga in uw Log Analytics-werkruimte naar Logs>AzureSecurityOfThings>SecurityAlert.
Voer in de queryeditor aan de rechterkant een KQL-query in om de waarschuwingen weer te geven die u wilt zien.
Selecteer Uitvoeren om de waarschuwingen weer te geven die overeenkomen met uw query.
Voorbeeld:
Notitie
Naast waarschuwingen kunt u ook dezelfde procedure gebruiken om query's uit te voeren op aanbevelingen of onbewerkte gebeurtenisgegevens.
Nuttige query's voor het onderzoeken van de basislijnresources van het besturingssysteem
Notitie
Zorg ervoor dat u vervangt door <device-id>
de naam(en) die u uw apparaat hebt gegeven in elk van de volgende query's.
De meest recente informatie ophalen
Apparaatparkfout: voer deze query uit om de meest recente informatie op te halen over controles die zijn mislukt voor het apparaatpark:
let lastDates = SecurityIoTRawEvent | where RawEventName == "Baseline" | summarize TimeStamp=max(TimeStamp) by DeviceId; lastDates | join kind=inner (SecurityIoTRawEvent) on TimeStamp, DeviceId | extend event = parse_json(EventDetails) | where event.BaselineCheckResult == "FAIL" | project DeviceId, event.BaselineCheckId, event.BaselineCheckDescription
Specifieke apparaatfout : voer deze query uit om de meest recente informatie op te halen over controles die zijn mislukt op een specifiek apparaat:
let id = SecurityIoTRawEvent | extend IoTRawEventId = extractjson("$.EventId", EventDetails, typeof(string)) | where TimeGenerated <= now() | where RawEventName == "Baseline" | where DeviceId == "<device-id>" | summarize arg_max(TimeGenerated, IoTRawEventId) | project IoTRawEventId; SecurityIoTRawEvent | extend IoTRawEventId = extractjson("$.EventId", EventDetails, typeof(string)), extraDetails = todynamic(EventDetails) | where IoTRawEventId == toscalar(id) | where extraDetails.BaselineCheckResult == "FAIL" | project DeviceId, CceId = extraDetails.BaselineCheckId, Description = extraDetails.BaselineCheckDescription
Specifieke apparaatfout : voer deze query uit om de meest recente informatie op te halen over controles met een fout op een specifiek apparaat:
let id = SecurityIoTRawEvent | extend IoTRawEventId = extractjson("$.EventId", EventDetails, typeof(string)) | where TimeGenerated <= now() | where RawEventName == "Baseline" | where DeviceId == "<device-id>" | summarize arg_max(TimeGenerated, IoTRawEventId) | project IoTRawEventId; SecurityIoTRawEvent | extend IoTRawEventId = extractjson("$.EventId", EventDetails, typeof(string)), extraDetails = todynamic(EventDetails) | where IoTRawEventId == toscalar(id) | where extraDetails.BaselineCheckResult == "ERROR" | project DeviceId, CceId = extraDetails.BaselineCheckId, Description = extraDetails.BaselineCheckDescription
Apparaatlijst bijwerken voor apparaten die een specifieke controle heeft mislukt: voer deze query uit om een bijgewerkte lijst met apparaten op te halen (in het hele apparaatpark) waarvoor een specifieke controle is mislukt:
let lastDates = SecurityIoTRawEvent | where RawEventName == "Baseline" | summarize TimeStamp=max(TimeStamp) by DeviceId; lastDates | join kind=inner (SecurityIoTRawEvent) on TimeStamp, DeviceId | extend event = parse_json(EventDetails) | where event.BaselineCheckResult == "FAIL" | where event.BaselineCheckId contains "6.2.8" | project DeviceId;