Agregar dados do Microsoft Sentinel com regras de resumo (visualização)
Use regras de resumo no Microsoft Sentinel para agregar grandes conjuntos de dados em segundo plano para uma experiência de operações de segurança mais suave em todas as camadas de log. Os dados de resumo são pré-compilados em tabelas de log personalizadas e fornecem desempenho de consulta rápido, incluindo consultas executadas em dados derivados de camadas de log de baixo custo. As regras de resumo podem ajudar a otimizar seus dados para:
- Análise e relatórios, especialmente em grandes conjuntos de dados e intervalos de tempo, conforme necessário para análise de segurança e incidentes, relatórios de negócios mês a mês ou anuais e assim por diante.
- Economia de custos em logs detalhados, que você pode reter por tão pouco ou quanto tempo precisar em uma camada de log mais barata, e enviar como dados resumidos apenas para uma tabela do Google Analytics para análise e relatórios.
- Segurança e privacidade de dados, removendo ou ofuscando detalhes de privacidade em dados compartilháveis resumidos e limitando o acesso a tabelas com dados brutos.
Acesse os resultados da regra de resumo por meio da Kusto Query Language (KQL) em atividades de deteção, investigação, caça e relatórios. Use resultados de regras de resumo por períodos mais longos em investigações históricas, caça e atividades de conformidade.
Os resultados da regra de resumo são armazenados em tabelas separadas no plano de dados do Google Analytics e cobrados de acordo. Para obter mais informações sobre planos de dados e custos de armazenamento, consulte Selecionar um plano de tabela com base em padrões de uso em um espaço de trabalho do Log Analytics
Importante
As regras sumárias estão atualmente em pré-visualização. Consulte os Termos de Utilização Suplementares das Pré-visualizações do Microsoft Azure para obter os termos legais adicionais que se aplicam às funcionalidades do Azure que estão em versão beta, pré-visualização ou ainda não disponibilizadas para disponibilidade geral.
O Microsoft Sentinel agora está disponível em geral na plataforma de operações de segurança unificada da Microsoft no portal Microsoft Defender. Para obter mais informações, consulte Microsoft Sentinel no portal do Microsoft Defender.
Pré-requisitos
Para criar regras de resumo no Microsoft Sentinel:
O Microsoft Sentinel deve estar habilitado em pelo menos um espaço de trabalho e consumir logs ativamente.
Você deve ser capaz de acessar o Microsoft Sentinel com permissões de Colaborador do Microsoft Sentinel. Para obter mais informações, consulte Funções e permissões no Microsoft Sentinel.
Para criar regras de resumo no portal do Microsoft Defender, você deve primeiro integrar seu espaço de trabalho à plataforma unificada de operações de segurança. Para obter mais informações, consulte Conectar o Microsoft Sentinel ao Microsoft Defender XDR.
Recomendamos que você experimente a consulta de regra de resumo na página Logs antes de criar a regra. Verifique se a consulta não atinge ou se aproxima do limite de consulta e verifique se a consulta produz o esquema pretendido e os resultados esperados. Se a consulta estiver próxima dos limites de consulta, considere usar um menor binSize
para processar menos dados por compartimento. Você também pode modificar a consulta para retornar menos registros ou remover campos com maior volume.
Criar uma regra de resumo
Crie uma nova regra de resumo para agregar um grande conjunto específico de dados em uma tabela dinâmica. Configure a frequência da regra para determinar com que frequência o conjunto de dados agregados é atualizado a partir dos dados brutos.
No portal do Azure, no menu de navegação do Microsoft Sentinel, em Configuração, selecione Regras de resumo (Pré-visualização). No portal do Defender, selecione Regras de resumo de configuração > do Microsoft Sentinel > (Visualização). Por exemplo:
Selecione + Criar e insira os seguintes detalhes:
Nome. Insira um nome significativo para sua regra.
Descrição. Insira uma descrição opcional.
Tabela de destino. Defina a tabela de log personalizada onde seus dados são agregados:
Se você selecionar Tabela de log personalizada existente, selecione a tabela que deseja usar.
Se você selecionar Nova tabela de log personalizada, insira um nome significativo para a tabela. O nome completo da tabela usa a seguinte sintaxe:
<tableName>_CL
.
Recomendamos que você habilite as configurações de diagnóstico do SummaryLogs em seu espaço de trabalho para obter visibilidade para runas e falhas históricas. Se as configurações de diagnóstico SummaryLogs não estiverem habilitadas, você será solicitado a habilitá-las na área Configurações de diagnóstico .
Se as configurações de diagnóstico SummaryLogs já estiverem habilitadas, mas você quiser modificá-las, selecione Configurar configurações avançadas de diagnóstico. Quando voltar à página do assistente Regra de resumo, selecione Atualizar para atualizar os detalhes da configuração.
Importante
As configurações de diagnóstico SummaryLogs têm custos adicionais. Para obter mais informações, consulte Configurações de diagnóstico no Azure Monitor.
Selecione Avançar: Definir lógica > de resumo para continuar.
Na página Definir lógica de resumo, insira sua consulta de resumo. Por exemplo, para extrair conteúdo do Google Cloud Platform, talvez você queira inserir:
GCPAuditLogs | where ServiceName == 'pubsub.googleapis.com' | summarize count() by Severity
Para obter mais informações, consulte Cenários de regra de resumo de exemplo e KQL (Kusto Query Language) no Azure Monitor.
Selecione Visualizar resultados para mostrar um exemplo dos dados que você coletaria com a consulta configurada.
Na área Agendamento de consultas, defina os seguintes detalhes:
- Com que frequência pretende que a regra seja executada
- Se você quer que a regra seja executada com qualquer tipo de atraso, em minutos
- Quando você deseja que a regra comece a ser executada
Os horários definidos no agendamento são baseados na
timegenerated
coluna em seus dadosSelecione Seguinte: Rever + criar >>Guardar para concluir a regra de resumo.
As regras de resumo existentes são listadas na página Regras de resumo (Pré-visualização), onde pode rever o estado da regra. Para cada regra, selecione o menu de opções no final da linha para executar qualquer uma das seguintes ações:
- Exiba os dados atuais da regra na página Logs , como se fosse executar a consulta imediatamente
- Exibir o histórico de execução da regra selecionada
- Desative ou habilite a regra.
- Editar a configuração da regra
Para eliminar uma regra, selecione a linha da regra e, em seguida, selecione Eliminar na barra de ferramentas na parte superior da página.
Nota
O Azure Monitor também dá suporte à criação de regras de resumo por meio da API ou de um modelo do Azure Resource Monitor (ARM). Para obter mais informações, consulte Criar ou atualizar uma regra de resumo.
Exemplos de cenários de regras de resumo
Esta seção analisa cenários comuns para a criação de regras de resumo no Microsoft Sentinel e nossas recomendações sobre como configurar cada regra. Para obter mais informações e exemplos, consulte Usar regras de resumo com logs auxiliares (processo de exemplo) e Fontes de log a serem usadas para ingestão de logs auxiliares.
Encontre rapidamente um endereço IP malicioso no seu tráfego de rede
Cenário: Você é um caçador de ameaças e um dos objetivos da sua equipe é identificar todas as instâncias de quando um endereço IP mal-intencionado interagiu nos logs de tráfego de rede de um incidente ativo, nos últimos 90 dias.
Desafio: Atualmente, o Microsoft Sentinel ingere vários terabytes de logs de rede por dia. Você precisa passar por eles rapidamente para encontrar correspondências para o endereço IP malicioso.
Solução: recomendamos o uso de regras de resumo para fazer o seguinte:
Crie um conjunto de dados resumido para cada endereço IP relacionado ao incidente, incluindo o
SourceIP
,DestinationIP
,MaliciousIP
,RemoteIP
, , cada listando atributos importantes, comoIPType
,FirstTimeSeen
eLastTimeSeen
.O conjunto de dados de resumo permite pesquisar rapidamente um endereço IP específico e reduzir o intervalo de tempo onde o endereço IP é encontrado. Você pode fazer isso mesmo quando os eventos pesquisados aconteceram há mais de 90 dias, o que está além do período de retenção do espaço de trabalho.
Neste exemplo, configure o resumo para ser executado diariamente, para que a consulta adicione novos registros de resumo todos os dias até expirar.
Crie uma regra de análise que seja executada por menos de dois minutos no conjunto de dados de resumo, detalhando rapidamente o intervalo de tempo específico em que o endereço IP mal-intencionado interagiu com a rede da empresa.
Certifique-se de configurar intervalos de execução de até cinco minutos, no mínimo, para acomodar diferentes tamanhos de carga útil resumida. Isso garante que não haja perdas, mesmo quando há um atraso na ingestão de eventos.
Por exemplo:
let csl_columnmatch=(column_name: string) { CommonSecurityLog | where isnotempty(column_name) | extend Date = format_datetime(TimeGenerated, "yyyy-MM-dd"), IPaddress = column_ifexists(column_name, ""), FieldName = column_name | extend IPType = iff(ipv4_is_private(IPaddress) == true, "Private", "Public") | where isnotempty(IPaddress) | project Date, TimeGenerated, IPaddress, FieldName, IPType, DeviceVendor | summarize count(), FirstTimeSeen = min(TimeGenerated), LastTimeSeen = min(TimeGenerated) by Date, IPaddress, FieldName, IPType, DeviceVendor }; union csl_columnmatch("SourceIP") , csl_columnmatch("DestinationIP") , csl_columnmatch("MaliciousIP") , csl_columnmatch("RemoteIP") // Further summarization can be done per IPaddress to remove duplicates per day on larger timeframe for the first run | summarize make_set(FieldName), make_set(DeviceVendor) by IPType, IPaddress
Execute uma pesquisa subsequente ou correlação com outros dados para completar a história do ataque.
Gerar alertas sobre correspondências de inteligência de ameaças com dados de rede
Gere alertas sobre correspondências de inteligência contra ameaças contra dados de rede barulhentos, de alto volume e de baixo valor de segurança.
Cenário: Você precisa criar uma regra de análise para que os logs de firewall correspondam aos nomes de domínio no sistema que foram visitados em relação a uma lista de nomes de domínio de inteligência de ameaças.
A maioria das fontes de dados são logs brutos que são barulhentos e têm alto volume, mas têm menor valor de segurança, incluindo endereços IP, tráfego do Firewall do Azure, tráfego Fortigate e assim por diante. Há um volume total de cerca de 1 TB por dia.
Desafio: Criar regras separadas requer vários aplicativos lógicos, exigindo despesas gerais e custos extras de configuração e manutenção.
Solução: recomendamos o uso de regras de resumo para fazer o seguinte:
Resuma os logs do firewall da McAfee a cada 10 minutos, atualizando os dados na mesma tabela personalizada a cada execução. As funções ASIM podem ser úteis na consulta de resumo ao interagir com os logs da McAfee.
Crie uma regra de análise para disparar um alerta sempre que um nome de domínio nos dados resumidos corresponder a uma entrada na lista de informações sobre ameaças. Por exemplo:
//let timeRange = 5m; //let httpstrim = "https://"; //let httptrim = "http://"; let timeRangeStart = now (-10m); let timeRangeEnd = (timeRangeStart + 10m); //Take visited domains from McAfee proxy adx('https://adxfwlog01.northeurope.kusto.windows.net/nwlogs').MappedMcAfeeSyslog | where timestamp between (timeRangeStart .. timeRangeEnd) | where isnotempty(URL) | extend URLDomain = parse_url(URL).Host | extend URLDomain = iff(isempty(URLDomain),URL,URLDomain) | extend URLDomain = extract(@"([0-9a-zA-Z-]{1,}\.[0-9a-zA-Z-]{2,3}\.[0-9a-zA-Z-]{2,3}|[0-9a-zA-Z-]{1,}\.[0-9a-zA-Z-]{2,10})$", 0, URLDomain) | where isnotempty(URLDomain) | summarize by URLDomain //Match visited domains with TI DomainName list | join kind=inner (ThreatIntelligenceIndicator | where isnotempty(DomainName) | where Active == true | where ExpirationDateTime > now() | summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by DomainName ) on $left.URLDomain == $right.DomainName | extend LogicApp = "SOC-McAfee-ADX-DstDomainAgainstThreatIntelligence" | project LatestIndicatorTime, TI_Domain = DomainName, Description, ConfidenceScore, AdditionalInformation, LogicApp
Usar regras de resumo com logs auxiliares (processo de exemplo)
Este procedimento descreve um processo de exemplo para usar regras de resumo com logs auxiliares, usando uma conexão personalizada criada por meio de um modelo ARM para ingerir dados CEF do Logstash.
Configure seu conector CEF personalizado do Logstash:
Implante o seguinte modelo ARM em seu espaço de trabalho do Microsoft Sentinel para criar uma tabela personalizada com regras de coleta de dados (DCR) e um ponto de extremidade de coleta de dados (DCE):
Observe os seguintes detalhes da saída do modelo ARM:
tenant_id
data_collection_endpoint
dcr_immutable_id
dcr_stream_name
Crie um aplicativo Microsoft Entra e anote a ID do Cliente e o Segredo do aplicativo. Para obter mais informações, consulte Tutorial: Enviar dados para o Azure Monitor Logs com API de ingestão de logs (portal do Azure).
Use nosso script de exemplo para atualizar seu arquivo de configuração do Logstash. As atualizações configuram o Logstash para enviar logs CEF para a tabela personalizada criada pelo modelo ARM, transformando dados JSON para o formato DCR. Neste script, certifique-se de substituir os valores de espaço reservado por seus próprios valores para a tabela personalizada e o aplicativo Microsoft Entra que você criou anteriormente.
Verifique se os dados do CEF estão fluindo do Logstash conforme o esperado. Por exemplo, no Microsoft Sentinel, vá para a página Logs e execute a seguinte consulta:
CefAux_CL | take 10
Crie regras de resumo que agreguem os dados do MIE. Por exemplo:
Dados de incidente de pesquisa de preocupação (IoC): procure IoCs específicos executando consultas de resumo agregadas para trazer ocorrências exclusivas e, em seguida, consulte apenas essas ocorrências para obter resultados mais rápidos. O exemplo a seguir mostra um exemplo de como trazer um feed exclusivo
Source Ip
junto com outros metadados, que podem ser usados em pesquisas de IoC:// Daily Network traffic trend Per Destination IP along with Data transfer stats // Frequency - Daily - Maintain 30 day or 60 Day History. Custom_CommonSecurityLog | extend Day = format_datetime(TimeGenerated, "yyyy-MM-dd") | summarize Count= count(), DistinctSourceIps = dcount(SourceIP), NoofByesTransferred = sum(SentBytes), NoofBytesReceived = sum(ReceivedBytes) by Day,DestinationIp, DeviceVendor
Consulte uma linha de base resumida para detetar anomalias. Em vez de executar suas consultas em grandes períodos históricos, como 30 ou 60 dias, recomendamos que você ingira dados em logs personalizados e, em seguida, consulte apenas dados de linha de base resumidos, como para deteções de anomalias de séries temporais. Por exemplo:
// Time series data for Firewall traffic logs let starttime = 14d; let endtime = 1d; let timeframe = 1h; let TimeSeriesData = Custom_CommonSecurityLog | where TimeGenerated between (startofday(ago(starttime))..startofday(ago(endtime))) | where isnotempty(DestinationIP) and isnotempty(SourceIP) | where ipv4_is_private(DestinationIP) == false | project TimeGenerated, SentBytes, DeviceVendor | make-series TotalBytesSent=sum(SentBytes) on TimeGenerated from startofday(ago(starttime)) to startofday(ago(endtime)) step timeframe by DeviceVendor