AppNode面板搭建网站,CC攻击防护机制说明

什么是 CC 攻击?

CC(Challenge Collapsar)攻击者会利用一个或多个 IP (通过代理服务器或肉鸡)向您的网站频繁发起请求,直到服务器资源耗尽,甚至宕机崩溃。 

AppNode 中 CC 攻击防护的原理是什么?

在网站管理中开启 CC 防护后,系统会检测并标识发起请求的客户端是否为真实的请求,如果判定为攻击请求,将返回 503 错误。

防护原理

在收到 HTTP 请求时,CC 防护模块会拦截请求,并返回验证串,让客户端保存在 Cookie 中。

如果客户端是真实浏览器,就会在 Cookie 中保存这串验证串。

在下次请求网站时,浏览器会自动将 Cookie 中的验证串通过 HTTP 请求头部发送给网站,CC 防护模块检查验证串是否合法,合法则通行,不合法则重新拦截请求,要求重新保存验证串。

如果客户端请求网站时,一直未能提供验证串,则将被列入受限名单。

AppNode 的 CC 攻击防护模式

在网站管理中,CC攻击防护分为两种模式:简单模式、加强模式。

他们的差别是主要在于写入验证串到 Cookie 的方式不同。

简单模式

通过 HTTP 响应头将验证串写入 Cookie,能拦截简单的 CC 攻击。

简单模式所针对的攻击端,通常都没有解析和记录 HTTP 头部 Cookie 的能力,比如:

1. 使用 curl 命令或压力测试程序不断请求网站

2. 低级的攻击软件,利用网络代理不断请求网站

加强模式

通过 Javascript 将验证串写入 Cookie,能拦截大部分 CC 攻击。

加强模式在简单模式的基础上,增加了对客户端 Javascript 执行能力的检测。

加强模式所针对的攻击端,通常都没有执行 Javascript 的能力,比如:

1. 加强版的攻击软件,利用网络代理不断请求网站,能识别和记录 HTTP Cookie,可绕过简单模式的CC防护

如何开启 CC 防护?

进入网站管理 - 网站设置 - 安全 - CC攻击防护,启用“开启 CC 攻击防护”:

上图各设置项的含义:

1. 攻击频次限制:将 86400 秒内攻击次数超过 3 次的 IP 加入受限名单

   每个 IP 在 86400 秒(即一天)内最多允许生成 3 个验证串,也就是说,如果来自于这个 IP 的客户端总是验证失败,超过 3 次时将进入受限名单。

2. 重新验证设置:认定为非攻击的请求,3600 秒后重新验证是否攻击请求

   验证串写入 Cookie 后,可在未来的 3600 秒(即一小时)使用这个验证串访问网站,超时后需要使用的新的验证串重新验证。

3. 受限名单有效期:3600 秒

   受限的 IP 在 3600 秒(即一小时)内访问该网站,将返回访问受限 503 错误,一小时后会重新验证是否攻击。

4. 肉鸡攻击防护:在 60 秒内请求次数超过 100 次的 IP 加入黑名单

   如果 IP 在 60 秒内,累计请求超过 100 次(无论是正常请求还是攻击请求),将被列入 IP 黑名单。此后该 IP 访问网站将返回访问禁止 403 错误。

5. 黑名单有效期:3600 秒

   黑名单中的 IP 在 3600 秒(即一小时)内访问该网站,将返回访问禁止 403 错误,一小时后会移出黑名单。

合理设置白名单

大多数情况下,CC 攻击防护并不需要对所有请求都启用,AppNode 提供了四种常用的白名单,足以满足大部分场景的使用:

上图中各设置项的含义如下:

1. 扩展名白名单

    对于指定扩展名的 HTTP 请求,不启用 CC 攻击防护检测。

    比如请求了一个页面,这个页面中有大量图片,那么其实只需要对页面本身进行 CC 攻击防护验证,其它静态资源均可忽略。

2. 客户端白名单

    对于指定 HTTP 头中的 User-Agent 关键词的 HTTP 请求,不启用 CC 攻击防护检测。

    比如网站需要搜索引擎收录,但是搜索引擎爬虫收录时无法执行 CC 验证 Javascript 代码,这就需要将这些搜索引擎爬虫的关键词列在白名单中。

3. 路径白名单

    对于指定 URL 路径的请求,不启用 CC 攻击防护检测。

    比如网站提供了 API 接口,将需要将该 API 接口的请求路径加入白名单中,如:/api.php。

4. IP 白名单

    对于指定 IP 的请求,不启用 CC 攻击防护检测。

请注意:

1. CC 攻击防护功能只能减轻由 CC 攻击带来的危害,当 CC 攻击请求量远远超过您的服务器配置时,仍可能因为资源消耗完导致网站无法访问。

2. 请尽量减少白名单的设置,设置越多,CC防护能力越差。

如何自定义模板?

在模板设置中,允许您自定义验证页面、访问受限页面以及禁止访问页面的模板:

访问受限页面和禁止访问页面模板将为简单,这里不再做讲解。

下图为自定义模版效果:

加强模式验证页面模板如下(仅在加强模式下有效):

123456

<html><head><!--{appnode-anti-cc-script}--><script>window.location.reload();</script></head></html>

如果使用这个模板,当进入验证页面时,实际上看不到任何内容,就马上验证完成并刷新页面了。

其中

1

<!--{appnode-anti-cc-script}-->

是 CC 防护验证代码,请勿删除!

如果希望在验证页面上加点内容,比如加个延时再验证,或者让用户点击按钮后再验证,可以使用以下这个验证页面模板支持的特殊标签:

1

<!--{appnode-anti-cc-script-function:函数名}-->

示例一:延时后再刷新页面

12345678910

<html><head><!--{appnode-anti-cc-script}--><!--{appnode-anti-cc-script-function:go}--><script>setTimeout(go, 3000);</script></head><body>正在检测攻击,请等待 3 秒...</body></html>

示例二:点击按钮后再验证

12345678910

<html><head><!--{appnode-anti-cc-script}--><!--{appnode-anti-cc-script-function:go}--></head><body>正在检测攻击...<button onclick="go();">点击后继续</button></body></html>

本文来自AppNode社区

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JetpropelledSnake

Django学习笔记之URL标签的使用

期初用django 开发应用的时候,完全是在urls.py 中硬编码配置地址,在views.py中HttpResponseRedirect()也是硬编码转向地址...

9910
来自专栏用户2442861的专栏

解决stackoverflow打开慢不能注册登录

问题原因:并不是stackoverflow被墙,而是因为stackoverflow用了google的api,而Google在天朝是用不了的,所以才导致像stac...

47110
来自专栏hadoop学习

DKhadoop安装配置详细教程与常见问题解决方法

上周分别就DKHadoop的安装准备工作以及服务器操作系统配置写了两篇分享的文章,这是个人第一次尝试写一个系统性的分享文章,必然会有很多疏漏的地方,还望见谅吧。...

5200
来自专栏耕耘实录

浅谈MySQL数据库的备份与还原

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

12410
来自专栏七夜安全博客

后门编程(1)之双管道主动连接型

15340
来自专栏coding

vue结合axios与后端进行ajax交互

以前vue官方推荐的ajax库是vue-resource, 现在改为axios,原因详见Retiring vue-resource

10120
来自专栏java一日一条

Java 多线程处理任务的封装

最近公司项目很多地方使用多线程处理一些任务,逻辑代码和java多线程处理代码混合在一起,造成代码的可读性超级差,现在把Java多线程相关的处理抽出来,方面代码中...

15640
来自专栏大壮

iOS GCD定时器

39130
来自专栏Laoqi's Linux运维专列

df,du,磁盘分区

df命令 df命令是用来报告磁盘文件系统的使用量 #df -h           @根据磁盘的大小适当的用适当的单位去表示 Kb,Mb,Gb,Tb #df -...

36670
来自专栏java闲聊

centos7下安装MongoDB

25440

扫码关注云+社区

领取腾讯云代金券