空鵼
空鵼
发布于 2024-11-20 / 14 阅读
0
0

使用OPEN API实现雷池社区版自动拉黑ip

老版本使用雷池社区版的时候都需要在界面操作,但是网络攻击往往都是无规律的,每次都手动操作非常累

前一段时间雷池社区版刚好开放了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

说一下思路

  1. 先手动创建一个ip组,设置为黑名单,手动获取ip组的id

  2. 开启高频攻击封禁功能,方便筛选出多次攻击的ip(可以设置大一些,多获取一些恶意ip)

  3. 使用接口获取高频攻击的ip

  4. 把获取的高频攻击ip放入ip组

前置工作:

1.成一个TOKEN,用于专门的自动化使用

token:07ztvayj0rQl3GnMZ32F21LaJz0MvbtJ

2.添加一个自动拉黑的ip组,用于后续的自定义拉黑

3.增加一个黑名单,匹配目标为上文创建的ip组

实现脚本:

  1. 手动设置一个高频攻击规则,封禁时间这里设置10分钟(目的只是获取高频攻击的ip)

  1. 使用 找到接口文档内的获取高频攻击的接口

如果不好找可以页面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组信息的接口


评论