Apache的httpd服务器'是可能':在访问/错误日志中的特定情况的警报

我只是想知道是否有一些模块,可以检测访问/错误日志中的某些事件,如果它匹配,发送电子邮件的信息。

例如:我想要检测什么时候有人提出这样的请求:www.mysite.com/../../../etc/passwd或类似的。 我希望通过电子邮件通知它。

提前致谢。

这不是不可能的,但我不会推荐使用模块。

相反,使用类似apache-scalp的东西来连续parsing日志文件并生成警报邮件。

(如果你想用apache模块来做,你需要将这些请求redirect到一个由发送邮件的脚本组成的错误页面,查找redirect和位置指令,但这将是一个大的麻烦保持最新。)

通常这样的事情不需要。 在我的一个LAMP中,我configuration了fail2ban来检测大量的404 \ 503 \ etc并禁止用户ip访问httpd 10分钟。 我已经造成这个旧的硬件,以防止过多的服务器,同时请求很多。

下一个想法,你可以写一个parsing器的日志:)

创build一个名为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; 

根据需要修改$searchstr

configuration脚本通过cron运行每X分钟。 X的值越大,您将获得的电子邮件越less(对于与您提供的string匹配的所有错误,每X分钟只能发送一封电子邮件)。 cron作业的结果会自动通过电子邮件发送给您(如果cron安装正确)