又被 CC 了,有啥切实有效的预防方法?

2016-04-13 12:17:37 +08:00
 RqPS6rhmP3Nyn3Tm

上次七牛被 CC 后就把图片迁回 VPS 本机了,今天发现又被 CC 。随意看了一下 log ,发现还是老手法,还是熟悉的 curl。不同之处是这次加上了百度的 referer。估计还用了代理池,直接封 IP 有一定难度。

很不开心。一个随意的个人博客都能这么搞。世界上还是小人多啊。

直接把 curl 的 UA 封了就怕改了个 UA 卷土重来,求解决方法?

12579 次点击
所在节点    问与答
104 条回复
kn007
2016-04-13 18:52:02 +08:00
之前被人用过 B 段 CC 。。。的路过
kn007
2016-04-13 18:58:35 +08:00
还可以用#48L shiny 的方法
datocp
2016-04-13 19:16:10 +08:00
去研究一下 iptables recent 模块吧。

iptables 防 syn_flood 之类的
-A INPUT -i venet+ -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn_flood

iptables -S syn_flood
-N syn_flood
-A syn_flood -i venet0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m hashlimit --hashlimit-upto 80/sec --hashlimit-burst 450 --hashlimit-mode srcip --hashlimit-name synlimit --hashlimit-htable-expire 300000 -j RETURN
-A syn_flood -m recent --set --name blacklist --rsource -j DROP

终极方法就是用 shell 对来源 ip 进行处理,然后 iptables quota 流量,每 IP 每天限制访问流量,甚至可以用 tc 进行每 ip 流量限制
-A OUTPUT -d 101.65.158.109/32 -o venet0 -m quota --quota 2076996775 -j ACCEPT
-A OUTPUT -d 101.65.158.109/32 -o venet0 -m recent --set --name bquota --rdest -j REJECT --reject-with icmp-port-unreachable
ixinshang
2016-04-13 20:43:15 +08:00
fail2ban 可以试试
AlexaZhou
2016-04-13 21:23:04 +08:00
CURL 并不是完整的浏览器,对通过 CURL 发起的攻击来说,可以通过动态 Cookies 验证的方法进行屏蔽

原理参考: https://www.v2ex.com/t/260392

然后 VeryNginx 中已经实现了一遍,直接拿着用就行了
RqPS6rhmP3Nyn3Tm
2016-04-13 21:57:45 +08:00
@AlexaZhou 连 VeryNginx 的原作者都来了啊……您的 VeryNginx 下午折腾了一下装上了,后来由于文档比较少不会用只能滚回原版 Nginx 了……
RqPS6rhmP3Nyn3Tm
2016-04-13 22:00:25 +08:00
@wayslog 出前一丁汤不错,就是没有料包。泡面还是国产的好吃,汤达人各方面都很好,料多汤浓。南朝鲜的泡面不合我口味。日本的也不错。
AlexaZhou
2016-04-13 22:19:00 +08:00
@BXIA

😰,抱歉没帮上忙...

看来我需要写一些文档,把一些典型应用下怎么配置都说一下
AlexaZhou
2016-04-13 22:31:55 +08:00
@BXIA

差点忘了,请问你用的时候,是在哪儿卡住了呢?

我好改进一下
Yamade
2016-04-13 22:35:55 +08:00
@AlexaZhou 做成 Docker 吧
RqPS6rhmP3Nyn3Tm
2016-04-13 22:43:05 +08:00
@AlexaZhou So sorry ,我把 GitHub 上的文档反复看了几遍,想要实现的是「除搜索引擎 bot 外,禁止非浏览器访问」还有「单位时间内访问过多的 IP 进黑名单禁止访问」,好像没有能配置的地方…
YUX
2016-04-13 22:44:16 +08:00
上 CloudXNS+牛盾
@CloudXNS
AlexaZhou
2016-04-13 22:55:33 +08:00
@BXIA

「除搜索引擎 bot 外,禁止非浏览器访问」这个不难,但是需要知道搜索引擎的 UA ,例如这里我们写一个正则表达式 search_engine_ua_re 来匹配所有的搜索引擎 UA ,那大概方法是:

配置一个 Mather ,包含 UA !≈ search_engine_ua_re, 然后配置一条浏览器校验规则,引用这个 Matcher ,打开 cookies 校验和 JavaScript 校验就可以了

有点难的地方在于需要写一个正则表达式来匹配所有的搜索引擎 UA

「单位时间内访问过多的 IP 进黑名单禁止访问」这个功能目前还没有,不过已经在开发计划中了,后续会加上
kofip
2016-04-13 22:58:18 +08:00
数据中心 ,真人概率: 10%
kofip
2016-04-13 22:58:36 +08:00
@GPU 数据中心 ,真人概率: 10%
RqPS6rhmP3Nyn3Tm
2016-04-13 23:05:54 +08:00
@AlexaZhou 非常感谢!
AlexaZhou
2016-04-13 23:20:39 +08:00
@Yamade

下个版本就会同步做成 Docker 啦
AlexaZhou
2016-04-13 23:22:41 +08:00
@BXIA

客气啦😊
RqPS6rhmP3Nyn3Tm
2016-04-14 08:52:16 +08:00
@AlexaZhou 您好,今天尝试在原版 nginx 中使用 verynginx (因为很多要用到的 module 所以不能用 openresty )失败了。 nginx 编译进了 lua-nginx-module 、 http_stub_status_module 然后通过包管理安装 lua-cjson 。还是不行, nginx 可以正常启动没有报错,但是就是无法正常运行。请问如何解决?
Hodor
2016-04-14 10:30:07 +08:00
买我司的产品呗。。。。

虽然跟我不是一个部门,但是我感觉我们的东西好像挺牛逼的。。。

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

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

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

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

© 2021 V2EX