shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script-pt] Parser em log pflogfile


From: Marcelo Primo
Subject: Re: [shell-script-pt] Parser em log pflogfile
Date: Thu, 11 Mar 2021 14:53:07 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1

Salve Arkanon, tudo na paz?


Na verdade o trecho original do script tem essa referência ao protocolo icmp, mas nos arquivos de origem que analisei, não há qualquer referência à esse protocolo. Creio que quando o autor fez o script, das duas uma, ou existia alguma referência ao protocolo icmp ou ele tenha colocado esse grep a mais como uma forma de prevenção caso aparecesse qualquer coisa de icmp na lista.

Sobre as linhas que mandei, elas são a saída do arquivo sem qualquer alteração (exceto os IPs de destino). Uma amostra mais significativa seria as mesmas linhas enviadas, mas com portas e IPs de destino diferentes.

Obrigado pela disposição em ajudar.

Atenciosamente,
Marcelo

Em 11/03/2021 12:19, Arkanon escreveu:
Olá, Marcelo.

Você pode disponibilizar uma amostra mais significativa do arquivo? O comando original seleciona entradas com a string "pass in" e remove as com protocolo icmp e a amostra que você passou tem apenas exemplos positivos (com "pass in" e sem icmp).

Att,

Em qui., 11 de mar. de 2021 às 11:13, Marcelo Primo por (shell-script-pt) <shell-script-pt@nongnu.org> escreveu:
Salve, Blau!

Na minha primeira tentativa em melhorar o código fiz uns testes na saída
do comando com e sem o grep -v "icmp" e notei que não precisava, por
isso que nos meus comandos não tem esse trecho.

Atenciosamente,
Marcelo


Em 11/03/2021 10:52, Blau Araujo escreveu:
> Então...
>
> Nesse caso, eu acho mais interessante usar o zgrep na frente, passando
> a saída por pipe mesmo.
>
> Uma dúvida: e aquele outro filtro, o 'icmp'? Não precisa dele?
>
> Abraços!
>
> Blau Araujo
> -----------------------------
> https://debxp.org
> https://ask.debxp.org
> https://blauaraujo.com
>
> Em 11/03/2021 10:48, Marcelo Primo escreveu:
>> Salve Blau!
>>
>> Explicação claríssima, muito obrigado.
>>
>> Fiz uma alteração na sua sugestão e obtive um resultado similar ao
>> modelo (awk + cut), justamente trocando o gzip pelo zgrep (que, bem
>> observado por você, é onde está o gargalo).
>>
>> Vamos a linha:
>>
>> awk '{ split($12,out,"."); print substr(out[5], 1, length(out[5])-1)
>> }' <(zgrep "pass in" pflogtext.0.gz) | sort | uniq -c | sort -rn |
>> awk 'NR <= 20 {print $1";"$2}' = 2,6s
>>
>>
>> Obrigado pela ajuda.
>> Atenciosamente,
>>
>> Marcelo
>>
>> Em 11/03/2021 10:18, Blau Araujo escreveu:
>>> Salve, Marcelo!
>>>
>>>
>>> Como você não respondeu na lista (acontece... hehehe), aqui vai a
>>> explicação pra que todo mundo possa entender e opinar:
>>>
>>> Primeira parte...
>>>
>>> awk '$0~"pass in" && $0!~"icmp" { ... }' <(gzip -dc SEU_ARQUIVO)
>>>
>>> Aqui estou mandando para o AWK as linhas expandidas pelo gzip
>>> atarvés de uma substituição de processo, que resulta na abertura de
>>> um descritor de arquivos para leitura cujo "conteúdo" é a saída dos
>>> comandos entre os parêntesis:
>>>
>>> <(gzip -dc SEU_ARQUIVO)
>>>
>>> **Este deve ser o gargalo, e talvez o seu "gzcat/zcat |" antes do
>>> awk seja mais interessante.**
>>>
>>> Já a parte abaixo, é uma regra que manda o AWK processar apenas as
>>> linhas que contenham "pass in" e, ao mesmo tempo, não contenham "icmp":
>>>
>>> $0~"pass in" && $0!~"icmp" { ... }
>>>
>>> No programa (a parte entre chaves), eu uso a função 'split' pra
>>> dividir o campo $12 usando seus pontos como separador e atribuindo o
>>> resultado a um vetor de nome "out":
>>>
>>> split($12,out,".");
>>>
>>> Finalmente, eu uso a função 'substr' pra remover o ":" do final do
>>> quinto elemento do vetor obtido anteriormente, e é isso que eu mando
>>> pra saída com o 'print':
>>>
>>> print substr(out[5], 1, length(out[5])-1)
>>>
>>> O restante é o que vc faz pra agrupar e ordenar os resultados, só
>>> que, no final, eu tiro o 'head' e o 'sed' pra fazer todo o
>>> processamento final com o AWK novamente:
>>>
>>> awk 'NR <= 20 {print $1";"$2}'
>>>
>>> Aqui, 'NR <= 20' é uma regra que vai limitar a saída aos 20
>>> primeiros registros, enquanto que, no programa, eu imprimo '$1' e
>>> '$2' já concatenados com o caractere ';'...
>>>
>>>
>>>
>>> Abraços!
>>>
>>> Blau Araujo
>>> -----------------------------
>>> https://debxp.org
>>> https://ask.debxp.org
>>> https://blauaraujo.com
>>>
>>> Em 11/03/2021 09:35, Blau Araujo escreveu:
>>>> Salve!
>>>>
>>>> Eu fiquei curioso pra saber o tempo que isso levaria (ou se
>>>> funcionaria):
>>>>
>>>> ```
>>>>
>>>> awk '$0~"pass in" && $0!~"icmp" { split($12,out,"."); print
>>>> substr(out[5], 1, length(out[5])-1) }' <(gzip -dc SEU_ARQUIVO) |
>>>> sort | uniq -c | sort -rn | awk 'NR <= 20 {print $1";"$2}'
>>>>
>>>> ```
>>>>
>>>> Abraços!
>>>>
>>>> Blau Araujo
>>>> -----------------------------
>>>> https://debxp.org
>>>> https://ask.debxp.org
>>>> https://blauaraujo.com
>>>>
>>>> Em 10/03/2021 19:22, Marcelo Primo por (shell-script-pt) escreveu:
>>>>> Mar 09 00:00:03.146758 rule 12/(match) pass in on em0:
>>>>> 198.199.88.65.61953 > *192.168.1.143.9004**:* S
>>>>> 3776023135:3776023135(0) win 1024
>>>>> Mar 09 00:00:03.151840 rule 12/(match) pass in on em0:
>>>>> 198.199.88.65.61953 > *192.168.1.176.9004:* S
>>>>> 4103556202:4103556202(0) win 1024
>>>>> Mar 09 00:00:03.168233 rule 12/(match) pass in on em0:
>>>>> 203.212.200.241.58481 > *192.168.1.210.23:* S
>>>>> 1794254071:1794254071(0) win 5808 <mss 1452,sackOK,timestamp
>>>>> 63610891 0,nop,wscale 2> (DF)
>>>>> Mar 09 00:00:03.190210 rule 12/(match) pass in on em0:
>>>>> 178.175.97.53.46828 > *192.168.1.210.23:* S 700145820:700145820(0)
>>>>> win 5808 <mss 1452,sackOK,timestamp 159224881 0,nop,wscale 1> (DF)
>>>>> [tos 0x4]
>>>>> Mar 09 00:00:03.213339 rule 12/(match) pass in on em0:
>>>>> 131.159.24.205.51075 > *192.168.1.212.80:* S
>>>>> 2924909527:2924909527(0) win 65535 <sackOK,timestamp 4294967295
>>>>> 16843009,wscale
>>>>> 1,nop,opt-34:,opt-64:,opt-30:00810c0c0c0c0c0c0c0c,eol>
>>>>> Mar 09 00:00:03.263630 rule 12/(match) pass in on em0:
>>>>> 138.197.180.77.61953 > *192.168.1.194.10000:* S
>>>>> 3809871894:3809871894(0) win 1024
>>>>> Mar 09 00:00:03.394312 rule 12/(match) pass in on em0:
>>>>> 178.175.97.53.53172 > *192.168.1.210.23:* S
>>>>> 2983985618:2983985618(0) win 33941 [tos 0x4]
>>>>> Mar 09 00:00:03.500488 rule 12/(match) pass in on em0:
>>>>> 171.67.71.100.35957 > *192.168.1.249.8848:* S
>>>>> 1091778644:1091778644(0) win 65535
>>>>> Mar 09 00:00:03.637855 rule 12/(match) pass in on em0:
>>>>> 203.212.200.241.58457 > *192.168.1.210.23:* S
>>>>> 1746544785:1746544785(0) win 5808 <mss 1452,sackOK,timestamp
>>>>> 63610938 0,nop,wscale 2> (DF)
>>>>
>>>> _______________________________________________
>>>> Lista brasileira de usuários de shell script
>>>> Endereço de e-mail da lista: shell-script-pt@nongnu.org
>>>> Para se inscrever ou desinscrever acesse:
>>>> https://lists.nongnu.org/mailman/listinfo/shell-script-pt
>>>> Para ver os arquivos da lista (mensagens anteriores) e pesquisar
>>>> nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/
>>>>
>>>> NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por
>>>> favor utilize somente esta.
>>>
>>> _______________________________________________
>>> Lista brasileira de usuários de shell script
>>> Endereço de e-mail da lista: shell-script-pt@nongnu.org
>>> Para se inscrever ou desinscrever acesse:
>>> https://lists.nongnu.org/mailman/listinfo/shell-script-pt
>>> Para ver os arquivos da lista (mensagens anteriores) e pesquisar
>>> nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/
>>>
>>> NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor
>>> utilize somente esta.

_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.


--
(o_  @arkanon  (Twitter)     __o
//\   arkanon@lsd.org.br   _`\<,
V_/_      www.lsd.org.br  (_)/(_)
---------------------------------

reply via email to

[Prev in Thread] Current Thread [Next in Thread]