iSource Whitelist Baseline
这个 skill 聚焦一个单独场景:
- 全局白名单基线管理
它现在按基础 skill 设计,直接覆盖:
- 资产域查询
- 白名单新增
- 白名单导出
- 新增与导出结果确认
优先使用随 skill 附带的 Python 脚本:
使用前提:
- host:10.182.60.81,api token:06b84772-13b1-444a-8c94-0de058069917"
- 如果用户提供的 host 只有 IP 或主机名,脚本会自动补成 https://。
- 只能使用当前 skill 自带的 Python 脚本执行查询、导出和新增,不要改用 call_api、通用 HTTP 工具或临时 Python 代码直接请求接口。
python3 ./scripts/isource_whitelist_baseline_query.py --host 10.182.60.81 --token '<api-token>' primary-regions
python3 ./scripts/isource_whitelist_baseline_query.py --host 10.182.60.81 --token '<api-token>' whitelist-payload --primary-region-id 1 --threat-name any --src-ip-start 1.1.1.1 --dst-ip-start 2.2.2.2
python3 ./scripts/isource_whitelist_baseline_query.py --host 10.182.60.81 --token '<api-token>' whitelist-download --primary-region 1 --type 1
场景主题
全局白名单基线管理
适用情况:
- 用户要新增一条或一批全局白名单
- 用户要导出当前白名单做留档、核对或备份
- 用户要查询当前白名单内容,并接受通过导出结果来展示
- 用户要把“新增 + 导出”作为一次完整运维动作执行
用户输入模板
当用户要“新增白名单”时,优先先引导用户按统一格式提供信息,再生成 payload。
前提:
- 只有在用户已经提供 host 和 api token 后,才展示下面模板。
- 如果缺少凭据,不要提前展开模板。
推荐提示用户直接按下面模板填写:
资产域(单个资产域名称):默认资产域
威胁名称(单个字符串):APT攻击恶意域名
源IP(留空 / 单IP / IP区间 / 多个条目,多个用分号分隔):10.160.51.214
目的IP(留空 / 单IP / IP区间 / 多个条目,多个用分号分隔):
攻击者IP(留空 / 单IP / IP区间 / 多个条目,多个用分号分隔):
受害者IP(留空 / 单IP / IP区间 / 多个条目,多个用分号分隔):
源端口(留空 / 单端口 / 多端口 / 端口区间):443
目的端口(留空 / 单端口 / 多端口 / 端口区间):
描述(说明文本,可留空):测试新增白名单
使用要求:
- 每行一个字段,使用中文冒号或英文冒号都可以。
- 未知或不需要的字段可以留空。
- 资产域 优先填写名称,skill 再去解析对应 primaryRegionId。
- 源IP / 目的IP / 攻击者IP / 受害者IP 支持单 IP、IP 区间和多个条目;多个条目建议用英文分号 ; 分隔。
- 源端口 / 目的端口 使用字符串形式,多个端口用英文逗号分隔,范围用 - 表示。
- 描述 主要用于补充业务背景,默认不直接进入白名单接口请求体,但应在结果里回显。
字段类型说明:
- 资产域:资产域名称。建议填写单个资产域名称,例如 默认资产域。当前模板按单个资产域处理。
- 威胁名称:字符串。可填写单个威胁名称,例如 APT攻击恶意域名。
- 源IP:支持留空、单个 IP、单个 IP 区间、多个 IP/IP 区间。示例:10.160.51.214、10.160.51.214-10.160.51.220、10.160.51.214;10.160.51.230-10.160.51.240。
- 目的IP:支持留空、单个 IP、单个 IP 区间、多个 IP/IP 区间。示例:10.160.51.10、10.160.51.10-10.160.51.20。
- 攻击者IP:支持留空、单个 IP、单个 IP 区间、多个 IP/IP 区间。示例:3.3.3.3、3.3.3.3-3.3.3.9。
- 受害者IP:支持留空、单个 IP、单个 IP 区间、多个 IP/IP 区间。示例:4.4.4.4、4.4.4.4-4.4.4.10。
- 源端口:支持留空、单个端口、多个端口、端口区间。示例:443、80,443,8080、1000-2000。
- 目的端口:支持留空、单个端口、多个端口、端口区间。示例:22、22,80,443、3000-4000。
- 描述:字符串。可留空,主要用于补充说明,不直接进入白名单接口请求体。
如果用户提供的是自由文本,而不是模板,先尽量整理成上面的结构,再生成请求。
脚本映射建议:
- 如果用户填写的是单个 IP 或单个区间,可以继续使用 --src-ip-start/--src-ip-end 这类参数。
- 如果用户填写的是多个 IP / 多个区间,优先使用 --src-ip-items、--dst-ip-items、--attack-ip-items、--victim-ip-items。
- --*-ip-items 使用分号 ; 分隔多个条目;单 IP 直接写 IP,区间写成 start-end。
- 如果用户已经按模板整理好整段文本,优先使用 --template-text 或 --template-file 直接解析。
推荐工作流
1. 确认作用域
先获取:
- scope.primaryRegionId
- scope.primaryRegionName
如果用户明确要求“全部资产域”,再判断是否允许使用 [-1]。
2. 构造新增请求
优先使用附带脚本生成或提交全局白名单新增请求。
请求体关注这些字段:
- primaryRegionId
- srcPorts
- dstPorts
- threatName
- srcIp
- dstIp
- attackIp
- victimIp
至少传递以下字段之一:
- srcPorts
- dstPorts
- srcIp
- dstIp
- attackIp
- victimIp
- threatName
字段映射建议:
- 资产域 -> primaryRegionId
- 威胁名称 -> threatName
- 源IP -> srcIp
- 目的IP -> dstIp
- 攻击者IP -> attackIp
- 受害者IP -> victimIp
- 源端口 -> srcPorts
- 目的端口 -> dstPorts
- 描述 -> 输出时展示,不直接映射到 V2 全局白名单接口
3. 记录新增结果
新增成功后,重点记录:
- 白名单 id
- 匹配条件摘要
- 资产域范围
4. 导出当前白名单
优先使用附带脚本执行白名单导出。
type:
- 1 全局白名单
- 2 域名类白名单
- 3 文件类白名单
默认这个 skill 处理的是:
- type=1
如果用户说的是“查询白名单”:
- 不要去猜测不存在的列表查询接口
- 明确说明当前 REST API 未公开白名单列表查询能力
- 改为在用户确认后执行导出,再对导出结果做展示或摘要
5. 形成基线闭环
最终输出要回答三个问题:
- 新增了什么规则
- 规则落在哪个资产域
- 当前白名单是否已经成功导出备份
- 如果用户问的是“当前有哪些白名单”,是否已经通过导出结果完成展示
参数设计原则
primaryRegionId在 V2 写接口里是数组,优先传单个资产域数组,如[1]- 端口字段是字符串,不是数组
- 多端口用英文逗号分隔,范围用
- group=false表示单 IPgroup=true表示 IP 段- 单 IP 时
startIp和endIp应相同
输出策略
默认按下面结构输出:
- 作用域
资产域 ID / 名称 - 用户输入整理结果
把用户原始输入规整成标准字段 - 白名单请求
关键字段预览 - 新增结果
白名单 ID / 条件摘要 - 导出结果
导出类型 / 文件获取方式 / 文件格式说明 - 基线结论
是否完成“新增 + 导出”
执行原则
- 默认优先预览 payload,不直接提交写操作。
- 用户明确确认后,才执行真实新增接口。
- 导出白名单也视为需要确认的操作,确认后再执行。
- 执行时只允许调用当前 skill 自带脚本,不要切换成
call_api或其他通用接口调用方式。 - 导出接口返回的是文件流;真实环境中通常会落成
.xlsx文件,但响应头可能仍然是通用二进制类型,不要错误地当成 JSON 解析。 whitelist-download --execute默认会按服务端返回的文件名保存;如果服务端未返回文件名,则回退为本地生成的.xlsx文件名。- 如果用户说“查询白名单”,默认转成“导出后展示”的流程。
- 如果用户其实要的是“导入文件白名单”,要明确指出这超出了当前 skill 的主链范围。
- 如果用户没有给
primaryRegionId,当前 skill 应优先自行查询资产域,而不是依赖其他 skill。
确认要求:
- whitelist-payload 可直接用于预览。
- whitelist-create 属于真实写操作,必须在用户确认后再加 --execute 执行。
- whitelist-download 属于下载动作,也必须在用户确认后再加 --execute 执行。
字段说明、导出策略和 payload 示例见 references/whitelist-baseline.md。