A página Log Analysis no Security Center permite criar consultas personalizadas e análises estatísticas dos seus logs de segurança. Use a sintaxe de consulta descrita neste tópico para filtrar logs por palavra-chave ou campo, agregar resultados com SQL e analisar padrões de logon por horário ou endereço IP.
Como funciona
Uma instrução de consulta de log tem duas partes, separadas por uma barra vertical (|):
<search syntax> | <analytics syntax>
Ambas as partes são opcionais:
|
Parte |
Função |
Limitações |
|
Search |
Filtra logs por palavra-chave, valor de campo ou intervalo numérico |
Não agrega nem calcula estatísticas |
|
Analytics |
Agrega e calcula estatísticas sobre os resultados filtrados ou todos os dados no intervalo de tempo |
Não filtra por palavra-chave de texto completo isoladamente |
Se a parte de busca for
*ou estiver vazia, nenhum filtro será aplicado. Todos os logs no intervalo de tempo selecionado passarão para a parte de análise.Caso a parte de análise esteja vazia, o sistema retornará as entradas de log correspondentes sem alterações e sem calcular estatísticas.
Para abrir o editor de consultas, acesse Risk Governance > Log Analysis no painel de navegação à esquerda do console do Security Center e insira sua instrução em Search & Analyze.
Sintaxe de busca
A parte de busca aceita consultas de texto completo e pesquisas específicas por campo. O editor de consultas permite entrada multilinha e destaque de sintaxe.
Consulta de texto completo
Pesquise em todos os campos de log sem especificar um nome de campo. Separe várias palavras-chave com um espaço ou and. Coloque frases que contenham espaços entre aspas duplas (").
|
Consulta |
Resultado retornado |
|
|
Logs contendo ambos os termos |
|
|
Equivalente ao exemplo anterior |
|
|
Logs contendo |
|
|
Logs contendo |
A correspondência com curinga aceita apenas asteriscos no final (failed_*). O uso de asterisco no início (*failed) não é suportado.
Para obter a referência completa da sintaxe de busca, consulte Visão geral da busca de logs.
Busca específica por campo
Filtre por um campo específico usando Field: Value ou comparações numéricas como Field >= Value. Combine múltiplas condições de campo com and ou or, ou misture-as com termos de texto completo.
Cada entrada de log inclui um campo __topic__ que identifica o tipo de log. Use __topic__ para direcionar a consulta a uma origem de log específica e adicione filtros de campo para esse tipo de log.
Exemplos
Localize logs de alerta com nível de severidade grave:
__topic__ : sas-security-log and level: serious
Encontre eventos de logon SSH provenientes de um endereço IP específico:
__topic__:aegis-log-login and ip:1.2.XX.XX and warn_type:SSHLOGIN
Identifique consultas DNS internas com tempo de resposta superior a 1 segundo:
__topic__:local-dns and time_usecond > 1000000
Busque consultas DNS internas com tempo de resposta entre 1 e 10 segundos:
__topic__:local-dns and time_usecond in [1000000,10000000]
Sintaxe de análise
A parte de análise utiliza instruções SQL-92. A cláusula from log — equivalente a from <table name> no SQL padrão — pode ser omitida.
Por padrão, as consultas retornam as primeiras 100 entradas de log. Use a cláusula LIMIT para alterar esse comportamento. Para mais detalhes, consulte Cláusula LIMIT.
Para ver a lista completa de funções SQL suportadas, acesse Visão geral da análise de logs.
Consultas baseadas em tempo
Toda entrada de log possui um campo interno __time__ que armazena o carimbo de data/hora do log como um timestamp UNIX (segundos decorridos desde 1º de janeiro de 1970, 00:00:00 UTC). Converta esse campo antes de exibi-lo nos resultados da consulta.
Recuperar os eventos de logon mais recentes de um IP específico
Retorne os 10 eventos de logon mais recentes do IP 1.2.XX.XX, com um carimbo de data/hora legível:
__topic__: aegis-log-login and ip: 1.2.XX.XX
| select date_format(__time__, '%Y-%m-%d %H:%i:%s') as time, warn_ip, warn_type
order by __time__ desc
limit 10
Calcular quantos dias se passaram desde cada logon
Adicione uma coluna days_passed que mostre a idade de cada evento de logon em dias:
__topic__: aegis-log-login and ip: 1.2.XX.XX
| select date_format(__time__, '%Y-%m-%d %H:%i:%s') as time, warn_ip, warn_type ,
round((to_unixtime(now()) - __time__)/86400,1) as "days_passed"
order by __time__ desc
limit 10
A expressão round((to_unixtime(now()) - __time__)/86400, 1) funciona da seguinte maneira:
to_unixtime(now())converte a hora atual para um timestamp UNIX.Subtraia
__time__para obter os segundos decorridos.Divida por 86400 (quantidade de segundos em um dia).
round(..., 1)arredonda o resultado para uma casa decimal.
Contar eventos diários de logon para um dispositivo
Agrupe os eventos de logon por dia e conte quantos ocorreram em cada dia:
__topic__: aegis-log-login and ip: 1.2.XX.XX
| select date_trunc('day', __time__) as dt,
count(1) as PV
group by dt
order by dt
A função date_trunc('day', __time__) alinha cada timestamp ao início do respectivo dia. Substitua 'day' por 'second', 'minute', 'hour', 'week', 'month' ou 'year' para agrupar por uma unidade de tempo diferente.
Contar eventos de logon a cada 5 minutos
Agrupe eventos em intervalos de 5 minutos em todos os dispositivos:
__topic__: aegis-log-login
| select from_unixtime(__time__ - __time__% 300) as dt,
count(1) as PV
group by dt
order by dt
limit 1000
A operação __time__ - __time__ % 300 arredonda cada timestamp para baixo até o limite de 5 minutos mais próximo (300 segundos). Já limit 1000 recupera os primeiros 1.000 intervalos, cobrindo aproximadamente 83 horas de dados.
Para conhecer outras funções de tempo, como date_parse e date_format, consulte Funções de data e hora.
Consultas baseadas em endereço IP
O campo warn_ip nas entradas de log de logon armazena o endereço IP de origem. Use funções de geolocalização de IP para analisar a origem dos logons.
Identificar países de origem dos logons em um servidor específico
__topic__: aegis-log-login and uuid: 12344567
| SELECT ip_to_country(warn_ip) as country,
count(1) as "Number of logons"
group by country
A função ip_to_country(warn_ip) retorna o país correspondente ao endereço IP de origem.
Detalhar logons por província ou estado
__topic__: aegis-log-login and uuid: 12344567
| SELECT ip_to_province(warn_ip) as province,
count(1) as "Number of logons"
group by province
A função ip_to_province(warn_ip) retorna a província para endereços IP chineses. Para IPs fora da China, ela tenta retornar a província ou estado equivalente, mas o resultado não pode ser plotado em um mapa da China.
Mapear a distribuição geográfica dos logons
__topic__: aegis-log-login and uuid: 12344567
| SELECT ip_to_geo(warn_ip) as geo,
count(1) as "Number of logons"
group by geo
limit 10000
A função ip_to_geo(warn_ip) retorna a latitude e a longitude do endereço IP de origem. O parâmetro limit 10000 recupera até 10.000 entradas para plotagem geográfica.
Para obter funções adicionais de IP — incluindo ip_to_provider (consulta de ISP) e ip_to_domain (detecção de IP público versus privado) — consulte Funções de IP.