Работа с API Cloudflare с Bash

Я размещаю все свои веб-сайты на DigitalOcean Droplets, а также использую Cloudflare в качестве провайдера CDN. Одним из преимуществ использования Cloudflare является то, что оно снижает общий трафик вашего пользователя, а также скрывает фактический IP-адрес вашего сервера за их CDN.

Моя любимая функция Cloudflare — бесплатная защита от DDoS. Он несколько раз спасал мои серверы от различных DDoS-атак. У них есть классный API, который вы можете использовать для легкого включения и отключения защиты от DDoS.

Эта глава будет упражнением! Я призываю вас пойти дальше и написать короткий bash-скрипт, который при необходимости будет автоматически включать и отключать защиту Cloudflare от DDoS-атак для вашего сервера!

Предварительные условия

Прежде чем следовать этому руководству, настройте свою учетную запись Cloudflare и подготовьте свой веб-сайт. Если вы не знаете, как это сделать, вы можете выполнить следующие действия здесь: Создайте учетную запись Cloudflare и добавьте веб-сайт .

Получив учетную запись Cloudflare, обязательно получите следующую информацию:

  • Учетная запись Cloudflare

  • Ключ API Cloudflare

  • Идентификатор зоны Cloudflare

Также убедитесь, что на вашем сервере установлен Curl:

curl --version

Если Curl не установлен, вам необходимо запустить следующее:

  • Для RedHat/CentOs:

yum install curl
  • Для Дебиан/Убунту

apt-get install curl

Задача – требования к сценарию

Сценарий должен отслеживать загрузку ЦП на вашем сервере, и если загрузка ЦП становится высокой в ​​зависимости от количества виртуальных ЦП, он автоматически включает защиту Cloudflare от DDoS через API Cloudflare.

Основными особенностями сценария должны быть:

  • Проверяет загрузку процессора скриптом на сервере

  • В случае скачка загрузки ЦП скрипт запускает API-вызов Cloudflare и включает функцию защиты от DDoS для указанной зоны.

  • После того, как загрузка процессора вернется к норме, скрипт отключит опцию «Я под атакой» и вернет ее в нормальное состояние.

Пример скрипта

Я уже подготовил демонстрационный скрипт, который вы можете использовать в качестве образца. Но я советую вам сначала попробовать написать сценарий самостоятельно, а только потом взглянуть на мой сценарий!

Чтобы загрузить скрипт, просто выполните следующую команду:

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

Наконец, настройте 2 задания Cron для запуска каждые 30 секунд. Чтобы отредактировать ваш crontab, выполните:

crontab -e

И добавьте следующий контент:

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

Обратите внимание, что вам необходимо изменить путь к скрипту на фактический путь, по которому вы сохранили скрипт.

Заключение

Это довольно простое и бюджетное решение. Одним из недостатков сценария является то, что если ваш сервер перестанет отвечать на запросы из-за атаки, сценарий может вообще не запуститься.

Конечно, лучшим подходом было бы использовать систему мониторинга, такую ​​как Nagios, и на основе статистики системы мониторинга вы могли бы запустить сценарий, но эта задача сценария может стать хорошим опытом обучения!

Вот еще один отличный ресурс о том, как использовать Discord API и отправлять уведомления на ваш канал Discord с помощью сценария Bash:

Как использовать веб-хуки Discord для получения уведомлений о статусе вашего веб-сайта в Ubuntu 18.04

Last updated