linux网站5秒盾,宝塔面板建站后接入CF自动开启5秒盾证码脚本
有大神分享了CF自动开启5秒盾 + 验证码脚本,原理就是通过检测系统负载(cpu或load)自动开启cloudflare UAM和challenge质询(验证码)!!
这里分享下宝塔面板下如何用起来,使用的前提是你的域名需要接入cloudflare。
1、简介
项目:https://github.com/jiuqiMax/autouam
2、申请api_key
开搞之前先申请CloudFlare API KEY,登录cf之后,点击右上角的个人资料(My Profile),选择{API Tokens}选择{Global API Key}
3、申请zone_id
回到后台首页,点击域名管理,在右侧就可以看到Zone ID
4、代码
脚本代码如下:
#!/bin/bash
#
# Usage:
# screen -dmS autouam &&
# screen -x -S autouam -p 0 -X stuff "bash /root/autouam.sh" &&
# screen -x -S autouam -p 0 -X stuff $'\n'
#
mode="load"
# 两种模式可选,一:cpu 二:load
challenge="1"
# 是否同时开启验证码质询 设为1即开启
keeptime="300"
# ≈开盾最小时间,如60 则开盾60秒内负载降低不会关,60秒后关
interval="0.5"
# 检测间隔时间,默认0.5秒
email="wdnmd@cloudflare.com"
# CloudFlare 账号邮箱
api_key="(´இ皿இ`)"
# CloudFlare API KEY
zone_id="ಥ_ಥ"
# 区域ID 在域名的概述页面获取
default_security_level="high"
# 默认安全等级 关闭UAM时将会把安全等级调整为它
api_url="https://api.cloudflare.com/client/v4/zones/$zone_id/settings/security_level"
# API的地址
api_url1="https://api.cloudflare.com/client/v4/zones/$zone_id/firewall/access_rules/rules"
# API的地址之二
# 安装依赖
if [ ! $(which jq 2> /dev/null) ]; then
echo "jq not found!"
if [ -f "/usr/bin/yum" ] && [ -d "/etc/yum.repos.d" ]; then
yum install jq -y
elif [ -f "/usr/bin/apt-get" ] && [ -f "/usr/bin/dpkg" ]; then
apt-get install jq -y
fi
fi
for((;;))
do
if [ "$mode" = "cpu" ];
then
check=90 #5秒内CPU连续超过80 则开启UAM【可以根据您的服务器负荷情况调整】
#系统空闲时间
TIME_INTERVAL=5
time=$(date "+%Y-%m-%d %H:%M:%S")
LAST_CPU_INFO=$(cat /proc/stat | grep -w cpu | awk '{print $2,$3,$4,$5,$6,$7,$8}')
LAST_SYS_IDLE=$(echo $LAST_CPU_INFO | awk '{print $4}')
LAST_TOTAL_CPU_T=$(echo $LAST_CPU_INFO | awk '{print $1+$2+$3+$4+$5+$6+$7}')
sleep ${TIME_INTERVAL}
NEXT_CPU_INFO=$(cat /proc/stat | grep -w cpu | awk '{print $2,$3,$4,$5,$6,$7,$8}')
NEXT_SYS_IDLE=$(echo $NEXT_CPU_INFO | awk '{print $4}')
NEXT_TOTAL_CPU_T=$(echo $NEXT_CPU_INFO | awk '{print $1+$2+$3+$4+$5+$6+$7}')
#系统空闲时间
SYSTEM_IDLE=`echo ${NEXT_SYS_IDLE} ${LAST_SYS_IDLE} | awk '{print $1-$2}'`
#CPU总时间
TOTAL_TIME=`echo ${NEXT_TOTAL_CPU_T} ${LAST_TOTAL_CPU_T} | awk '{print $1-$2}'`
load=`echo ${SYSTEM_IDLE} ${TOTAL_TIME} | awk '{printf "%.2f", 100-$1/$2*100}'`
else
load=$(cat /proc/loadavg | colrm 5)
check=$(cat /proc/cpuinfo | grep "processor" | wc -l)
fi
if [ ! -f "status.txt" ];then
echo "" > status.txt
else
status=$(cat status.txt)
fi
now=$(date +%s)
time=$(date +%s -r status.txt)
echo "当前$mode负载:$load"
if [[ $status -eq 1 ]]
then
echo "UAM ON!"
else
echo "UAM OFF!"
fi
newtime=`expr $now - $time`
closetime=`expr $keeptime - $newtime`
if [[ $load
then
echo -e "\n$mode负载低于$check,当前已开盾超过规定时间$newtime秒,尝试调整至默认安全等级($default_security_level)"
# Disable Under Attack Mode
result=$(curl -X PATCH "$api_url" \
-H "X-Auth-Email: $email" \
-H "X-Auth-Key: $api_key" \
-H "Content-Type: application/json" \
--data "{
\"value\": \"$default_security_level\"
}" --silent \
| jq -r '.success')
if [ "$result" = "true" ]; then
echo 0 > status.txt
echo -e "\n成功"
fi
if [ "$challenge" -eq 1 ]; then
rulesid=$(curl -X GET "$api_url1?per_page=1000&mode=challenge&configuration.target=country" \
-H "X-Auth-Email: $email" \
-H "X-Auth-Key: $api_key" \
-H "Content-Type: application/json" \
--silent \
| jq -r '.result[].id')
for i in $rulesid
do
result=$(curl -X DELETE "$api_url1/$i" \
-H "X-Auth-Email: $email" \
-H "X-Auth-Key: $api_key" \
-H "Content-Type: application/json" \
--data "{
\"cascade\": \"none\"
}" --silent \
| jq -r '.success')
if [ "$result" = "true" ]; then
echo -e "\n删除验证码 成功 ID: $i"
fi
done
fi
elif [[ $load
then
echo -e "\n$mode负载低于$check,不做任何改变,状态持续了$newtime秒"
if [[ $status -eq 1 ]]
then
echo -e "将于$closetime秒后调整安全等级至$default_security_level"
fi
elif [[ $load >$check ]] && [[ $status -eq 1 ]] && [[ $newtime -gt $keeptime ]]
then
echo -e "\n$mode负载高于$check,当前已开启UAM超过$keeptime秒,UAM无效"
elif [[ $load >$check ]] && [[ $status -eq 1 ]]
then
echo -e "\n$mode负载高于$check,当前已开启($newtime秒),请再观察"
elif [[ $load >$check ]]
then
echo -e "\n$mode负载高于$check,开启UAM"
# Enable Under Attack Mode
result=$(curl -X PATCH "$api_url" \
-H "X-Auth-Email: $email" \
-H "X-Auth-Key: $api_key" \
-H "Content-Type: application/json" \
--data "{
\"value\": \"under_attack\"
}" --silent \
| jq -r '.success')
if [ "$result" = "true" ]; then
echo 1 > status.txt
echo -e "\n成功"
fi
if [ "$challenge" -eq 1 ]; then
for i in AF AX AL DZ AS AD AO AI AQ AG AR AM AW AU AT AZ BS BH BD BB BY BE BZ BJ BM BT BO BQ BA BW BV BR IO BN BG BF BI KH CM CA CV KY CF TD CL CN CX CC CO KM CG CD CK CR CI HR CU CW CY CZ DK DJ DM DO EC EG SV GQ ER EE ET FK FO FJ FI FR GF PF TF GA GM GE DE GH GI GR GL GD GP GU GT GG GN GW GY HT HM VA HN HK HU IS IN ID IR IQ IE IM IL IT JM JP JE JO KZ KE KI KP KR KW KG LA LV LB LS LR LY LI LT LU MO MK MG MW MY MV ML MT MH MQ MR MU YT MX FM MD MC MN ME MS MA MZ MM NA NR NP NL NC NZ NI NE NG NU NF MP NO OM PK PW PS PA PG PY PE PH PN PL PT PR QA RE RO RU RW BL SH KN LC MF PM VC WS SM ST SA SN RS SC SL SG SX SK SI SB SO ZA GS SS ES LK SD SR SJ SZ SE CH SY TW TJ TZ TH TL TG TK TO TT TN TR TM TC TV UG UA AE GB UM UY UZ VU VE VN VG VI WF EH YE ZM ZW XX T1
do
result=$(curl -X POST "$api_url1" \
-H "X-Auth-Email: $email" \
-H "X-Auth-Key: $api_key" \
-H "Content-Type: application/json" \
--data "{
\"mode\": \"challenge\",
\"configuration\": {
\"target\": \"country\",
\"value\": \"$i\"
}
}" --silent \
| jq -r '.success')
if [ "$result" = "true" ]; then
echo -e "\n开启对$i国家的验证码 成功"
fi
done
fi
else
echo 0 > status.txt
fi
sleep $interval
clear
done
注意:该修改的地方,要修改。
5、计划任务
宝塔面板的计划任务中新建一个脚本任务
保存之后,可以试着执行下看看效果:
6、最后
如果你的站点被攻击频繁,可以试着把执行周期改成每天,或者每小时啥的,这个自行调整。如果有更新,请自行进入项目获取最新脚本。
注意!默认challenge=1,将在开启UAM的同时开启验证码。如果你不想,请将它设为0
AD:【校园卡申请助手】优惠校园卡套餐办理!
linux网站5秒盾,宝塔面板建站后接入CF自动开启5秒盾证码脚本相关推荐
- 【宝塔面板建站】04. 设置消息通道,通过邮箱、钉钉、企业微信等形式动态提供网站信息(保姆级图文)
目录 消息通道的作用 设置消息通道 邮箱 安装模块 配置SMTP服务(邮件发送者) 填写收件邮箱(邮件接收者) 收到测试邮件 钉钉 安装模块 电脑版钉钉得到一个没用的普通群聊 添加群机器人阿里云Cod ...
- 宝塔面板windows建站教程_WindowsVPS-服务器安装宝塔面板建站教程宝塔面板,
WindowsVPS-服务器安装宝塔面板建站教程宝塔面板, 一般的站点程式与项目基本上都能在Linux系统中启动,譬如咱们常用建站PHP+MYSQL程式,伏笔主机仍是提议用一键WEB部署包或者用面板. ...
- 【宝塔面板建站】10分钟windows宝塔面板一键部署安装wordpress,无需服务器和域名本地运行(保姆级图文)
目录 傻瓜式一键部署 一键部署 修改本地host 访问域名,启动网站的安装程序 访问建成的网站 总结 『杂记』分享一些实用的技巧方法 安装环境,配置环境教程,推荐实用软件 软件的使用问题. 欢迎关注 ...
- 【宝塔面板建站】10分钟windows宝塔面板手动通用部署站点shopxo在线商城,无需服务器和域名本地运行(保姆级图文)
目录 手动安装,通用方法可以用来安装所有类似的网站 1. 下载shopxo商城源码 2. 添加站点并创建数据库 3. 把第一步下载的网站源码放入我们新建的站点 修改本地host 访问域名,启动网站的安 ...
- 【宝塔面板建站】02. 实用必装的插件之Windows工具箱 2.0,可视化管理端口,host管理(保姆级图文)
目录 安装Windows工具箱 2.0 Windows工具箱 2.0使用 总结 『宝塔面板建站』分享宝塔面板从安装到实战的宝塔面板本机免云服务器免域名搭建网站等内容. 欢迎关注 『宝塔面板建站』 系列 ...
- 【宝塔面板建站】05. 七牛云存储使用教程 免费备份10G数据(保姆级图文)
目录 实现效果 注册并实名一个七牛云帐号 配置七牛云存储空间 新建对象存储空间 域名管理 解析域名得到CNAME 检查加速域名配置是否成功 获取七牛云密钥 得到2个密钥 宝塔面板配置七牛云 安装七牛云 ...
- 宝塔linux_宝塔面板建站基础教程:如何安装宝塔面板及建立博客网站
大多数站长购买服务器特别是 Linux 服务器后一般都会选择安装宝塔面板来管理和维护服务器,但是有些新手站长总是担心自己不懂得如何在云服务器上安装宝塔面板,又或者成功安装了宝塔面板之后不懂得如何通过面 ...
- 宝塔建站 mysql在哪_宝塔面板建站教程,越详细越好纯小白! - 搜外问答
我的网站就是用宝塔添加的网站: 宝塔面板创建站点添加网站的详细教程. 宝塔 Linux 面板创建站点添加网站常规方法 1.登录宝塔 linux 面板 >> 网站 >> 添加站点 ...
- 不想用宝塔面板建站,如何手动搭建LAMP环境安装wordpress
下面我们开始Apache + MySQL + PHP语言环境的安装和部署(LAMP),以及WordPress 的安装和基础配置. 在开始搭建之前,请将你的域名解析到云服务器公网ip,新手可以选择&qu ...
- 用宝塔面板网站php变成静态,宝塔面板可以建立静态网站吗?如何部署一个静态页面?...
大多数情况下我们在服务器上安装宝塔面板后建立的博客网站大多数都是带有数据库的动态网站,如WordPress.ZBlogPHP.Typecho.emlog.Discuz!Q等,很少有建立纯静态网站.所以 ...
最新文章
- c语言中point的用法_C/C++中 *和amp;的爱恨情仇
- 八、Linux 常用 Shell 命令,控制台的快捷键以及 Shell 编程(中)
- ij运行tomcat_如何把本地Web项目部署到云服务器上
- SQL with(unlock)与with(readpast)
- Java并发编程的艺术(八)——闭锁、同步屏障、信号量详解
- 转载:小心别让圆角成了你列表的帧数杀手
- 【数学建模】基于matlab GUI弱肉强食问题—Volterra 模型【含Matlab源码 1502期】
- python 回调函数的使用_Python回调函数用法实例详解
- 【裴礼文数学分析】例1.1.5
- 苹果android怎么设置,天猫魔盒怎么投屏使用 苹果和安卓手机操作设置方法
- App Store 上架流程
- i春秋 - Exploit-Exercises: Nebula - level00
- S3C2440原理图导读
- cesium entity使用
- VMware下的Ubuntu连接无线网络解决方案
- 6月29日云栖精选夜读:Java、PHP、Python、JS 等开发者都如何绘制统计图
- java: 程序包sun.reflect.generics.reflectiveObjects不存在
- thread ‘main‘ panicked at ‘called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound
- 气体报警器为什么需要定期校准
- 免费获取所有股票5分钟级别及以上的交易数据
热门文章
- 从游击队到正规军:马蜂窝旅游网的IM系统架构演进之路
- eclipse使用maven教程
- 安平仓管王 5000xp v2.9 免费下载
- html链接基本语法,链接(link)基本语法
- ‘’vr‘’全景抓鸡游戏总结
- bin文件转换成html,bin如何改成mp4
- java action 参数_Structs复习 Action传递参数
- Resource Hacker软件更换应用图标
- netmeeting 英文开源实例
- 简单免费内网穿透教程,外网快速访问内网群晖/nas/树莓派