Skip to content

feat: add Venus IPS log query service package#258

Open
cc06 wants to merge 1 commit into
chaitin:mainfrom
cc06:add-venus-ips
Open

feat: add Venus IPS log query service package#258
cc06 wants to merge 1 commit into
chaitin:mainfrom
cc06:add-venus-ips

Conversation

@cc06

@cc06 cc06 commented Jun 25, 2026

Copy link
Copy Markdown

接入设备

项目 说明
设备 Venustech IPS(启明星辰入侵防御系统)
设备版本 Web 控制台(攻击日志页 /log/memorylog/ipslog.php
API 版本 Web HTML 日志页(非公开 REST API)
认证方式 Session-based(浏览器会话 Cookie)

实现方法

本 service package 封装了 Venustech IPS 的攻击日志查询能力,提供 1 个 gRPC 方法:

方法 说明 类型
QueryIpsLog 查询 IPS 攻击日志(内存日志),解析 HTML 表格为结构化条目

技术实现要点:

  • 使用 @chaitin-ai/octobus-sdkdefineService 封装,运行时模式:long-running
  • 通过 GET /log/memorylog/ipslog.php 拉取攻击日志页,按 HTML 表格中带 title 的日志列解析为结构化 entries
  • 支持 limit 参数,对返回条目数做客户端侧截断;<=0 表示返回全部解析结果
  • 通过日志页标记 ips_log_filter 识别有效页面;设备会话失效时即使返回 200 登录页,也会映射为 FAILED_PRECONDITION,避免误判为空结果
  • 支持 timeoutMsskipTlsVerify 配置,适配私有化自签证书环境
  • 支持额外自定义请求头透传(headers),并兼容 host / restBaseUrl / baseUrlcookie / sessionCookie / session_cookie 别名

错误码映射

场景 gRPC 状态码 说明
缺少 host / cookie INVALID_ARGUMENT 调用前拦截
上游 401 / 403 PERMISSION_DENIED 会话无效或无权限
其它 4xx FAILED_PRECONDITION 请求前置条件不满足
200 但返回登录页(无 ips_log_filter 标记) FAILED_PRECONDITION 识别为会话失效,而非空日志页
网络错误 / 超时 / 上游 5xx UNAVAILABLE 设备不可用或请求失败
非预期异常 UNKNOWN 未分类错误

测试命令

cd services

# 验证 package 结构
npm run validate -- --service-dir venus__ips

# 验证打包清单
npm run pack:check

测试结果

静态校验:

  • npm run validate -- --service-dir venus__ips
  • npm run pack:check

内网真机联调:

  • 根据真实浏览器请求包,请求方式为 GET /log/memorylog/ipslog.php,使用 credentials: include,与当前实现的 Cookie 会话鉴权方式一致
  • 根据真实响应包,页面包含 ips_log_filter 标记,说明当前实现用于区分“有效日志页”和“登录失效页”的判定依据与真机一致
  • 根据真实响应包,日志表头包含:名称源IP源端口目的IP目的端口协议类型时间类型事件级别优先级动作入侵防御策略ID发生次数内容,与当前字段映射一致
  • 根据真实响应包,分页脚本中存在 allpage = 316,确认该接口返回的是设备真实日志列表页
  • 根据真实响应包中的样例日志行,可解析出以下结构化字段:
    • name: TCP_可疑行为_安全风险_MYSQL_查询系统变量
    • src_ip: 10.40.164.2
    • src_port: 60782
    • dst_ip: 10.249.184.8
    • dst_port: 3883
    • protocol: TCP
    • time: 2026-06-25 17:49:45
    • type: 可疑行为
    • severity:
    • priority: 警示
    • action: PASS
    • policy_id: 1
    • count: 1
  • content 列在真实页面中通过 td title 承载长文本内容,当前实现按 title 提取,可覆盖该字段

覆盖场景:

  • HTML 日志表行解析与结构化字段映射
  • limit 截断逻辑
  • 会话失效(登录页返回 200)识别
  • host / cookie 缺失校验
  • HTTP 状态码与网络错误映射
  • 内部辅助函数覆盖
  • rpcdef 与 service handler 暴露校验

已知限制

  1. 当前仅支持基于 Web Session Cookie 的只读日志查询,不支持用户名/密码自动登录
  2. 当前仅实现全量攻击日志抓取,未支持按源/目的 IP、时间等条件过滤
  3. 上游返回为 HTML 页面,字段解析依赖当前日志表结构;若设备页面结构变化,需同步调整解析逻辑

Closes #256

@cc06 cc06 changed the title Add Venus IPS log query service package feat: add Venus IPS log query service package Jun 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

启明-入侵检测系统IPS

1 participant