Dela via


Undersöka operativsystemets baslinje (baserat på CIS benchmark) rekommendation

Utför grundläggande och avancerade undersökningar baserat på rekommendationer för operativsystemets baslinje.

Grundläggande säkerhetsrekommendationsundersökning för operativsystembaslinje

Du kan undersöka rekommendationer för operativsystemets baslinje genom att navigera till Defender för IoT i Azure-portalen. Mer information finns i Undersöka säkerhetsrekommendationer.

Avancerad säkerhetsrekommendationsundersökning för operativsystemets baslinje

Det här avsnittet beskriver hur du bättre förstår testresultatet för operativsystemets baslinje och frågar efter händelser i Azure Log Analytics.

Förutsättningar:

Den avancerade operativsystemets säkerhetsrekommendationsundersökning stöds endast med hjälp av Azure Log Analytics och du måste ansluta Defender för IoT till en Log Analytics-arbetsyta innan du fortsätter.

Mer information finns i Konfigurera microsoft Defender för IoT-agentbaserad lösning.

Så här frågar du dina IoT-säkerhetshändelser i Log Analytics efter aviseringar:

  1. Gå till Logs>AzureSecurityOfThings>SecurityAlert på din Log Analytics-arbetsyta.

  2. I frågeredigeraren till höger anger du en KQL-fråga för att visa de aviseringar som du vill se.

  3. Välj Kör för att visa aviseringarna som matchar din fråga.

Till exempel:

Skärmbild av Log Analytics-arbetsytan med en Defender for I o T-aviseringsfråga.

Kommentar

Förutom aviseringar kan du också använda samma procedur för att fråga efter rekommendationer eller rådata för händelser.

Användbara frågor för att undersöka os-baslinjeresurserna

Kommentar

Ersätt <device-id> med de namn som du gav enheten i var och en av följande frågor.

Hämta den senaste informationen

  • Fel i enhetsflottan: Kör den här frågan för att hämta den senaste informationen om kontroller som misslyckades i enhetsflottan:

    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
    
  • Specifikt enhetsfel – Kör den här frågan för att hämta den senaste informationen om kontroller som misslyckades på en specifik enhet:

    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
    
  • Specifikt enhetsfel – Kör den här frågan för att hämta den senaste informationen om kontroller som har ett fel på en specifik enhet:

    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
    
  • Uppdatera enhetslistan för enhetsflottan som misslyckades med en specifik kontroll – Kör den här frågan för att hämta en uppdaterad lista över enheter (i hela enhetsflottan) som misslyckades med en specifik kontroll:

    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;
    

Nästa steg

Undersök säkerhetsrekommendationer.