Nginx过滤hash ddos攻击
这事可能都过气了,不过还是贴出我使用的方式吧,用的着的可以参考.
上段时间的各语言hash绝对印象深刻吧,做网站的几乎都在此类,不论你是用的是php,python还是ruby都不同程度受到影响, PHP尤其明显,因为PHP用的人也多嘛,攻击方式简直简单到不行,有兴趣的可以找我索取此测试脚本,一个终端随便搞挂一台有次漏洞的PHP站点.
我们http请求都是通过nginx反向代理,所以优势是可以在nginx这一层对请求做很多逻辑,此次防hash dos就是这个架构.
原理是过滤post请求中超过指定参数数量的请求, 我的是300,可自己调整,应该没有http开发者在使用post方法的时候有超过这个参数值的了,所以不会影响正常请求.
之前有哥们自己写ngx的C模块,使用的也是这个原理,不过NGX模块开发复杂度是有的,因为自己C也看不熟练,还是自己用lua写,方便快捷,简洁明了.
#配置依赖ngx-lua模块
好,废话不多说,贴上nginx的配置:
>>cat post-limit.lua
ngx.req.read_body()
local method = ngx.var.request_method
local max_count= 300 -post最大参数
if method == ‘POST’ then
local data = ngx.req.get_body_data()
if data then
local count = 0
local i = 0
while true do
if count > max_count then
-ngx.redirect(‘/post-error’)
ngx.exit(ngx.HTTP_BAD_REQUEST)
end
i = string.find(data, ‘&’, i+1)
if i == nil then break end
count = count + 1
end
end
end
>> cat nginx.conf
…..
server {
client_body_buffer_size 20m;
client_max_body_size 20m;
access_by_lua_file /opt/conf/nginx/lua/post_limit.lua;
}
…..
nginx其他配置已隐去.
nginx 1.0.XX结合后端PHP应用测试通过,配置也适用其他开发语言的http应用.
有时间可以慢慢升级你的后端应用PHP版本了,否则一系列的版本升级,也够呛.
完.
建议继续学习:
- HashMap解决hash冲突的方法 (阅读:11227)
- 关于memcache分布式一致性hash (阅读:10686)
- 一种抵御 DDoS 攻击的 IP 追踪技术 (阅读:6352)
- 防DDoS脚本 in python (阅读:6003)
- MinHash原理与应用 (阅读:5840)
- LVS hash size解决4096个并发的问题 (阅读:5418)
- 无锁HashMap的原理与实现 (阅读:5325)
- 如果用户在5分钟内重复上线,就给他发警告,问如何设计? (阅读:4863)
- Ubuntu 下Hash校验和不符问题的解决 (阅读:4468)
- 浅谈Ddos攻击攻击与防御 (阅读:3859)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:风的尾巴 来源: MySQLOPS 数据库与运维自动化技术分享
- 标签: ddos hash
- 发布时间:2012-04-07 14:51:50
- [68] 如何拿下简短的域名
- [68] Go Reflect 性能
- [64] Oracle MTS模式下 进程地址与会话信
- [61] 图书馆的世界纪录
- [60] 【社会化设计】自我(self)部分――欢迎区
- [60] IOS安全–浅谈关于IOS加固的几种方法
- [58] android 开发入门
- [53] 视觉调整-设计师 vs. 逻辑
- [48] 读书笔记-壹百度:百度十年千倍的29条法则
- [47] 界面设计速成