Servidor Apache httpd 'é possível': alerta sobre condição específica no log de acesso / erro

1

Só estou querendo saber se existe algum módulo que possa detectar determinado evento no log de acesso / erro e, se for compatível, enviar um email com informações.

exemplo: Eu quero detectar quando alguém faz pedidos como este: www.mysite.com/../../../etc/passwd ou similar. Quero ser informado por e-mail quando acontecer.

Obrigado antecipadamente.

    
por Daniel Stoinov 11.01.2013 / 10:03

3 respostas

2

Não é impossível, mas eu não recomendaria fazer isso com um módulo.

Em vez disso, use algo como apache-scalp para analisar continuamente o arquivo de log e gerar mensagens de alarme.

(Se você quiser fazer isso com um módulo do apache, precisará redirecionar essas solicitações para uma página de erro que consiste em um script que enviará o e-mail. Procure as diretivas Redirect e Location. ser um grande incômodo para mantê-lo atualizado.

    
por 11.01.2013 / 10:15
1

Normalmente, essas coisas não são necessárias. Em um dos meus LAMP, eu configurei fail2ban para detectar um monte de 404 \ 503 \ etc e banir o acesso httpd do ip do usuário por 10 minutos. Eu fiz isso causou hardware antigo para evitar sobrecarga do servidor devido a um grande número de solicitações simultâneas.

Próxima ideia, você poderia escrever um analisador para os logs :)

    
por 11.01.2013 / 10:16
0

Crie um script chamado log_monitor.sh :

#!/usr/bin/perl -w

use strict;

my $cachefile="/var/cache/lastpos-apache2-scan4maxclntOrSigKill";
my $logfile="/var/log/httpd/error_log";
my $searchstr="sigkill|reached maxclients|apply process slot|read data timeout|Premature end of script headers";

my $lastpos=0;
if (-f $cachefile) {
    open FH,"<".$cachefile;
    $lastpos=<FH>;
    close FH;
};

my $newpos=(stat $logfile)[7];

open FH,"<".$logfile;
seek FH,$lastpos,0;
while (<FH>) {
    print if m/$searchstr/i;
};
close FH;

open FH,">".$cachefile;
print FH $newpos;
close FH;

modifique $searchstr conforme necessário.

configure o script para rodar a cada X minutos via cron. quanto maior o valor de X, menos e-mails você receberá (apenas um e-mail a cada X minutos para todos os erros que correspondem às strings que você fornecer). os resultados do cron job serão enviados automaticamente para você (se o cron estiver configurado corretamente)

    
por 11.10.2013 / 21:32