nginx限制IP恶意调用短信接口处理方法

真实案例:

查看nginx日志,发现别有用心的人恶意调用API接口刷短信:

?

思考了几种方案,最终考虑使用ip黑名单的方式:

处理方法:

一、nginx黑名单方式:

1、过滤日志访问API接口的IP,统计每10分钟调用超过100次的IP,直接丢进nginx的访问黑名单

2、具体步骤:

编写shell脚本:

?

可自己定义时间间隔和访问量,也可取消筛选访问量最高的30个,直接取值每10分钟访问接口超过100次的

其中:"grep -v 403" 是把已经禁止访问的IP给过滤掉,只筛选正常访问的

3、修改nginx.conf

在http模块加入:

include       denyip.conf;

重新加载nginx生效。

4、添加计划任务:

?

5、验证:

?

再查看已经禁用IP的访问日志,则会返回403错误:

?

二、限制IP请求数:

处理这种情况的方法还有一种是限制单 IP 单位时间的请求数,以及单 IP 的并发连接数

此方法没有实际运用,因为感觉这种方法会误杀正常的访问用户

写一下此方法的大概配置,http模块加入:

?

如何估算 limit_req_zone size:

一兆字节区域可以保持大约1万6064字节的状态。

那么 10M 就可以存储 16 万的 IP 统计信息, 这个对普通应用足够了,16 万每秒的 UV,已经超级厉害了。

如果 size 的大小如果设置小了, 例如设置成 1M,那么当一秒内的请求 IP 数超过 16000 的时候,超出的 IP 对应的用户看到的均为 503 Service Temporarily Unavailable 页面了。参考, 漏桶算法 Leaky Bucket。 同时,rate 的单位用 r/s 非常合适,如果换成按天,按小时计数,10M 的内存肯定不够用。

如何估算 limit_req_zone rate:

首先需要知道的是,普通浏览器的同时并发数量。按照 Dropbox 技术博客里所谈到的,目前主流浏览器限制 AJAX 对同一个子域名的并发连接数是6个。IE 6,IE 7 是两个。

大多数浏览器每个主机名都有6个并发连接的限制。

总结

以上所述是小编给大家介绍的nginx限制IP恶意调用短信接口处理方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!

原文链接:https://www.cnblogs.com/01-single/p/9140371.html



相关文章
推荐文章
热门文章

微信公众号推荐

相关推荐