Badanie planu bazowego systemu operacyjnego (na podstawie testu porównawczego CIS)

Wykonaj podstawowe i zaawansowane badania na podstawie zaleceń dotyczących linii bazowej systemu operacyjnego.

Podstawowe badanie zaleceń dotyczących zabezpieczeń punktu odniesienia systemu operacyjnego

Możesz zbadać zalecenia dotyczące linii bazowej systemu operacyjnego, przechodząc do usługi Defender dla IoT w witrynie Azure Portal. Aby uzyskać więcej informacji, zobacz jak zbadać zalecenia dotyczące zabezpieczeń.

Zaawansowane badanie zaleceń dotyczących zabezpieczeń punktu odniesienia systemu operacyjnego

W tej sekcji opisano, jak lepiej zrozumieć wyniki testu punktu odniesienia systemu operacyjnego i wykonywać zapytania dotyczące zdarzeń w usłudze Azure Log Analytics.

Wymagania wstępne:

Zaawansowane badanie zaleceń dotyczących zabezpieczeń punktu odniesienia systemu operacyjnego jest obsługiwane tylko przy użyciu usługi Azure Log Analytics i przed kontynuowaniem należy połączyć usługę Defender dla IoT z obszarem roboczym usługi Log Analytics.

Aby uzyskać więcej informacji, zobacz Konfigurowanie rozwiązania opartego na agencie usługi Microsoft Defender dla IoT.

Aby wykonywać zapytania dotyczące zdarzeń zabezpieczeń IoT w usłudze Log Analytics pod kątem alertów:

  1. W obszarze roboczym usługi Log Analytics przejdź do pozycji Dzienniki>AzureSecurityOfThings>SecurityAlert.

  2. W edytorze zapytań po prawej stronie wprowadź zapytanie KQL, aby wyświetlić alerty, które chcesz zobaczyć.

  3. Wybierz pozycję Uruchom , aby wyświetlić alerty zgodne z zapytaniem.

Na przykład:

Zrzut ekranu przedstawiający obszar roboczy usługi Log Analytics z zapytaniem alertu usługi Defender for I o T.

Uwaga

Oprócz alertów można również użyć tej samej procedury do wykonywania zapytań dotyczących zaleceń lub nieprzetworzonych danych zdarzeń.

Przydatne zapytania do badania zasobów punktu odniesienia systemu operacyjnego

Uwaga

Pamiętaj, aby zastąpić <device-id> wartością nazw nadanych urządzeniu w każdym z poniższych zapytań.

Pobieranie najnowszych informacji

  • Niepowodzenie floty urządzeń: uruchom to zapytanie, aby pobrać najnowsze informacje o kontrolach, które zakończyły się niepowodzeniem w całej flocie urządzeń:

    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
    
  • Określony błąd urządzenia — uruchom to zapytanie, aby pobrać najnowsze informacje o sprawdzaniu, które zakończyły się niepowodzeniem na określonym urządzeniu:

    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
    
  • Określony błąd urządzenia — uruchom to zapytanie, aby pobrać najnowsze informacje o sprawdzaniu, które zawierają błąd na określonym urządzeniu:

    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
    
  • Aktualizowanie listy urządzeń dla floty urządzeń, które zakończyły się niepowodzeniem — uruchom to zapytanie, aby pobrać zaktualizowaną listę urządzeń (w całej floty urządzeń), które zakończyły się niepowodzeniem określonego sprawdzenia:

    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;
    

Następne kroki

Zbadaj zalecenia dotyczące zabezpieczeń.