Nginx 使用 sever 段规则屏蔽恶意 User Agent

相对于 Apache,Nginx 占用的系统资源更少,更适合 VPS 使用。恶意的 User Agent 无处不在,博客更换到 WordPress 没几天,就被 SPAM(垃圾留言)盯上,又被暴力破解后台用户名密码。以前介绍过 Apache 使用 .htaccess 屏蔽恶意 User Agent,今天来介绍 Nginx 屏蔽恶意 User Agent的方法。

先上规则&注释

#禁用未初始化变量警告
uninitialized_variable_warn off;
#匹配各种 bad user agent,返回403错误
if ($http_user_agent ~* "embeddedwb|NSPlayer|WMFSDK|qunarbot|mj12bot|ahrefsbot|Windows 98|MSIE 6.0; Windows 2000|EasouSpider|Sogou web spider") {
return 403;
}
#匹配POST方法,给变量iftemp赋值
if ($request_method ~* "POST") {set $iftemp X;}
#匹配 bad user agent,给变量iftemp赋值;这几个UA主要是发垃圾留言的
if ($http_user_agent ~* "MSIE 6.*NET|MSIE 7.*NET|MSIE 6.*SV1|MSIE 6.0; Windows NT 5.0") {
set $iftemp "${iftemp}Y";
}
#如果变量iftemp符合上面两个条件,返回403错误
if ($iftemp = XY) {return 403;}

禁用未初始化变量警告,不然会不停写入警告到错误日志error.log,如下

2014/09/11 09:21:11 [warn] 18649#0: *132 using uninitialized “iftemp” variable, client: 220.181.51.209, server: www.wilf.cn, request: “GET /wp-content/themes/dazzling/inc/fonts/glyphicons-halflings-regular.woff HTTP/1.0”, host: “www.wilf.cn”, referrer: “http://www.wilf.cn/”
2014/09/11 09:21:11 [warn] 18649#0: *92 using uninitialized “iftemp” variable, client: 66.249.79.55, server: www.wilf.cn, request: “GET /page/14?mod=pad&act=view&id=741 HTTP/1.1”, host: “www.wilf.cn”

Nginx 规则不支持2个以上的条件判断,绕个路,通过给变量两次赋值来完成2个条件判断。

Nginx 规则也是使用正则表达式匹配字符串,分析日志,根据需要自己定制。

检验成果的时候到了

183.60.214.51 — [10/Sep/2014:22:16:18 +0800] — Bytes: 13507 — GET /?mod=pad&act=view&id=460 HTTP/1.1 — 403 — – — Mozilla/5.0 (compatible; EasouSpider; +http://www.easou.com/search/spider.html) — – — –
220.181.125.169 — [11/Sep/2014:09:38:15 +0800] — Bytes: 169 — GET /page/51?mod=wap&act=AddCom&inpId=860 HTTP/1.1 — 403 — – — Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07) — – — –

EasouSpider 和 Sogou web spider,再也不见。

附:搜索引擎蜘蛛爬虫一览

更多 bad user agent:HackRepair.com Blacklist
时间: 2024-10-13 02:20:22

Nginx 使用 sever 段规则屏蔽恶意 User Agent的相关文章

如何配置nginx屏蔽恶意域名解析指向《包含隐藏nginx版本号》

恶意域名指向: 比如,有一个垃圾域名将解析指向到了你们服务器的IP,一般多一个解析可能不会有什么问题,但是现在全民备案时期,可能你的运营商会联系你,说你们的域名没备案,可能会封你们的80端口,然后会导致你们的网页访问不了.等之类的情况. nginx屏蔽此类恶意域名指向的步骤如下: 1. 找到nginx.conf文件,加上或者修改默认配置,比如如下配置.<第4行至第8行,添加一个server段> 1 # Default vhost 2 # 3 4 server { 5 listen 80 def

iptables自动屏蔽恶意高流量ip

问题描述: 最近公司的nginx代理服务器,半夜都流量很高,可能是恶意用户开挂刷新网站页面. 如前段时间新闻上所说的黄牛党开挂刷新火车票网站一样,刷得网站几乎近似瘫了.因为我们公司网站是彩票开奖系统,也怕这样子恶意被刷,亟待解决. 解决办法: 这台服务器就是个nginx代理服务器,因此可以借助nginx的日志查看 cat /opt/webapps/log_nginx/518.access.log|awk -F'?' '{print $1}'|awk '{print $1}'|sort -r| u

Nginx之location 匹配规则详解

Nginx之location 匹配规则详解 关于一些对location认识的误区 1. location 的匹配顺序是"先匹配正则,再匹配普通". 矫正: location 的匹配顺序其实是"先匹配普通,再匹配正则".我这么说,大家一定会反驳我,因为按"先匹配普通,再匹配正则"解释不了大家平时习惯的按"先匹配正则,再匹配普通"的实践经验.这里我只能暂时解释下,造成这种误解的原因是:正则匹配会覆盖普通匹配(实际的规则,比这复杂,

nginx 禁止恶意uesr agent访问

禁用一些User Agent可以节省一些流量也可以防止一些恶意的访问,尤其是部份搜索引擎爬虫,例如我们的网站就是一个地方性站点,没有必要被一些国外的搜索引擎爬虫索引,都可以禁掉,具体操作如下: 1.编辑该文件:# vi /usr/local/nginx/conf/vhosts/yourpool.conf2.增加以下内容(示例):#禁止Scrapy等工具的抓取,注意已经取消curl抓取if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {     r

实例讲解Nginx下的rewrite规则 来源:Linux社区

一.正则表达式匹配,其中:* ~ 为区分大小写匹配* ~* 为不区分大小写匹配* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配二.文件及目录匹配,其中:* -f和!-f用来判断是否存在文件* -d和!-d用来判断是否存在目录* -e和!-e用来判断是否存在文件或目录* -x和!-x用来判断文件是否可执行三.rewrite指令的最后一项参数为flag标记,flag标记有:1.last    相当于apache里面的[L]标记,表示rewrite.2.break本条规则匹配完成后,终止匹配

&#8203;nginx 进行外网地址屏蔽

nginx 进行外网地址屏蔽分为两种,只允许内网访问.一种是web服务器前端不加任何防护,比如360网站卫士,云盾等. if ($remote_addr !~ ^(182.118.136.58|111.126.173.137|127.0.0.1)) { rewrite ^.*$  /maintence.php last; } 另一种是使用360网站卫士,云盾等,配置如下 if ($http_x_forwarded_for !~ ^(182.118.136.58|111.126.173.137|1

Nginx——主配置段

nginx主配置段 帮助文档: http://nginx.org/en/docs/ngx_core_module.html 1.正常运行必备的配置 user:指定worker进程的运行身份,如组不指定,默认和用户名同名 pid /PATH/TO/PID_FILE:指定存储nginx主进程PID的文件路径 include file|mask:指明包含进来的其它配置文件片断 load_module file: 模块加载配置文件:/usr/share/nginx/modules/*.conf 指明要装

Nginx笔记之Rewrite规则

Nginx中Rewrite规则主要用于实现URL的重写.通过Rewrite规则,可以实现规范的URL.根据变量来做URL转向及选择配置. Rewrite规则相关命令 break if return rewrite set break命令 break的作用即完成当前规则集,后续不再处理rewrite命令. if ($slow) { limit_rate 10k; break; } if命令 if条件判断,判断一个条件是否符合,符合就执行代码段内的命令.Nginx内的if命令不支持嵌套,也不支持多一

阿里云ECS后台利用“安全组”屏蔽恶意攻击ip地址

来源:http://www.yujzw.com/cswzjs/pingbiipdizhi.html 在阿里云后台的云盾监控—>威胁—>攻击,会发现每天有大量的恶意攻击,存在大量GET请求,导致服务器资源浪费无用消耗. 最近7天攻击类型 仔细查看攻击来源的信息,发现99%以上的攻击ip地址,都存在历史攻击记录,如下图: 攻击者详情 我感觉阿里云完全有能力判断和屏蔽攻击者IP地址,保护客户的利益(ps:利用历史攻击次数判断是否屏蔽IP),但阿里云没有这么做.咨询了阿里云技术工作人员,可以通过安全组