跳转至

山石防火墙 IP 封禁工具使用文档

基于山石网科 StoneOS 5.5R4+ RESTful API,使用 Python 实现的命令行封禁工具。


环境要求

要求 说明
Python 3.6 及以上
依赖库 requests
设备版本 StoneOS 5.5R4+(密码 base64 编码要求)
动态黑名单版本 StoneOS 5.5R7 / 5.5R5F4 以上

安装依赖:

pip3 install requests

命令格式

python3 hillstone_block.py --host <IP> --password <密码> [选项]

参数说明

参数 是否必填 默认值 说明
--host 防火墙管理 IP 地址
--user hillstone 登录用户名
--password 登录密码
--block 封禁 IP,支持同时指定多个,空格分隔
--unblock 解封 IP,支持同时指定多个,空格分隔
--age 0 封禁时长(秒)。0 表示永久封禁(静态黑名单)
--csv 从 CSV 文件批量导入封禁条目
--list 查询当前动态和静态黑名单列表

封禁类型说明

类型 对应参数 API 接口 重启后保留 说明
静态黑名单 --block(不加 --age ptf-static-ip-blocklist 永久封禁,需手动删除
动态黑名单 --block --age <秒> behavior_blockIp 到期自动解封

使用示例

封禁操作

# 永久封禁单个 IP(静态黑名单)
python3 hillstone_block.py --host 192.168.1.1 --password hillstone --block 1.2.3.4

# 永久封禁多个 IP(空格分隔)
python3 hillstone_block.py --host 192.168.1.1 --password hillstone --block 1.2.3.4 5.6.7.8 9.10.11.12

# 临时封禁 1 小时(3600 秒)
python3 hillstone_block.py --host 192.168.1.1 --password hillstone --block 1.2.3.4 --age 3600

# 临时封禁 24 小时(86400 秒)
python3 hillstone_block.py --host 192.168.1.1 --password hillstone --block 1.2.3.4 --age 86400

# 使用自定义用户名登录并封禁
python3 hillstone_block.py --host 192.168.1.1 --user admin --password mypassword --block 1.2.3.4

解封操作

# 解封单个 IP
python3 hillstone_block.py --host 192.168.1.1 --password hillstone --unblock 1.2.3.4

# 同时解封多个 IP
python3 hillstone_block.py --host 192.168.1.1 --password hillstone --unblock 1.2.3.4 5.6.7.8

CSV 批量导入

# 从 CSV 文件批量导入
python3 hillstone_block.py --host 192.168.1.1 --password hillstone --csv block_list.csv

CSV 文件格式(第一行为表头):

ip,netmask,direct,type,age
1.2.3.4,32,src,dynamic,3600
5.6.7.0,24,src,static,
8.8.8.8,32,dst,dynamic,7200

CSV 字段说明:

字段 说明 可选值
ip 要封禁的 IP 地址 合法 IPv4 地址
netmask 子网掩码位数 1~32,单 IP 填 32
direct 封禁方向 src(源)/ dst(目标)
type 封禁类型 dynamic(动态)/ static(静态)
age 动态封禁时长(秒) 整数,静态封禁留空

查询黑名单

# 查询当前所有黑名单(动态 + 静态)
python3 hillstone_block.py --host 192.168.1.1 --password hillstone --list

输出示例:

=== 动态黑名单 ===
  1.2.3.4  方向:src  剩余:3456s
  5.6.7.8  方向:src  剩余:120s
=== 静态黑名单 ===
  10.10.10.0  方向:src  启用:1
  8.8.8.8     方向:dst  启用:1

组合用法

# 同时封禁 + 查询结果
python3 hillstone_block.py --host 192.168.1.1 --password hillstone --block 1.2.3.4 && \
python3 hillstone_block.py --host 192.168.1.1 --password hillstone --list

# CSV 批量导入后查询
python3 hillstone_block.py --host 192.168.1.1 --password hillstone --csv block_list.csv && \
python3 hillstone_block.py --host 192.168.1.1 --password hillstone --list

常见问题

Q:运行时提示 SSL 证书错误? 正常现象,脚本已自动跳过 SSL 验证(verify=False),不影响使用。

Q:动态黑名单解封报错? 动态黑名单到期后会自动删除,对已过期条目执行解封会返回失败,属于正常情况。

Q:设备使用 HTTP 而非 HTTPS? 将脚本中所有 https:// 改为 http://,并删除 verify=False 参数。

Q:虚拟系统(VSYS)如何登录? 用户名格式为 vsys名称\\admin,例如:

python3 hillstone_block.py --host 192.168.1.1 --user "test\\admin" --password test-admin --list

Q:单次最多能封禁多少条? 设备限制单次最多 100 条,脚本已自动分批处理,无需手动拆分。