在nginx的配置文件的 server
或 location
元素中添加以下内容,实现通过nginx防护可疑攻击,发现可疑攻击时返回400状态码,同时会记录到访问日志access.log。
配置前请先备份配置文件。
#request_uri不区分大小写匹配不安全的关键字则返回400,关键字按需增删
if ($request_uri ~* '\.jsp$|\.php$|\.coffee$|\.rb$|\.ru$|\.inc$|\.tpl$|\.class$|\.dll$|\.cfg$|\.tmp$|\.cur$|\.zdat$|\.Big5$|\.rt$|\.swf$|\.exe$|\.sh$|\.ini$|\.mov$|\.\.') {
return 400;
}
#以下4个if判断都是校验referer,需要当作一个整体来理解。设置临时变量referer_allowss,当referer_allowss 为400即为可疑
set $referer_allowss '';
#referer不区分大小写模糊匹配google、baidu、bxss等,则设置referer_allowss 400
if ($http_referer ~* 'google|baidu|bxss') {
set $referer_allowss '400';
}
#当referer为空时不算可疑,设置referer_allowss 为空
if ($http_referer = '' ) {
set $referer_allowss '';
}
#referer_allowss为400时,当前请求可疑,返回400状态码
if ($referer_allowss = '400' ) {
return 400;
}
注意:如果以上配置放在serve里面,则需要放在所有所有location前面,实现对所有location相关的请求进行校验。
配置完需要重启nginx使其生效