建站一个月几乎每天都被攻击。。求解决思路

2014-12-23 21:42:53 +08:00
 Jack

建站一个月。。。几乎每天都在被攻击。。。而且道高一丈魔高一丈的。。。攻击方法不断升级。。。

我的架构是nginx php mysql,今天搭上了SSDB,依旧未管用

主要攻击是在搜索页,一开始是单一ip单一词汇刷而已
封了ip以后变成n个ip不停刷
于是我就把搜索使用的词封掉,于是变成n个8-10个词的组合不停的刷,就这也算有规律可循
但是到了今天变成了拿字典来刷,完全无规律组合词多ip不停搜索

一上来我就挂,即使我把搜过的纪录全放到了SSDB,但是还是一刷就挂,一堆新组合词语,mysql瞬间200%,nginx 503。

最后只能放上了验证码,机制是搜索10次填写一次验证码。。。至于这个办法是否管用现在还不知道。。。

有人建议用sphinx,我还没用,貌似文档不太友好,对我这个非技术人员比较头疼。。。

求专业技术大拿提供解决问题思路。。。

16469 次点击
所在节点    程序员
146 条回复
clino
2014-12-24 10:04:08 +08:00
我觉得还是写个脚本把所有有异常行为的ip所在的255网段用iptable的方式封掉这样比较快
攻击者的代理服务器也不会无穷无尽的吧
mjever
2014-12-24 10:06:59 +08:00
这得多大仇?
geew
2014-12-24 10:08:28 +08:00
@typcn 感觉你的博客的搜索体验很差啊
geew
2014-12-24 10:09:50 +08:00
搜索不是post请求么 限制每分钟每个ip的请求数量 超过的打入黑名单 参考v2ex
wy315700
2014-12-24 10:15:41 +08:00
想办法找到攻击者,
typcn
2014-12-24 10:17:36 +08:00
@geew 没有做优化,就几十行代码,当时还是用手机写的,现在没有动力改。。。
tabris17
2014-12-24 10:20:06 +08:00
首先攻击者也是有成本的,一是IP地址;二是CPU资源。抵御攻击无非就是用最少的成本尽可能地耗费攻击者的这两种资源。

方法楼上都写了,也就这么些
invite
2014-12-24 10:22:58 +08:00
@oott123 看了下,很不错。不过有个问题想不通:重放怎么解决。把已用的放内存?放数据库?那么CC又来了。
chenshaoju
2014-12-24 10:42:18 +08:00
http://anquanbao.com/

个人推荐用最简单的,单IP 1分钟只能搜索一次。
Jack
2014-12-24 10:51:11 +08:00
@chenshaoju 有没有国外的类似服务呢。。。未备案网站。。。国内这种服务一概无法使用
aa45942
2014-12-24 10:58:26 +08:00
谷歌出了个新验证机制: https://www.google.com/recaptcha/intro/index.html

轻量级的ddos工具:fail2ban DDoS-Deflate
wikimo
2014-12-24 11:08:17 +08:00
什么站这么牛逼,天天攻击,sphinx 替代品可以尝试xunsearch,文档啥的,你应该能懂,操作也简单,搜索速度也还可以。你放个静态页面在那里会不会挂掉,不会的话,可以考虑通过memcached, redis之类的工具,将频频攻击的ip加入到一个黑名单中去,直接不参与搜索,或者结合iptables和脚本去尝试解决,实在不行就先关站吧,流量攻击都不太好解决。个人意见。
clino
2014-12-24 11:08:32 +08:00
@chenshaoju 如果攻击者有成千上万个代理ip,那是可以做到1分钟内用不重复的ip来刷的

我有个新想法,给每个ip在后段生成一个token,搜索的提交用前端javascript来调用api来获取结果,调用api的时候必须使用这个和ip配合的token才能获取到结果,token是一次性的,用完马上就生成新的,前端javascript里的token是动态生成的嵌在html里的

当然攻击者也可以分析html里的javascript来获取到token,那么可以吧javascript里的token的生成千变万化,比如用不同的变量名,token可以用生成函数来获取,这样可以变化多端,用较少的改变就能增加很多攻击者的成本
frankzeng
2014-12-24 11:15:24 +08:00
你把攻击过的ip提出来,全部封掉,过段时间应该就清静了
aust1n
2014-12-24 11:23:37 +08:00
丢一个验证码 www.geetest.com
有用记得金币
wizardforcel
2014-12-24 11:37:53 +08:00
交保护费没门。趁不能访问去加速乐备个案,然后直接用它的cdn。
oott123
2014-12-24 11:39:09 +08:00
@invite 放内存咯。
一个 token 也就 5 分钟有效。
算出来的 token 才进内存嘛,这样对方也没办法算那么多来…
而且读一块内存里的哈希表比从数据库里关键字检索要快了不知道多少…
lolicon
2014-12-24 11:40:54 +08:00
@Jack www.cloudflare.com 当年香港xx,马来西亚xx的时候,都是这一家抗的
invite
2014-12-24 11:45:12 +08:00
@oott123 一个token用5分钟,那可以做的事情太多了。内存速度肯定不是问题,但容量是硬伤。
ksky
2014-12-24 11:45:23 +08:00
可以先把搜索交给Google。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/156129

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX