Muitos e-mails enviados ao enviar e-mails quando um URL específico foi visitado em Logs do Apache

0

Nesta pergunta , foi encontrada uma solução para enviar automaticamente um email cada vez que um URL específico é visitado (como ?src=foo ), como visto nos logs do Apache:

tail -F -n0 /var/log/apache2/other_vhosts_access.log | grep --line-buffered "?src=foo" | \
        { while IFS= read -r line; do echo "$line" | mail [email protected]; done } &

Mas o problema é que qualquer outro recurso que esteja sendo carregado nessa página (imagens, favicon, etc.) também tem esse padrão ?src=foo na coluna referrer :

www.example.fr:80 111.111.111.111 - - [12/Sep/2017:17:30:32 +0200] "GET /images/P26372.jpg 
  HTTP/1.1" 200 86276 "http://example.fr/?src=foo" "Mozilla/5.0"

Então, estou recebendo 15 e-mails seguidos com esse método.

Como limitar a "digestão" disso?

Eu pensei em limitar a pesquisa para o padrão dentro de "GET ... HTTP" , de modo que isso excluiria um resultado na coluna referida, mas como fazer isso?

Ou, como alternativa, seria possível enviar apenas um e-mail duas vezes por dia com todos os resultados de grep ? (nenhum email enviado é nada é encontrado)

    
por Basj 15.09.2017 / 16:02

1 resposta

0

Existem scanners de log que oferecem limites de taxa no ruído que eles geram; Eu usaria sec.pl e, em seguida, configuração ao longo das linhas de

type=SingleWithThreshold
ptype=SubStr
pattern=?src=foo
desc=specific-url-thing
action=pipe 'that url thing happened' /usr/bin/mail -s url-thing [email protected]
window=86400
thresh=1

Para uma instância do daemon observando o log em questão. Isso deve ser acionado imediatamente e depois ficar calado por um dia; existem outras opções para agregar os hits e assim por diante, consulte o manual para detalhes.

    
por 15.09.2017 / 16:45