Graylog: os campos da regra Pipeline não aparecem nos dados de pesquisa

1

Estou testando o Graylog para logs do sistema e alertas do Snort. Eu segui o exemplo aqui para Pegue meus alertas de emergência no Graylog e, em seguida, comecei a adicionar outro fluxo, pipeline e regra para uma fonte de log separada do IDS. Eu basicamente copiei o exemplo do Snort e mudei o Regex para extrair os campos pertinentes da nova fonte de log. O novo Regex faz o teste OK quando eu seleciono uma mensagem na guia de pesquisa e, em seguida, selecione "Testar contra stream". As mensagens também são exibidas no meu novo stream quando selecionadas no item de menu Streams na parte superior do Graylog.

O problema é que, na regra do Pipeline, uso a função set_field() para atribuir o valor do grupo correspondente da regex. Eu tenho nove campos na Regra usando set_field() , mas nenhum deles está aparecendo nos dados da pesquisa. Por que é isso? Preciso usar add_field() primeiro como nos exemplos de GELF? Eu estava assumindo set_field() automaticamente fez isso, pois é assim que funciona o exemplo do snort no link acima. Anexou minha regra do Pipeline abaixo, que está anexada ao meu fluxo de IDrops no Graylog.

rule "Extract IDropS fields"
when
  has_field("message")
then
  let m = regex("^([a-z]+)\s.*(TCP|UDP|ICMP)\s([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}):(\d{1,5})\s([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}):(\d{1,5}).*SnortSid.*:([0-9]+):([0-9]+)\s(.*)$", to_string($message.message));

  set_field("snort_alert", false);

  set_field("sd_host", m["0"]);
  set_field("sd_proto", m["1"]);
  set_field("sd_src", m["2"]);
  set_field("sd_sport", m["3"]);

  set_field("sd_dst", m["4"]);
  set_field("sd_dport", m["5"]);
  set_field("sd_sid", (m["6"]));
  set_field("sd_rev", m["7"]);

  set_field("sd_desc", m["8"]);
end
    
por Server Fault 27.12.2016 / 16:41

2 respostas

1

O problema pode ser que você precise alterar a ordem Message Processors Configuration na tela Configurations .

Por padrão, é GeoIP Processor > Pipeline Processor > Message Filter Chain .

Conforme documentado em documentos oficiais do Greylog sobre o uso de pipelines em "Configurar a mensagem processador ", você precisa mudar isso para Message Filter Chain > Pipeline Processor > GeoIP Processor .

Eu esqueci de fazer isso em um recém-instalado 2.2 Graylog depois de ter funcionado por algumas semanas em 2.1. Os sintomas eram os mesmos que os seus, as regras do fluxo do snort e as regras do pipeline correspondidas, simulações trabalhadas, mas nenhum campo foi definido e nenhum sinal de erro, ainda que curiosamente funcionaria se eu conectasse o pipeline ao fluxo padrão "Todas as mensagens", que eu não quero. Agora eu mudei esta ordem do processador de mensagens o pipeline snort funciona como esperado.

    
por 16.02.2017 / 15:35
0

Não tenho certeza se é a maneira certa de fazer isso, mas adicionei todas as regras do Pipeline ao fluxo Padrão ( Sistema / Pipelines > Pipelines > Default Stream > ; Edite conexões .. e adicione seu pipeline personalizado) e todos os meus campos começaram a aparecer nos dados da pesquisa.

    
por 04.02.2017 / 22:31

Tags