Cloudflare 常用API - 自动开启5秒盾 根据平均负载自动开盾

Cloudflare 常用API - 自动开启5秒盾 根据平均负载自动开盾

William
2022-04-12 / 0 评论 / 21 阅读 / 正在检测是否收录...
Cloudflare API 通过编程接口公开完整的 Cloudflare 功能。
您可以使用 Cloudflare API 管理帐户设置、配置产品和开发应用程序。 via 管理 API 令牌和密钥;

要使用API,实现5秒盾,根据平均负载自动开盾,都需要一下几个 Cloudflare注册邮箱,Global API Key,Zone ID等;

查看 API 密钥

官方文档:管理 API 令牌和密钥(请自行切换语言)

修改安全级别设置

正常情况下,我们要设置防火墙的安全等级,我们可以在 Cloudflare 的控制面板-防火墙-设置-安全级别进行设置,简单,直观;(如上图位置);

为了应对不期而至的 CC 攻击,我们可能会需要一个自动提高安全级别的策略,把安全级别从 off 提高到 under_attack;

官方示例
Cloudflare 常用API - 自动开启5秒盾(off, essentially_off, low, medium, high, under_attack)

完整官方文档,访问 https://api.cloudflare.com/ 搜索 Security Level setting

curl -X PATCH "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/settings/security_level" \
     -H "X-Auth-Email: cloudflare 账号邮箱" \
     -H "X-Auth-Key: 你的 API Key" \
     -H "Content-Type: application/json" \
     --data '{"value":"medium"}'

现在,我们动手制作一个可执行Shell脚本,假设命名为:cf.security.sh:

#!/bin/bash
#cf.security.sh
CFEMAIL="填写你的Cloudflare注册邮箱"
CFAPIKEY="填写你的API Key"
ZONEID="填写你的ZONEID"

curl -X PATCH "https://api.cloudflare.com/client/v4/zones/${ZONEID}/settings/security_level" \
     -H "X-Auth-Email: ${CFEMAIL}" \
     -H "X-Auth-Key: ${CFAPIKEY}" \
     -H "Content-Type: application/json" \
     --data '{"value":"medium"}'

其中,"value" 的值可设置为:

off
essentially_off
low
medium
high
under_attack

执行 cf.security.sh,如果成功则返回如下提示:

{"result":{"id":"security_level","value":"medium","modified_on":"2022-04-12T03:41:56.393080Z","editable":true},"success":true,"errors":[],"messages":[]}

根据平均负载自动开盾

以下仅做示例参考,还有很多判定方法值得考量(HTTP 502 错误数量,系统平均负载,异常的IP数量,HTTP 404 状态码数量(如果用 random 攻击的话等等))

#!/bin/bash
#cf.security.change.sh
##近期平均负载情况判定

usage=`echo $(cat /proc/loadavg | awk '{print $2}')` #获取当前系统平均负载值
max=2 #设置最大阈值

CFEMAIL="填写你的Cloudflare注册邮箱"
CFAPIKEY="填写你的API Key"
ZONEID="填写你的ZONEID"

if [ `echo "$usage > $max"|bc` -eq 1 ];
then
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/${ZONEID}/settings/security_level" \
     -H "X-Auth-Email: ${CFEMAIL}" \
     -H "X-Auth-Key: ${CFAPIKEY}" \
     -H "Content-Type: application/json" \
     --data '{"value":"under_attack"}'
fi

在Linux系统中,uptime、w、top 等命令都会有系统平均负载 load average 的输出,那么什么是系统平均负载呢? 命令输出的最后内容表示在过去的 1、5、15 分钟内运行队列中的平均进程数量。

上面的脚本意思是当最近5分钟系统负载大于2时,则修改 Cloudflare 防御等级为最高级(under_attack模式)

最后,设置一下 Crontab 每分钟自动执行脚本即可(脚本每1分钟运行一次):

脚本具体位置以你自己放置位置为准

*/1 * * * * /root/cf.security.change.sh
0

评论 (0)

取消