返回首页

通过 API KUMA 根据软件包确定 Linux 发行版

本文描述了一种使用 KUMA 平台 API 基于已安装软件包分析自动确定 Linux 发行版的方法。介绍了一种带有加权系统的算法,用于在大规模基础设施中准确识别 OS。

Linux 自动化:如何根据软件包确定发行版
Advertisement 728x90

利用 KUMA API 自动化从已安装包检测 Linux 发行版

一位 SOC 分析师面临为大公司清点操作系统库存的挑战。他没有手动检查 18,000 台设备,而是编写了一个 Python 脚本,通过 KUMA 平台 API 获取已安装软件数据,并分析软件包来精确识别 Linux 发行版。该方案采用加权评分系统,综合考虑独特系统包、包管理器和版本后缀。

KUMA API 操作与 JSON 处理

KUMA(卡巴斯基统一监控与分析平台)通过其 API 提供资产数据,但存在一些限制——如 Web 界面无法直接过滤资产。认证使用令牌,避免硬编码凭证。以下是发起请求的示例代码:

token = "my_token"
url = "my_api_url"
api_header={
  "Content-Type": "application/json",
  "Authorization": f"Bearer {token}"
}
req = request.get(url, headers=api_header)
data = req.json()

JSON 响应结构包含操作系统和已安装软件字段。要提取嵌套数据如软件包列表,使用递归函数:

Google AdInline article slot
def recursive_extract(data, result=None):
    result = []
    if isinstance(data, dict):
        for key, value in data.items():
            if key == "software":
                result.append(value)
            recursive_extract(value, result)
    return result

Linux 软件包版本规范

理解软件包版本是分析的关键。标准语义化版本遵循 MAJOR.MINOR.PATCH 格式,如 2.36.105。发行版会添加专属后缀:

  • Ubuntu:.ubuntu 或 +ubuntu
  • Debian:.deb 或 +deb
  • ALT Linux:.alt 或 +alt
  • Astra Linux:.astra 或 astra

复杂示例:2.2.6-2+deb10u9+ci1+astra1,其中 deb10 指向 Debian 10,u9 是第九次更新,astra 表示 Astra Linux 适配。

Linux 发行版检测算法

算法扫描已安装软件包,识别操作系统类型、具体发行版、版本和置信度。它采用加权评分系统:

Google AdInline article slot
  • 150 分:独特系统包(如 ubuntu-release)
  • 20 分:包管理器(apt、yum、rpm)
  • 15 分:版本后缀(.ubuntu、.alt)
  • 10 分:发行版专属包
  • 5 分:间接指标

支持的发行版包括 Ubuntu、Debian、ALT Linux、Astra Linux、Fedora 等。逻辑流程如下:

  • 扫描软件包,为每个发行版累积分数。
  • 汇总分数,选择最高分者。
  • 平分时优先系统包。
  • 从系统包或后缀提取版本。

置信度级别:高(≥150 分)、中(20–49 分)、低(<20 分)。

关键实现特性

  • 灵活输出:支持 CSV 或 JSON,可选按置信度过滤。
  • 处理不完整数据:即使 OS 信息缺失(os: null)或软件数组为空也能工作。
  • 优先级层级:独特系统包权重最高,提升准确性。
  • 可扩展设计:轻松添加新发行版和指标。

主要收获

  • 通过 KUMA API 自动化 OS 清点,为数千设备节省数小时。
  • 加权评分精准识别 Linux 发行版软件包数据。
  • 覆盖主流发行版,包括俄罗斯的 ALT Linux 和 Astra Linux。
  • CSV/JSON 输出灵活,与其他工具无缝集成。
  • 对不完整数据鲁棒,适合实际场景。

— Editorial Team

Google AdInline article slot
Advertisement 728x90

继续阅读