宿主/Service

宝塔面板CC攻击自动切换5秒盾脚本

阿里云

前一篇文章讲了6.X-shell 脚本自动拉黑恶意 IP 到 Cloudflare 防火墙。如果我们的网站遭遇 CC 和 DDoS 攻击时,我们可以用这个方法来简单的防御。不过,Cloudflare 还有一个很经典的功能就是 Cloudflare 经典的 5 秒盾防攻击,我们可以和上一篇文章结合起来看,当我们自动拉黑恶意 IP 到 Cloudflare 防火墙的时候,可以根据系统的负载状态来实现自动开启 5 秒盾。但是我们要通过 Cloudflare API 启用这个功能。这篇文章来说说,如何通过 Cloudflare API 自动开启 Cloudflare 经典的 5 秒盾。

一:脚本设置

源码地址:https://github.com/Machou/Cloudflare-Block

也想出现在这里?联系我们
创客主机

当你的服务器受到攻击时,系统负载就会爆增,利用脚本自动检测系统负载,当压力超过一定的值时就可以切换为” I’m Under Attack! “模式了。操作步骤如下:

  1.     #下载
  2.     cd /root && git clone https://github.com/Machou/Cloudflare-Block.git DDoS
  3.     #打开Cloudflare.sh,修改配置
  4.     API_KEY      You're Global API Key (https://dash.cloudflare.com/profile)
  5.     MAIL_ACCOUNT    Email of your Cloudflare account
  6.     DOMAIN      Zone ID (https://dash.cloudflare.com/_zone-id_/domain.com)
  7.     #设置定时任务
  8.     crontab -e
  9.     */1 * * * * /root/DDoS/Cloudflare.sh 0 # check every 1 minute if protection is not enabled
  10.     */20 * * * * /root/DDoS/Cloudflare.sh 1 # check every 20 minutes if protection is enabled

完整源代码,脚本默认的是检测系统负载为 10,启动” I’m Under Attack! “模式,你以根据需要来调整。脚本如下:

  1.     #!/bin/bash
  2.  
  3.  
  4.     # $1 = 1min, $2 = 5min, $3 = 15min
  5.     loadavg=$(cat /proc/loadavg|awk '{printf "%f", $1}')
  6.  
  7.  
  8.     # load is 10, you can modify this if you want load more than 10
  9.     maxload=10
  10.  
  11.  
  12.     # Configuration API Cloudflare
  13.     # You're Global API Key (https://dash.cloudflare.com/profile)
  14.     api_key=
  15.     # Email of your account Cloudflare
  16.     email=
  17.     # Zone ID (https://dash.cloudflare.com/_zone-id_/domain.com)
  18.     zone_id=     
  19.  
  20.  
  21.     # create file attacking if doesn't exist
  22.     if [ ! -e $attacking ]; then
  23.     	echo 0 > $attacking
  24.     fi
  25.  
  26.     attacking=./attacking
  27.  
  28.  
  29.     hasattack=$(cat $attacking)
  30.  
  31.  
  32.     if [ $(echo "$loadavg > $maxload"|bc) -eq 1 ]; then
  33.  
  34.     	if [[ $hasattack = 0 && $1 = 0 ]]; then
  35.  
  36.     		# Active protection
  37.     		echo 1 > $attacking
  38.     		curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/$zone_id/settings/security_level" \
  39.     						-H "X-Auth-Email: $email" \
  40.     						-H "X-Auth-Key: $api_key" \
  41.     						-H "Content-Type: application/json" \
  42.     						--data '{"value":"under_attack"}'
  43.     	fi
  44.  
  45.     	else
  46.     		if [[ $hasattack = 1 && $1 = 1 ]]; then
  47.  
  48.     		# Disable Protection
  49.     		echo 0 > $attacking
  50.     		curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/$zone_id/settings/security_level" \
  51.     						-H "X-Auth-Email: $email" \
  52.     						-H "X-Auth-Key: $api_key" \
  53.     						-H "Content-Type: application/json" \
  54.     						--data '{"value":"high"}'
  55.     	fi
  56.     fi
  57.  
  58.     exit 0

二:宝塔面板计划任务

我们如果想省点事就直接复制上面第一条中的脚本代码,放在计划任务的 shell 脚本之中,也可以是同样的效果。

这里的设置很简单,也说过很多次了,就不多做赘述了。

三:一些问题解决

这个脚本配置好之后,如果我们测试会出现一些问题。

3.1,bc: command not found

竟然报 “bc: command not found ” ,是第一次见到这个。

于是搜索了下,原来还真有这个命令,不过不知道编译内核需要这个做什么。这个东西估计用的人也很少,不过如果在命令行下要计算数也是个不错的工具吧。

yum -y install bc 一下就可以解决了。如图:

3.2./attacking 文件不存在

./attacking 文件不存在这个问题,如果遇到可以把把脚本代码中 26 行的 attacking=./attacking 剪切到 20 行,应该可行,不过没遇到这问题。

四:总结

这个也就是个思路,如果动手能力强的同学,可以自己写个脚本来调用,这里是借用别人的方法来实现这个思路的,可以说,Cloudflare 是一个非常好用的防御 DDos 和 CC 攻击的工具,免费版本的 Cloudflare 结合 API 可以实现更加灵活的功能,对于普通的防御足够自己使用了。

宝塔面板 CC 攻击自动切换 5 秒盾脚本

已有 1502 人购买
查看演示升级 VIP立刻购买

收藏
(2)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!