主理人序
这是一个免费的,对所有用户等级开放的修改Cloudflare防御等级的API,使用该API可自由改变防*御等级(其值可设置为 off, essentially_off, low, medium, high, under_attack)*;
Cloudflare zoneid&keys
首先先明确下会用到的一些授权,包括你的Cloudflare注册邮箱,key(即API keys),zoneid等;
查看 API 密钥(Key)
要检索 API 密钥,请执行以下操作:
1.登录 Cloudflare 仪表板。
2.在我的个人资料下拉列表下,单击我的个人资料。
3.单击 API 令牌选项卡。
4.在 API 密钥部分中,选择以下两个选项之一:“全局 API 密钥”或“Origin CA 密钥”。选择您要查看的 API 密钥。
官方文档:管理 API 令牌和密钥;(请自行切换语言)
修改安全级别设置(示例)
正常情况下,我们要设置防火墙的安全等级,我们可以在Cloudflare的控制面板-防火墙-设置-安全级别进行设置,简单,直观;(如上图位置);
为了应对不期而至的CC攻击,我们可能会需要一个自动提高安全级别的策略,把安全级别从 off
提高到 under_attack
;
官方示例
Cloudflare 常用API - 自动开启5秒盾(off, essentially_off, low, medium, high, under_attack);
API功能: Change Security Level setting(修改安全等级);
适用用户:REE/PRO/BUSINESS/ENTERPRISE;
Required parameters(必要参数)
Name /type | Description /example | Constraints |
---|---|---|
value string | Value of the zone setting"medium" |
default value: mediumvalid values: off, essentially_off, low, medium, high, under_attack |
cURL (example)
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/settings/security_level" \
-H "X-Auth-Email: [email protected]" \
-H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \
-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":"2021-04-04T03:41:56.393080Z","editable":true},"success":true,"errors":[],"messages":[]}
如果 "success" 值为 true
则代表提交成功,此时可到 Cloudflare dashboard - 防火墙 - 设置 进行查看;
以上。
自动更改安全级别(Crontab)
以下仅做示例参考,还有很多判定方法值得考量(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分钟内运行队列中的平均进程数量。
via 理解Linux系统负载;
我们上面的脚本中,意思是当最近5分钟系统负载大于2时,则修改 Cloudflare 防御等级为最高级(under_attack模式);
最后,设置一下 Crontab 每分钟自动执行脚本即可;
$ crontab -e
* * * * * /home/cf.security.change.sh;
以上。
版权属于:毒奶
联系我们:https://limbopro.com/6.html
毒奶搜索:https://limbopro.com/search.html
毒奶导航:https://limbopro.com/daohang/index.html本文链接:https://limbopro.com/archives/ChangeSecurity-Level-setting.html
本文采用 CC BY-NC-SA 4.0 许可协议,转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!