İşletim sistemi temeli (CIS karşılaştırması temelinde) önerisini araştırma

İşletim sistemi temel önerilerine göre temel ve gelişmiş araştırmalar gerçekleştirin.

Temel işletim sistemi temel güvenlik önerisi araştırması

Azure portalında IoT için Defender'a giderek işletim sistemi temel önerilerini araştırabilirsiniz. Daha fazla bilgi için bkz. Güvenlik önerilerini araştırma.

Gelişmiş işletim sistemi temel güvenlik önerisi araştırması

Bu bölümde, işletim sistemi temel test sonuçlarının nasıl daha iyi anlaşıldığı ve Azure Log Analytics'teki olayların nasıl sorgulandığı açıklanmaktadır.

Ön koşullar:

Gelişmiş işletim sistemi temel güvenlik önerisi araştırması yalnızca Azure Log Analytics kullanılarak desteklenir ve devam etmeden önce IoT için Defender'ı bir Log Analytics çalışma alanına bağlamanız gerekir.

Daha fazla bilgi için bkz . IoT aracı tabanlı çözüm için Microsoft Defender'ı yapılandırma.

Uyarılar için Log Analytics'te IoT güvenlik olaylarınızı sorgulamak için:

  1. Log Analytics çalışma alanınızda Günlükler>AzureSecurityOfThings>SecurityAlert'e gidin.

  2. Sağdaki sorgu düzenleyicisinde, görmek istediğiniz uyarıları görüntülemek için bir KQL sorgusu girin.

  3. Sorgunuzla eşleşen uyarıları görüntülemek için Çalıştır'ı seçin.

Örneğin:

I o t için Defender uyarı sorgusu içeren Log Analytics çalışma alanının ekran görüntüsü.

Not

Uyarılara ek olarak, önerileri veya ham olay verilerini sorgulamak için de aynı yordamı kullanabilirsiniz.

İşletim sistemi temel kaynaklarını araştırmak için yararlı sorgular

Not

öğesini aşağıdaki sorguların her birinde cihazınıza girdiğiniz adlarla değiştirdiğinizden <device-id> emin olun.

En son bilgileri alma

  • Cihaz filosu hatası: Cihaz filosunda başarısız olan denetimler hakkında en son bilgileri almak için bu sorguyu çalıştırın:

    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
    
  • Belirli bir cihaz hatası - Belirli bir cihazda başarısız olan denetimler hakkında en son bilgileri almak için bu sorguyu çalıştırın:

    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
    
  • Belirli bir cihaz hatası - Belirli bir cihazda hata içeren denetimler hakkında en son bilgileri almak için bu sorguyu çalıştırın:

    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
    
  • Belirli bir denetimi başarısız olan cihaz filosu için cihaz listesini güncelleştirme - Belirli bir denetimin başarısız olduğu cihazların güncelleştirilmiş listesini (cihaz filosu genelinde) almak için bu sorguyu çalıştırın:

    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;
    

Sonraki adımlar

Güvenlik önerilerini araştırma.