再聊防网站攻击

2015-01-02 21:18:35 +08:00
 Jack

折腾一番装了fail2ban和redis后,被攻击情况有所好转,fail2ban封掉一批访问频繁的ip,redis缓存时间段内的搜索词减少mysql压力,同ip一分钟内搜索次数也做了限制,但是还是无法完全解决。

昨儿晚上封掉1000多个IP,因为IP数量多,即使不短时间内密集访问也一样能有海量请求,搜索词不断变化,redis缓存和限制搜索频率也基本起不了太大作用,这种IP量加速乐也完全无效形同虚设,所以还得靠自己。

所以现在即使不是完全瘫掉,也会经常打不开页面,求问还有什么解决思路可以有效根治?

4278 次点击
所在节点    程序员
20 条回复
tigerstudent
2015-01-02 22:04:53 +08:00
怎么会IP封不完?
ryd994
2015-01-02 22:07:56 +08:00
cdn形同虚设谁说的?
cdn有没有用不是取决于客户数量,而是取决于动态内容的数量。(当然用户的分布也会有少许,但是应该不大)
根治就该注册啊
ytf4425
2015-01-02 22:19:37 +08:00
卧槽那人IP这么多!
遇见大流量攻击就找CloudFlare
typcn
2015-01-02 22:28:32 +08:00
表示上 ccav 那天被十万IP攻击,我默默喝着 coffee 看着数字上涨,网站依然秒开。
CDN 只是起一个辅助作用,帮你过滤掉一些频率高的访问。
程序优化 和 服务器的配置才是最关键的部分,上次就跟你说了搜索加一些限制或者加一些验证。
不想改代码就加钱上高配。
Jack
2015-01-02 22:36:40 +08:00
@typcn 加了1分钟搜5次,不是很有效果
typcn
2015-01-02 22:40:05 +08:00
@Jack

tcpdump 看发过来的包是否有明显 HTTP 代理特征,如果是就屏蔽此 header
注册之后才能搜索
搜索需要输入验证码
搜索需要浏览器运行复杂JS代码
binux
2015-01-02 22:41:17 +08:00
@typcn "当天晚上百度加速上面我的网站连缓存都不能刷了,设置都进不去,全部都是参数错误" 强行秒卡。
typcn
2015-01-02 22:43:59 +08:00
@Jack 99.9% 的 bot 都不可能运行 JS,也没有人那么闲去写支持 JS 的攻击器,加一些需要 js 运算的东西,使用 obfuscator 保证不被轻易破解,比如根据 forum 内容生成 以及打开时间 进行 aes 加密 + base64 ,算出 表单 secret , 服务器保证这个 secret 正确的情况下载进行搜索。当然让客户端计算 hash 也可以。
typcn
2015-01-02 22:44:24 +08:00
@binux 白天超大访问量一直正常的,,晚上不知道被谁搞了
typcn
2015-01-02 22:46:30 +08:00
@binux 不能刷缓存是百度一台服务器的问题,不能说秒开但是网站起码还是可以正常访问的。
ricorico
2015-01-02 22:48:31 +08:00
@binux 秒卡是什么意思喵...
binux
2015-01-02 22:50:08 +08:00
@ricorico 写错了不行吗!
LU35
2015-01-02 23:00:38 +08:00
试过服务器安全狗吗?
iannil
2015-01-02 23:21:53 +08:00
@Jack 同typcn所说,你可以参考下58同城登录所用的前端逻辑,每次提交表单都用js+时间戳计算出一个60s内有效的key。如果能做到那种复杂度,攻击难度会提高N个难度。

其实所有使用软件方式做网站攻防都是个动态的过程,除了加大服务器性能和带宽到N高以外,没有什么绝对根治的办法,你需要针对攻击方式不断更改防御的方式,直到把攻击方的攻击成本加到他们无法承受的程度才可以。
leeyiw
2015-01-02 23:48:05 +08:00
搜索加验证码尝试过吗?
hjc4869
2015-01-02 23:56:23 +08:00
@leeyiw 验证码还不能忘记缓存
roricon
2015-01-03 01:48:16 +08:00


你说行就行喽~
amxku
2015-01-03 10:28:36 +08:00
如果Nginx,可以试试
http limit conn
http limit req
willis
2015-01-03 12:08:52 +08:00
@amxku Nginx还有mod_security
leeyiw
2015-05-20 21:47:32 +08:00
@hjc4869 把 POST 数据放到 Cookie 里面应该是可行的。

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

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

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

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

© 2021 V2EX