nginx黑名单和django限速,最简单的防恶意请求方法分享


Posted in Python onAugust 09, 2019

django项目遭遇cc攻击,不要惊慌,这里推荐两招简单实用的技巧。

项目Nginx作为http接入层,分发到django应用,启动10个uwsgi worker。

今日突然发现,网页打开卡顿,打开server一看,cpu100%。

nginx黑名单和django限速,最简单的防恶意请求方法分享

打开uwsgi的log,发现某一个IP进行了大量的请求,占用了worker。

这里总结下两种解决方法:

1.设置nginx黑名单

vi blockip.conf创建文件,输入:

deny x.x.x.x;

编辑nginx.conf, 在http{}内添加:

include blockip.conf;

验证配置:

[root@server nginx]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重启nginx:

nginx -s reload

2.django内添加middleware

RequestBlockingMiddleware.py

import time
from django.core.exceptions import PermissionDenied
 
from django.utils.deprecation import MiddlewareMixin
MAX_REQUEST_PER_SECOND=2 #每秒访问次数
class RequestBlockingMiddleware(MiddlewareMixin):
  def process_request(self,request):
     now=time.time()
     request_queue = request.session.get('request_queue',[])
     if len(request_queue) < MAX_REQUEST_PER_SECOND:
       request_queue.append(now)
       request.session['request_queue']=request_queue
     else:
       time0=request_queue[0]
     if (now-time0)<1:
       raise PermissionDenied('Forbidden user agent')
     request_queue.append(time.time())
     request.session['request_queue']=request_queue[1:]

setting.py中注册:

MIDDLEWARE = [
 'django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'common.middleware.RequestBlockingMiddleware', #在sessions之后,auth之前
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

不足100行代码,log里再也没有对方的IP出现,相信对方正在某个小黑屋的电脑前气得跺脚吧

以上这篇nginx黑名单和django限速,最简单的防恶意请求方法分享就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用paramiko模块实现ssh远程登陆上传文件并执行
Jan 27 Python
Python中使用gzip模块压缩文件的简单教程
Apr 08 Python
Python中的anydbm模版和shelve模版使用指南
Jul 09 Python
详解Python读取配置文件模块ConfigParser
May 11 Python
Python使用PyCrypto实现AES加密功能示例
May 22 Python
Python编程之变量赋值操作实例分析
Jul 24 Python
python如何爬取个性签名
Jun 19 Python
python hough变换检测直线的实现方法
Jul 12 Python
python的scipy实现插值的示例代码
Nov 12 Python
Python pygame绘制文字制作滚动文字过程解析
Dec 12 Python
jupyter notebook插入本地图片的实现
Apr 13 Python
Python入门之使用pandas分析excel数据
May 12 Python
python selenium爬取斗鱼所有直播房间信息过程详解
Aug 09 #Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
Aug 09 #Python
基于python二叉树的构造和打印例子
Aug 09 #Python
Python re 模块findall() 函数返回值展现方式解析
Aug 09 #Python
Django ORM 自定义 char 类型字段解析
Aug 09 #Python
解决使用export_graphviz可视化树报错的问题
Aug 09 #Python
Django中自定义admin Xadmin的实现代码
Aug 09 #Python
You might like
解析PHP高效率写法(详解原因)
2013/06/20 PHP
解析PHP中$_FILES的使用以及注意事项
2013/07/05 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
php通过header发送自定义数据方法
2018/01/18 PHP
javascript 二进制运算技巧解析
2012/11/27 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
BootStrap实用代码片段之一
2016/03/22 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
JavaScript函数柯里化详解
2016/04/29 Javascript
基于jquery实现三级下拉菜单
2016/05/10 Javascript
微信小程序仿RadioGroup改变样式的处理方案
2018/07/13 Javascript
基于jquery ajax的多文件上传进度条过程解析
2019/09/11 jQuery
基于vue-cli3创建libs库的实现方法
2019/12/04 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
详解python字节码
2018/02/07 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
python用BeautifulSoup库简单爬虫实例分析
2018/07/30 Python
使用tensorflow实现线性回归
2018/09/08 Python
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
Pytorch反向求导更新网络参数的方法
2019/08/17 Python
基于Django signals 信号作用及用法详解
2020/03/28 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
特步官方商城:Xtep
2017/03/21 全球购物
Emporio Armani腕表天猫官方旗舰店:乔治·阿玛尼为年轻人设计的副线品牌
2017/07/02 全球购物
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
PHP开发工程师面试问题集锦
2012/11/01 面试题
自我评价范文分享
2014/01/04 职场文书
计算机毕业生自荐信范文
2014/03/23 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers
PHP实现考试倒计时功能代码
2021/04/16 PHP