Pular para conteúdo

Trabalhando com Logs do Nó de Filtro

Um nó de filtro armazena os seguintes arquivos de log no diretório /var/log/wallarm:

  • brute-detect.log: o log da recuperação dos contadores relacionados ao ataque de força bruta no cluster do nó de filtro.

  • export-attacks.log: o log da exportação dos dados dos ataques do módulo pós-analítico para a nuvem Wallarm.

  • export-environment.log: o log da coleta das versões do pacote Wallarm instalado e do upload desses dados para a nuvem Wallarm a serem exibidos nos detalhes do nó de filtragem no console Wallarm. Esses processos são executados uma vez por hora.

  • syncnode.log: o log da sincronização do nó de filtro com a nuvem Wallarm (isso inclui a busca dos arquivos LOM e proton.db da nuvem).

  • tarantool.log: o log das operações do módulo pós-analítico.

  • sync-ip-lists.log (nomeado como sync-blacklist.log nas versões anteriores do nó): o log da sincronização do nó de filtragem com os endereços IP adicionados às listas IP como objetos únicos ou sub-redes.

  • sync-ip-lists-source.log (nomeado como sync-mmdb.log nas versões anteriores do nó): o log da sincronização do nó de filtragem com os endereços IP registrados em países, regiões e data centers a partir das listas IP.

  • appstructure.log (somente nos contêineres Docker): o log da atividade do módulo Descoberta de API.

  • registernode_loop.log (somente nos contêineres Docker): o log da atividade do script de início que executa o script register-node enquanto ele é executado com sucesso.

  • weak-jwt-detect.log: o log da detecção da vulnerabilidade JWT.

Configurando o Log Extendido para o Nó de Filtro Baseado em NGINX

NGINX escreve logs das solicitações processadas (logs de acesso) em um arquivo de log separado, usando o formato de log combined predefinido por padrão.

log_format combined '$remote_addr - $remote_user [$time_local] '
                    '"$request" $request_id $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent" ';

Você pode definir e usar um formato de log personalizado incluindo uma ou várias variáveis do nó de filtro (além de outras variáveis do NGINX, se necessário). O arquivo de log NGINX permitirá diagnósticos de nó de filtro muito mais rápidos.

Variáveis do Nó de Filtro

Você pode usar as seguintes variáveis do nó de filtro ao definir o formato de log do NGINX:

Nome Tipo Valor
request_id String Identificador de solicitação
Tem a seguinte forma de valor: a79199bcea606040cc79f913325401fb
wallarm_request_cpu_time Flutuante Tempo em segundos que a CPU da máquina com o nó de filtragem passou processando a solicitação.
wallarm_request_mono_time Flutuante Tempo em segundos que a CPU passou processando a solicitação + tempo na fila. Por exemplo, se a solicitação estava na fila por 3 segundos e processada pela CPU por 1 segundo, então:
  • "wallarm_request_cpu_time":1
  • "wallarm_request_mono_time":4
wallarm_serialized_size Inteiro Tamanho da solicitação serializada em bytes
wallarm_is_input_valid Inteiro Validade da solicitação
0: solicitação é válida. A solicitação foi verificada pelo nó de filtro e corresponde às regras LOM.
1: solicitação é inválida. A solicitação foi verificada pelo nó de filtro e não corresponde às regras LOM.
wallarm_attack_type_list String Tipos de ataques detectados na solicitação com a biblioteca libproton. Os tipos são apresentados em formato de texto:
  • xss
  • sqli
  • rce
  • xxe
  • ptrav
  • crlf
  • redir
  • nosqli
  • infoleak
  • overlimit_res
  • data_bomb
  • vpatch
  • ldapi
  • scanner
  • mass_assignment
  • ssrf
  • ssi
  • mail_injection
  • ssti
  • invalid_xml
Se vários tipos de ataques forem detectados em uma solicitação, eles serão listados com o símbolo |. Por exemplo: se ataques XSS e SQLi forem detectados, o valor da variável é xss|sqli.
wallarm_attack_type Inteiro Tipos de ataques detectados na solicitação com a biblioteca libproton. Os tipos são apresentados em formato de string de bit:
  • 0x00000000: sem ataque: "0"
  • 0x00000002: xss: "2"
  • 0x00000004: sqli: "4"
  • 0x00000008: rce: "8"
  • 0x00000010: xxe: "16"
  • 0x00000020: ptrav: "32"
  • 0x00000040: crlf: "64"
  • 0x00000080: redir: "128"
  • 0x00000100: nosqli: "256"
  • 0x00000200: infoleak: "512"
  • 0x20000000: overlimit_res: "536870912"
  • 0x40000000: data_bomb: "1073741824"
  • 0x80000000: vpatch: "2147483648"
  • 0x00002000: ldapi: "8192"
  • 0x4000: scanner: "16384"
  • 0x20000: mass_assignment: "131072"
  • 0x80000: ssrf: "524288"
  • 0x02000000: ssi: "33554432"
  • 0x04000000: mail_injection: "67108864"
  • 0x08000000: ssti: "134217728"
  • 0x10000000: invalid_xml: "268435456"
Se vários tipos de ataques forem detectados em uma solicitação, os valores são resumidos. Por exemplo: se ataques XSS e SQLi forem detectados, o valor da variável é 6.

Exemplo de Configuração

Vamos supor que você precise especificar o formato de log estendido chamado wallarm_combined que inclui as seguintes variáveis:

  • todas as variáveis usadas no formato combined

  • todas as variáveis do nó de filtro

Para fazer isso, execute as seguintes ações:

  1. As linhas abaixo descrevem o formato de log desejado. Adicione-as ao bloco http do arquivo de configuração do NGINX.

    log_format wallarm_combined '$remote_addr - $remote_user [$time_local] '
                                '"$request" $request_id $status $body_bytes_sent '
                                '"$http_referer" "$http_user_agent" '
                                '$wallarm_request_cpu_time $wallarm_request_mono_time $wallarm_serialized_size $wallarm_is_input_valid $wallarm_attack_type $wallarm_attack_type_list';
    
  2. Ative o formato de log estendido adicionando a seguinte diretiva ao mesmo bloco como na primeira etapa:

    access_log /var/log/nginx/access.log wallarm_combined;

    Os logs de solicitações processadas serão escritos no formato wallarm_combined no arquivo /var/log/nginx/access.log.

    Logging Condicional

    Com a diretiva listada acima, todas as solicitações processadas serão registradas em um arquivo de log, inclusive aquelas que não estão relacionadas a um ataque.

    Você pode configurar o log condicional para gravar logs apenas para as solicitações que fazem parte de um ataque (o valor da variável wallarm_attack_type não é zero para essas solicitações). Para fazer isso, adicione uma condição à diretiva mencionada: access_log /var/log/nginx/access.log wallarm_combined if=$wallarm_attack_type;

    Isso pode ser útil se você quiser reduzir o tamanho de um arquivo de log, ou se você integrar um nó de filtro com uma das soluções SIEM.

  3. Reinicie o NGINX executando um dos seguintes comandos, dependendo do sistema operacional que você está usando:

    sudo systemctl restart nginx
    
    sudo service nginx restart
    
    sudo systemctl restart nginx
    
    sudo systemctl restart nginx
    
    sudo systemctl restart nginx
    

Informação detalhada

Para ver informações detalhadas sobre a configuração de logs no NGINX, prossiga para este link.