老版本使用雷池社区版的时候都需要在界面操作,但是网络攻击往往都是无规律的,每次都手动操作非常累
前一段时间雷池社区版刚好开放了OPEN API 功能,可以支持大家使用API的方式进行管理了
但是没有相关文档非常难受,一直没有使用相关功能
前几天的7.2版本又公开api文档,诚意满满
这次专门做一个自动拉黑的脚本,分享给大家
关于如何使用open可以参考这个文档:
https://docs.waf-ce.chaitin.cn/%E6%9B%B4%E5%A4%9A%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3/OPENAPI
说一下思路
先手动创建一个ip组,设置为黑名单,手动获取ip组的id
开启高频攻击封禁功能,方便筛选出多次攻击的ip(可以设置大一些,多获取一些恶意ip)
使用接口获取高频攻击的ip
把获取的高频攻击ip放入ip组
前置工作:
1.成一个TOKEN,用于专门的自动化使用
token:07ztvayj0rQl3GnMZ32F21LaJz0MvbtJ
2.添加一个自动拉黑的ip组,用于后续的自定义拉黑
3.增加一个黑名单,匹配目标为上文创建的ip组
实现脚本:
手动设置一个高频攻击规则,封禁时间这里设置10分钟(目的只是获取高频攻击的ip)
使用 找到接口文档内的获取高频攻击的接口
如果不好找可以页面f12 看看哪一个,然后进页面搜索
示例代码是:
import requests
import json
header = {
"X-SLCE-API-TOKEN": "xxxxx"
}
#添加站点的URL
url = 'https://xxxx:9443/api/open/records/acl?page=1&page_size=20'
r=requests.get(url=url,headers=header,verify=False)
print(r.text)
把对结果获取ip的逻辑加上,让其输出一个ip列表
当前逻辑是对第一页的url请求进行输出,大家根据实际请求调整
r=r.json()["data"]["data"]
ip_list=[]
for i in r:
ip = i['ip']
ip_list.append(ip)
自动获取ip完成后只要再调用写入ip组的接口即可
找到编辑接口
分析接口信息,只需要这样设置
ipgroup_url='https://101.126.66.231:9443/api/open/ipgroup'
data={
"id": 3,
"reference": "",
"comment": "自动拉黑IP组",
"ips": ip_list}
data = json.dumps(data)
r=requests.put(url=ipgroup_url,data=data,headers=header,verify=False)
就写完了最基本的查询+添加入黑名单
测试如下
如果需要优化功能,比如确保每次增加的ip都是新的ip ,就需要先调用一次查询ip组拿到原来的ip列表了
查看ip组信息的接口