加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 05:09:39 所属栏目:安全 来源:网络整理
导读:由站长 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。 前一篇文章讲了6.X-shell 脚本自动拉黑恶意 IP 到 Cloudflare 防火墙。如果我们的网站遭遇 CC 和 DDoS 攻击时,我们可以用这个方法来简单的防御。不过

以下代码由PHP站长网 52php.cn收集自互联网现在PHP站长网小编把它分享给大家,仅供参考

前一篇文章讲了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! “模式了。操作步骤如下:

#下载

cd /root && git clone https://github.com/Machou/Cloudflare-Block.git DDoS

#打开Cloudflare.sh,修改配置

API_KEY You're Global API Key (https://dash.cloudflare.com/profile)

MAIL_ACCOUNT Email of your Cloudflare account

DOMAIN Zone ID (https://dash.cloudflare.com/_zone-id_/domain.com)

#设置定时任务

crontab -e

*/1 * * * * /root/DDoS/Cloudflare.sh 0 # check every 1 minute if protection is not enabled

*/20 * * * * /root/DDoS/Cloudflare.sh 1 # check every 20 minutes if protection is enabled

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

#!/bin/bash

?

?

# $1 = 1min,$2 = 5min,$3 = 15min

loadavg=$(cat /proc/loadavg|awk '{printf "%f",$1}')

?

?

# load is 10,you can modify this if you want load more than 10

maxload=10

?

?

# Configuration API Cloudflare

# You're Global API Key (https://dash.cloudflare.com/profile)

api_key=

# Email of your account Cloudflare

email=

# Zone ID (https://dash.cloudflare.com/_zone-id_/domain.com)

zone_id=

?

?

# create file attacking if doesn't exist

if [ ! -e $attacking ]; then

echo 0 > $attacking

fi

?

attacking=./attacking

?

?

hasattack=$(cat $attacking)

?

?

if [ $(echo "$loadavg > $maxload"|bc) -eq 1 ]; then

?

if [[ $hasattack = 0 && $1 = 0 ]]; then

?

# Active protection

echo 1 > $attacking

curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/$zone_id/settings/security_level"

-H "X-Auth-Email: $email"

-H "X-Auth-Key: $api_key"

-H "Content-Type: application/json"

--data '{"value":"under_attack"}'

fi

?

else

if [[ $hasattack = 1 && $1 = 1 ]]; then

?

# Disable Protection

echo 0 > $attacking

curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/$zone_id/settings/security_level"

-H "X-Auth-Email: $email"

-H "X-Auth-Key: $api_key"

-H "Content-Type: application/json"

--data '{"value":"high"}'

fi

fi

?

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 可以实现更加灵活的功能,对于普通的防御足够自己使用了。

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读