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)