上一篇 分享链接 返回 返回顶部

阿里ESA自动开盾脚本

发布人:岭云互联-郭 发布时间:11小时前 阅读量:27

阿里云 ESA 自动开盾脚本

1.介绍

通过计划任务检测服务器负载,在突然高负载疑似CC攻击时调用阿里云 ESA API启用防火墙策略的方式防御攻击,实现无攻击时完全不影响正常用户,有攻击时保证用户可以访问。

脚本每一分钟(可以自己设置)检测一次负载,当超过设定阈值时自动启用设置的ESA防火墙策略,启用后不会重复请求API,在十五分钟后如果负载已经恢复,则会自动关盾。然后重复以上操作。

脚本开源在Github,欢迎各位修改再发布,Github开源仓库地址:https://github.com/LangfordKuo/AutoAntiCC_ESA

如果Github打不开,可以使用此链接直接下载:https://lyew.com/upload/autoanticc/AutoAntiCC_ESA.zip

 

2.阿里云ESA配置

域名如何接入ESA这里就不过多赘述了,网上有很多教程,我们这里首先需要创建一个安全规则,脚本开盾并不是调用的“我正在被攻击模式”,而是自定义的规则,这样更加灵活。

首先打开左侧边栏展开规则选项,在里面找到安全规则,新建一条规则。

 

保存好规则之后,先把规则禁用掉,防止影响用户访问。

复制页面中的站点ID和规则ID,随便找个地方记一下,一会要用到。

如下图:

 

下一步我们需要获得AccessKey,注意,这个是非常敏感的信息,一定不能泄露!

根据下图进行操作

 

 

 

获取完AccessKey之后保存好,进入下一步脚本配置

 

3.脚本配置

下载文章开头的文件解压出来,或者直接clone仓库都可以,看你习惯用哪个

编辑脚本目录中的esa_config.json文件。

打开后是这样的:

{
    "_comment": "阿里云 ESA 脚本配置文件",
    "access_key_id": "必填 阿里云访问密钥ID",
    "access_key_secret": "必填 阿里云访问密钥Secret",
    "site_id": ****************,这里填写你的站点ID
    "rule_id": ********,这里填写你的规则ID
    "load_threshold": 80.0,这里是负载阈值,超过阈值时就会开盾,建议设置30-80这个区间。根据实际情况设置,不知道就默认。
    "shield_record_window_minutes": 15,这个是开盾时间,默认是超过15分钟如果负载恢复到阈值以下,自动执行关盾,建议15分钟默认不动。
    "endpoint": "esa.cn-hangzhou.aliyuncs.com"这个不要乱动
}

 

参考图如下:

 

这些都配置好之后就可以开始服务器端的配置了。

 

4.服务器端配置

现在来到最麻烦的部分了,如果你的Python版本低于3.7就需要你自己去更新Python版本了,我们这边就不教了

先安装所需要的环境,如果你是CentOS系统,很可能Python版本会低于3.7

 

CentOS系统基础环境配置教程

yum install python3 -y

或者

dnf install python3 -y

尝试使用pip3安装运行库

pip3 install alibabacloud_esa20240910==2.34.0

pip3 install requests

如果报错提示没有这么高的版本,那就尝试不指定版本安装(可能脚本运行时会报错)

pip3 install alibabacloud_esa20240910

pip3 install requests

 

Ubuntu/Debian系统基础环境配置

如果你是新版本的Ubuntu或Debian系统,你几乎不会遇到任何问题

安装Python3以及pip3

apt install python3

apt install python3-pip

安装脚本所需运行库

pip3 install alibabacloud_esa20240910==2.34.0

pip3 install requests

如果安装报错失败,可以尝试下面这种方法

pip3 install alibabacloud_esa20240910==2.34.0 --break-system-packages

pip3 install requests --break-system-packages

安装好所需环境之后我们开始下载脚本

 

下载方法1(两种方法任选其一,哪个能用用哪个)

wget https://lyew.com/upload/autoanticc/AutoAntiCC_ESA.zip

unzip AutoAntiCC_ESA.zip

cd AutoAntiCC_ESA

下载方法2(两种方法任选其一,哪个能用用哪个)

git clone https://github.com/LangfordKuo/AutoAntiCC_ESA

cd AutoAntiCC_ESA

 

下载好脚本之后,把刚刚在电脑上修改好的esa_config.json文件,替换到服务器的esa_config.json中。

方法有很多,怎么上传文件或者编辑服务器上的文件我就不多说了。

配置文件上传好之后,可以先修改阈值到0.01,然后使用python3 esaanticc.py命令运行一次脚本,前往阿里云后台查看WAF规则有没有正常启用。

如果正常启用,那说明都配置好了,接下来把阈值改回正常值,然后删掉脚本目录下的esa.txt

 

5.在宝塔面板配置计划任务

打开宝塔面板的计划任务页面,点击添加,任务类型选择Shell脚本,任务名称自己设置。

执行周期设置每一分钟,或者按秒运行,每30秒运行一次也可以。

脚本内容填写如下两种方法,任选一种就行,别两个都用

1.

cd /root/AutoAntiCC_ESA

python3 esaanticc.py

2.

python3 /root/AutoAntiCC_ESA/esaanticc.py

 

添加好之后手动点一下运行,然后查看日志,没有问题的话就完事了。

感谢各位看到这里,如果可以的话欢迎使用我们的服务器,不定期更新实用的脚本和教程。

 

目录结构
全文