使用Bash操作CloudflareAPI


文档摘要

使用 Bash 操作 Cloudflare API 我所有的网站都托管在 DigitalOcean Droplet 上,并且我使用 Cloudflare 作为 CDN 提供商。使用 Cloudflare 的一大好处是,它可以减少流向用户的总体流量,同时将你的真实服务器 IP 地址隐藏在其 CDN 背后。 我个人最喜欢的 Cloudflare 功能是其免费的 DDoS 防护。它多次保护我的服务器免受各种 DDoS 攻击。Cloudflare 提供了一个非常实用的 API,你可以通过它轻松启用和禁用 DDoS 防护功能。 本章将是一个练习!我向你发起挑战:编写一个简短的 Bash 脚本,以便在需要时自动为你的服务器启用或禁用 Cloudflare 的 DDoS 防护!

使用 Bash 操作 Cloudflare API

我所有的网站都托管在 DigitalOcean Droplet 上,并且我使用 Cloudflare 作为 CDN 提供商。使用 Cloudflare 的一大好处是,它可以减少流向用户的总体流量,同时将你的真实服务器 IP 地址隐藏在其 CDN 背后。

我个人最喜欢的 Cloudflare 功能是其免费的 DDoS 防护。它多次保护我的服务器免受各种 DDoS 攻击。Cloudflare 提供了一个非常实用的 API,你可以通过它轻松启用和禁用 DDoS 防护功能。

本章将是一个练习!我向你发起挑战:编写一个简短的 Bash 脚本,以便在需要时自动为你的服务器启用或禁用 Cloudflare 的 DDoS 防护!

前置条件

在开始本指南之前,请先设置好你的 Cloudflare 账户,并准备好你的网站。如果你不确定如何操作,可以参考以下步骤:创建 Cloudflare 账户并添加网站

设置好 Cloudflare 账户后,确保获取以下信息:

  • Cloudflare 账户
  • Cloudflare API 密钥
  • Cloudflare Zone ID

此外,确保你的服务器上已安装 curl

curl --version

如果未安装 curl,你需要运行以下命令:

  • 对于 RedHat/CentOS:
yum install curl
  • 对于 Debian/Ubuntu:
apt-get install curl

挑战——脚本要求

该脚本需要监控服务器上的 CPU 使用率。如果 CPU 使用率根据 vCPU 数量达到较高水平,脚本将通过 Cloudflare API 自动启用 DDoS 防护。

脚本的主要功能应包括:

  • 检查服务器上的 CPU 负载
  • 如果检测到 CPU 突增,脚本会触发对 Cloudflare 的 API 调用,为指定的 Zone 启用 DDoS 防护功能
  • 当 CPU 负载恢复正常后,脚本会禁用“我正遭受攻击”选项,并将其恢复为正常状态

示例脚本

我已经准备了一个演示脚本,你可以将其作为参考。不过,我鼓励你先尝试自己编写脚本,然后再查看我的脚本!

要下载脚本,只需运行以下命令:

wget https://raw.githubusercontent.com/bobbyiliev/cloudflare-ddos-protection/main/protection.sh

使用你喜欢的文本编辑器打开脚本:

nano protection.sh

然后用你的 Cloudflare 详细信息更新以下内容:

CF_CONE_ID=YOUR_CF_ZONE_ID CF_EMAIL_ADDRESS=YOUR_CF_EMAIL_ADDRESS CF_API_KEY=YOUR_CF_API_KEY

之后,将脚本设置为可执行:

chmod +x ~/protection.sh

最后,设置两个 Cron 作业,每 30 秒运行一次。要编辑你的 crontab,运行以下命令:

crontab -e

并添加以下内容:

* * * * * /path-to-the-script/cloudflare/protection.sh * * * * * ( sleep 30 ; /path-to-the-script/cloudflare/protection.sh )

请注意,你需要将脚本路径替换为你实际存储脚本的路径。

结论

这是一个相当简单且经济实惠的解决方案。该脚本的一个缺点是:如果服务器因攻击而变得无响应,脚本可能根本无法触发。

当然,更好的方法是使用像 Nagios 这样的监控系统,并根据监控系统的统计数据来触发脚本。不过,这个脚本挑战本身就是一个很好的学习机会!

以下是另一篇关于如何使用 Discord API 并通过 Bash 脚本向 Discord 频道发送通知的优秀资源:

如何在 Ubuntu 18.04 上使用 Discord Webhook 获取网站状态通知

{notice} 本内容最初发布于 DevDojo

免责声明
本文件由基于人工智能的机器翻译服务翻译而成。尽管我们力求翻译准确,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言版本的文件为准,作为权威依据。对于关键信息,建议采用专业的人工翻译。对于因使用本翻译而产生的任何误解或误读,我们概不负责。


发布者: 作者: 转发
评论区 (0)
U