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 相关文章推荐
pyqt4教程之实现半透明的天气预报界面示例
Mar 02 Python
python实现文件快照加密保护的方法
Jun 30 Python
python实现查找两个字符串中相同字符并输出的方法
Jul 11 Python
深入解析Python设计模式编程中建造者模式的使用
Mar 02 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
Jun 13 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
Jul 12 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
Apr 02 Python
python 二维数组90度旋转的方法
Jan 28 Python
pytorch获取vgg16-feature层输出的例子
Aug 20 Python
python 子类调用父类的构造函数实例
Mar 12 Python
Django 实现对已存在的model进行更改
Mar 28 Python
python温度转换华氏温度实现代码
Dec 06 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
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
php 删除cookie和浏览器重定向
2009/03/16 PHP
PHP 使用memcached简单示例分享
2015/03/05 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
通过Email发送PHP错误的方法
2015/07/20 PHP
jQuery创建插件的代码分析
2011/04/14 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
基于canvas实现的绚丽圆圈效果完整实例
2016/01/26 Javascript
JS锚点的设置与使用方法
2016/09/05 Javascript
微信小程序通过保存图片分享到朋友圈功能
2018/05/24 Javascript
如何在Angular应用中创建包含组件方法示例
2019/03/23 Javascript
小程序云开发实现数据库异步操作同步化
2019/05/18 Javascript
解决在layer.open中使用时间控件laydate失败的问题
2019/09/11 Javascript
element实现合并单元格通用方法
2019/11/13 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
2019/11/17 Javascript
ant-design-vue中tree增删改的操作方法
2020/11/03 Javascript
使用Python的PEAK来适配协议的教程
2015/04/14 Python
详解Tensorflow数据读取有三种方式(next_batch)
2018/02/01 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
一文带你了解Python 四种常见基础爬虫方法介绍
2020/12/04 Python
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
美国购买和销售礼品卡平台:Raise
2017/01/13 全球购物
美国宠物用品网站:Value Pet Supplies
2018/03/17 全球购物
生产车间实习自我鉴定
2013/09/23 职场文书
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
股份转让协议书
2014/04/12 职场文书
学校运动会霸气口号
2014/06/07 职场文书
党员四风问题对照检查材料思想汇报
2014/09/16 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
掌握这项技巧,一年阅读300本书不是梦
2019/09/12 职场文书
MySQL 数据表操作
2022/05/04 MySQL