建站一个月。。。几乎每天都在被攻击。。。而且道高一丈魔高一丈的。。。攻击方法不断升级。。。
我的架构是nginx php mysql,今天搭上了SSDB,依旧未管用
主要攻击是在搜索页,一开始是单一ip单一词汇刷而已
封了ip以后变成n个ip不停刷
于是我就把搜索使用的词封掉,于是变成n个8-10个词的组合不停的刷,就这也算有规律可循
但是到了今天变成了拿字典来刷,完全无规律组合词多ip不停搜索
一上来我就挂,即使我把搜过的纪录全放到了SSDB,但是还是一刷就挂,一堆新组合词语,mysql瞬间200%,nginx 503。
最后只能放上了验证码,机制是搜索10次填写一次验证码。。。至于这个办法是否管用现在还不知道。。。
有人建议用sphinx,我还没用,貌似文档不太友好,对我这个非技术人员比较头疼。。。
求专业技术大拿提供解决问题思路。。。
101
hicdn 2014-12-24 11:50:58 +08:00
@Jack 来用加速乐 www.jiasule.com,我们的防 CC 引擎会自动识别并拦截,如果有漏网之鱼,开启 Cookie 防 CC 和验证码防 CC,完美解决
|
102
oott123 2014-12-24 11:53:18 +08:00 via Android
@invite 你没有理解我的意思。
每个 token 5分钟过期的意思是每个 token 在内存里保存五分钟。 也就是说如果你要填满我的内存,你在五分钟内算出来的 token 个数应当比我的内存还大。 以一个 32 位 16 进制数为例,内存仅有 4 字节。假设每分钟计算100个token(已经很多了),五分钟才1m不到… 也许我算错了? |
103
keefe 2014-12-24 11:54:08 +08:00
是subhd.com吧? 前天搜索字幕的时候还不需要输入验证码。
伪射手也在被攻击 加油哦! |
104
bobopu 2014-12-24 11:54:24 +08:00 via iPhone
找sitelock
|
105
invite 2014-12-24 11:56:30 +08:00
@oott123 如果保存5分钟,也就是5分钟以后,我能重新使用这个token了,对吧?那只要我计算足够多的token,来填满这5分钟就可以了,然后重复使用。
|
106
oott123 2014-12-24 12:12:48 +08:00 via Android
@invite 五分钟以后你就没法用了啊…
算 token 的时候把时间戳插进去不就完事了… 服务端给出一个 base string = hash ( secret key + timestamp ),再给出前面用的 timestamp 要求客户端请求时发送 challenge = hash ( base string + random ) 和前面用的 timestamp 以及 random 要求 challenge 的前 n 位为 0 |
109
lolicon 2014-12-24 12:29:48 +08:00 1
@Jack 收费版有香港节点 测速http://chdbits.org
|
114
oott123 2014-12-24 12:48:21 +08:00 via Android
@invite 不用存啊,只校验合法性…
比如你要对 IP 限定,你把 IP 也加到 base string 的 hash 里面去就是了… 服务器收到的时候,检查时间戳是否合法;如果合法,把收到的时间戳,IP和secret拼起来一看,和你传回来的 base string 一样不?不一样就丢了。 |
115
oott123 2014-12-24 12:49:29 +08:00 via Android
顺便提醒楼主,用 CDN 的话要屏蔽一切不来自 CDN 的访问,否则就没用了。
|
116
invite 2014-12-24 12:58:34 +08:00
@oott123 不存储?
那假设一开始对方根据 base string 和 timestamp 计算了一个 : challenge = hash ( base string + random ) ,发送了一次: challenge 和 timestamp 和 random 那服务器怎么比较的? |
117
oott123 2014-12-24 13:00:20 +08:00 via Android
@invite 你看啊,secret key 是固定的对吧,也就是对于唯一确定的 timestamp 有唯一确定的 base string 值对吧,那我还原出来不就好了…
|
118
invite 2014-12-24 13:11:31 +08:00
@oott123 那客户端多次发送同样的 challenge 和 timestamp 和 random,那服务器比较结果也是对的。肯定得存储一个值,来确保没有重复使用吧。
|
120
hicdn 2014-12-24 14:13:24 +08:00
@Jack 没有备案只能用香港节点,http://www.jiasule.com/activity/kdjq/
|
122
bf68 2014-12-24 14:35:43 +08:00
楼主解决了吗?
|
125
nilai 2014-12-24 14:41:00 +08:00
@Jack 网站真的有漏洞哦。 在漏洞地方可插入DOS代码哦。
数据库名:08 表名: articles articles_r bbs_reply bbs_topic category ding_count down funfact group_a group_user jr_list jr_name list list_r notice pic_gallery pic_pictures pic_relationships poster reply subject subject_actor subject_ep subject_rating subject_type subject_type_r t_talk t_tr user user_add user_feed user_follow user_show video video_list 管理员用户名: [email protected] 管理员密码: sain**ng |
127
bf68 2014-12-24 14:53:07 +08:00
大哥他们为什么攻击你了
|
128
Siglud 2014-12-24 14:56:52 +08:00
限制同一IP单位时间内搜索的次数是最简单粗暴的方法,超过次数一概404即可
|
129
mengskysama 2014-12-24 15:04:37 +08:00
对同一IP限制搜索次数,现在各大BBS应该都是这样做的
|
133
simapple 2014-12-24 17:13:13 +08:00
攻击你也是有代价的,看来是个事
|
134
bjzhush 2014-12-24 17:17:59 +08:00
用js验证,比如用js执行计算,然后返回server端验证,否则就ban
或者加一些第三方的验证码,slide unlock的那种 验证码并不是万能的,尤其是你没做后续的判断,手动识别一次验证码后续就可以一直保持会话来攻击了,保持会话很简单,设定cookie里面session的值就行了 |
135
Jack OP 8590
黑客攻击总数 1782 WEB黑客攻击数 6808 CC攻击 51 发现黑客攻击IP 加速乐开了半小时。。。。 |
137
MonkLuf 2014-12-24 19:35:34 +08:00
没有完全的防护方法,一般就是通过:
1. 限制单IP访问频率,过多访问封禁IP,过段时间再解封IP: http://blog.csdn.net/zengbin3013/article/details/9313979 2. 如果IP基数太大那也没办法,在ningx中限制整体请求数和连接数吧:limit_req, limit_conn 3. 在应用程序里边也可以在访问频率过高的时候需要验证码才能过。 |
138
Roboo 2014-12-24 22:55:13 +08:00
subhd吧
希望能挺住呀 |
139
zhicheng 2014-12-24 23:03:29 +08:00
页面上放个 Flash ?
|
140
xiaoz 2014-12-25 00:06:31 +08:00 via Android
要不试试服务器安全狗?
|
142
Jack OP @diguoemo 我这里速度正常。。。dns换成了jiasule.com的香港结点。。。
不过用了360的CDN,貌似不是很快 |
143
diguoemo 2014-12-25 20:56:55 +08:00
@Jack 知道了 现在你开了个首页重置还是什么的 打开首页先是白屏然后才会进去网站
手机打开不了我以为坏了 电脑chrome能开 |
144
jimrok 2014-12-25 22:45:27 +08:00
用redis限制ip的访问量,超过就block这个ip。redis的io性能很好。
|
145
Jack OP @diguoemo 不是。。。那是在从360的CDN读东西。。。。360的CDN特别不稳定。。。我已经停用了,你现在应该没有那个问题了
|
146
ourbbs 2014-12-27 02:08:12 +08:00
访问subhd.com提示:
12 111: Connection refused |