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中的Numeric包和Numarray包使用教程
Apr 13 Python
python高手之路python处理excel文件(方法汇总)
Jan 07 Python
详谈Python2.6和Python3.0中对除法操作的异同
Apr 28 Python
python实现八大排序算法(2)
Sep 14 Python
python scatter散点图用循环分类法加图例
Mar 19 Python
浅谈pyqt5在QMainWindow中布局的问题
Jun 21 Python
Django对数据库进行添加与更新的例子
Jul 12 Python
Python绘制股票移动均线的实例
Aug 24 Python
python模拟预测一下新型冠状病毒肺炎的数据
Feb 01 Python
Flask模板引擎Jinja2使用实例
Apr 23 Python
Python使用requests模块爬取百度翻译
Aug 25 Python
Python3压缩和解压缩实现代码
Mar 01 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
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
showModelessDialog()使用详解
2006/09/07 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
深入理解Javascript闭包 新手版
2010/12/28 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
2014/06/20 Javascript
JavaScript中遍历对象的property的3种方法介绍
2014/12/30 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
Js制作点击输入框时默认文字消失的效果
2015/09/05 Javascript
async/await地狱该如何避免详解
2018/05/10 Javascript
微信小程序如何刷新当前界面的实现方法
2019/06/07 Javascript
Javascript异步流程控制之串行执行详解
2020/09/27 Javascript
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
[56:48]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
Python使用Flask框架获取当前查询参数的方法
2015/03/21 Python
python中Genarator函数用法分析
2015/04/08 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
2018/05/24 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
Python学习笔记之While循环用法分析
2019/08/14 Python
keras得到每层的系数方式
2020/06/15 Python
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
乌克兰时尚鞋子和衣服购物网站:Born2be
2018/05/24 全球购物
阿巴庭院:Abba Patio
2019/06/18 全球购物
实习鉴定范文
2013/12/19 职场文书
学生干部培训方案
2014/06/12 职场文书
大学生标准自荐书
2014/06/15 职场文书
艺术学院毕业生求职信
2014/07/09 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
群众路线领导班子四风对照检查材料
2014/09/27 职场文书
2016年社区中秋节活动总结
2016/04/05 职场文书
python process模块的使用简介
2021/05/14 Python
tomcat正常启动但网页却无法访问的几种解决方法
2022/05/06 Servers