Investigar a linha de base da OS (com base na recomendação de referência CIS)
Execute investigações básicas e avançadas com base nas recomendações de linha de base do sistema operacional.
Investigação básica de recomendações de segurança de linha de base do SO
Você pode investigar as recomendações de linha de base do sistema operacional navegando até o Defender for IoT no portal do Azure. Para obter mais informações, consulte como investigar recomendações de segurança.
Investigação avançada de recomendações de segurança de linha de base do SO
Esta seção descreve como entender melhor a linha de base do sistema operacional, os resultados do teste e os eventos de consulta no Azure Log Analytics.
Pré-requisitos:
A investigação avançada de recomendação de segurança de linha de base do SO só é suportada utilizando o Azure Log Analytics e tem de ligar o Defender for IoT a uma área de trabalho do Log Analytics antes de continuar.
Para obter mais informações, consulte Configurar o Microsoft Defender para solução baseada em agente de IoT.
Para consultar seus eventos de segurança de IoT no Log Analytics em busca de alertas:
No 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:
Nota
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
Nota
Certifique-se de substituir <device-id>
pelo(s) nome(s) que você deu ao seu dispositivo em cada uma das consultas a seguir.
Recuperar as informações mais recentes
Falha na frota de dispositivos: execute esta consulta para recuperar as informações mais recentes sobre verificações que falharam em toda a frota de dispositivos:
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 esta 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 têm 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 lista de dispositivos para frota de dispositivos que falharam em uma verificação específica - Execute esta consulta para recuperar a lista atualizada de dispositivos (em toda a frota de dispositivos) que falharam 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;
Próximos passos
Investigue as recomendações de segurança.