Skip to content

Conversation

@losingle
Copy link

因为最近我的服务器遭受到几百个IP规模的CC攻击
攻击特点是,多个链接轮训的加入了一个时间戳的参数,所以导致现有的denycc无效。

于是我针对我碰到的情况,加入了这个特性:

  1. 只要频繁的请求uriChecklist中的uri(只要以配置的uri开始),就遵循denycc的策略,将其视为是请求同一个链接。
    然后请求者的IP加入ipBlocklist,最后执行blockip()

blockip()应该是被遗漏了,不然我也不会在denycc()里面直接调用。
这样直接导致了没有开启denycc,IP黑名单功能也失效。所以这里应该是一个Bug.

denycc的改善想法
如果只有几个页面链接,没有JavaScript,样式,图片等资源文件的频繁请求,就可以当作是攻击者IP处理,这样对于web系统来说不会出现误判。
这个目前只是想法,有时间我去实践一下。

代码是临时学习Lua写的,所以质量可想象,甚至还有可能有严重的Bug。

@loveshell
Copy link
Owner

好同志啊,给我又提问题又提建议又提patch

1.首先还是非常感谢您测试发现的bug,给出的建议以及提供的patch。
2.blockip确实被遗漏了,已经加上。
340283a
3.针对你遇到的问题,是我的当时发布前的笔误,本意是过滤ngx.var.uri写了request_uri。过滤ngx.var.uri就没有您所说的那个问题了,代码已经patch,欢迎测试
8063e99
4.针对uri检查列表的问题,稍后加上
5.denycc那个想法不错,不过好像实现起来对性能的影响成本会有点大,考虑中

@losingle
Copy link
Author

客气了,这是我应该做的。希望waf的功能越来越强大。
因为对Lua和HttpLuaModule的不熟悉,所以代码有蛮多问题。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants