Recomendação de investigar a linha de base do SO (com base na referência da CIS)
Realize investigações básicas e avançadas com base nas recomendações de linha de base do SO (sistema operacional).
Investigação básica da recomendação de segurança de linha de base do SO
Você pode investigar as recomendações de linha de base do SO navegando até o Defender para IoT no portal do Azure. Para obter mais informações, consulte como Investigar as recomendações de segurança.
Investigação avançada da recomendação de segurança de linha de base do SO
Esta seção descreve como entender melhor os resultados do teste de linha de base do SO e consultar eventos no Azure Log Analytics.
Pré-requisitos:
A investigação de recomendação de segurança de linha de base avançada do sistema operacional só tem suporte usando o Azure Log Analytics e você deve conectar o Defender for IoT a um espaço de trabalho do Log Analytics antes de continuar.
Para obter mais informações, consulte Configurar o Microsoft Defender para solução baseada em agente IoT.
Para consultar seus eventos de segurança de IoT no Log Analytics para alertas:
No seu espaço de trabalho do Log Analytics, vá para Logs>AzureSecurityOfThings>SecurityAlert.
No editor de consultas à direita, insira uma consulta KQL para exibir os alertas que você deseja ver.
Selecione Executar para exibir os alertas que correspondem à sua consulta.
Por exemplo:
Observação
Além dos alertas, você também pode usar esse mesmo procedimento para consultar recomendações ou dados brutos de eventos.
Consultas úteis para investigar os recursos de linha de base do SO
Observação
Certifique-se de substituir <device-id>
pelos nomes que você deu ao dispositivo em cada uma das consultas a seguir.
Recuperar as informações mais recentes
Falha de frota de dispositivo: execute essa consulta para recuperar as informações mais recentes sobre verificações que falharam na frota do dispositivo:
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
Falha de dispositivo específico – execute essa consulta para recuperar as informações mais recentes sobre verificações que falharam em um dispositivo específico:
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
Erro de dispositivo específico – execute esta consulta para recuperar as informações mais recentes sobre verificações que resultam em um erro em um dispositivo específico:
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
Atualizar a lista de dispositivos para a frota do dispositivo que falhou em uma verificação específica - execute esta consulta para recuperar a lista atualizada de dispositivos (em toda a frota do dispositivo) que falhou em uma verificação específica:
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;