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简单调用MySQL存储过程并获得返回值的方法
Jul 20 Python
使用python装饰器计算函数运行时间的实例
Apr 21 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
May 15 Python
PyQt5实现类似别踩白块游戏
Jan 24 Python
Python批量生成特定尺寸图片及图画任意文字的实例
Jan 30 Python
python pycharm的安装及其使用
Oct 11 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
Dec 23 Python
pytorch实现从本地加载 .pth 格式模型
Feb 14 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
Jan 08 Python
Python tkinter之ComboBox(下拉框)的使用简介
Feb 05 Python
总结Python使用过程中的bug
Jun 18 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
虫族 ZERG 概述
2020/03/14 星际争霸
用php实现批量查询清除一句话后门的代码
2008/01/20 PHP
PHP字符串的连接的简单实例
2013/12/30 PHP
php函数实现判断是否移动端访问
2015/03/03 PHP
PHP会员找回密码功能的简单实现
2016/09/05 PHP
php intval函数用法总结
2019/04/14 PHP
用jscript实现新建word文档
2007/06/15 Javascript
拖拉表格的JS函数
2008/11/20 Javascript
javascript 类定义的4种方法
2009/09/12 Javascript
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
jQuery EasyUI API 中文文档 - Spinner微调器使用
2011/10/21 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
easyui messager alert 三秒后自动关闭提示的实例
2016/11/07 Javascript
详解nodeJS中读写文件方法的区别
2017/03/06 NodeJs
使用vue.js编写蓝色拼图小游戏
2017/03/17 Javascript
利用Node.js批量抓取高清妹子图片实例教程
2018/08/02 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
2019/11/25 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
python调用cmd复制文件代码分享
2013/12/27 Python
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
浅谈Python中range和xrange的区别
2017/12/20 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
HTML5 audio标签使用js进行播放控制实例
2015/04/24 HTML / CSS
印度最大的旅游网站:MakeMyTrip
2016/10/05 全球购物
加热夹克:RAVEAN
2018/10/19 全球购物
Python里面search()和match()的区别
2016/09/21 面试题
肯尼迪就职演说稿
2013/12/31 职场文书
招标授权委托书样本
2014/09/23 职场文书
考试作弊检讨书
2014/10/21 职场文书
加薪申请报告范本
2015/05/15 职场文书
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏