资讯动态

osquery 端点监控 API 参考与实战指南:从表结构、CLI 到 Fleet 部署(Anthropic-Cybersecurity-Skills)

发布时间:2026/9/12 5:59:16 来源:尧图企业网站定制
osquery 端点监控 API 参考与实战指南从表结构、CLI 到 Fleet 部署Anthropic-Cybersecurity-Skills【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills导读本指南以仓库Anthropic-Cybersecurity-Skills中skills/deploying-osquery-for-endpoint-monitoring技能包为骨架系统梳理 osquery 端点监控的 API 参考内容涵盖多平台安装命令、核心查询表Table的语义、osqueryi 命令行工具、Fleet API 端点并结合 SKILL.md 中完整的配置示例、威胁猎杀 SQL 与 FleetDM 部署流程以及 scripts/agent.py、scripts/process.py 的源码实现给出可直接落地复用的端点可见性方案。读完本文你将掌握如何安装与配置 osquery 守护进程、如何编写调度查询与威胁猎杀 SQL、如何通过 Fleet 集中管理海量端点以及如何用配套 Python 脚本解析差分日志并生成审计报告。一、安装三大平台的官方安装方式api-reference.md中给出了面向 macOS、Ubuntu 与 Windows 三种平台的官方安装入口平台命令macOSbrew install osqueryUbuntuapt install osqueryWindows从 osquery.io 下载 MSI 安装包在 SKILL.md 的 Step 1 中Ubuntu/Debian 的完整安装流程补充如下包含密钥导入与 apt 源配置export OSQUERY_KEY1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $OSQUERY_KEY add-apt-repository deb [archamd64] https://pkg.osquery.io/deb deb main apt-get update apt-get install osquery -yWindows 平台使用 MSI 静默安装方式msiexec /i osquery-5.12.1.msi /quietmacOS 则直接通过 Homebrew 安装brew install osquery。安装完成后osquery 会提供两个核心可执行文件osqueryd常驻守护进程执行调度查询与日志输出与osqueryi交互式/一次性查询 shell供即时取证使用。二、核心 osquery 表Tables端点状态的 SQL 化视图osquery 的核心思想是把操作系统状态建模为一张张 SQL 表。api-reference.md列出了 8 张最常用的表表名说明processes运行中的进程含 pid、name、cmdline、uid 字段listening_ports开放的网络端口及其绑定进程suid_bin系统上的 SUID/SGID 二进制文件crontab计划任务cron 作业authorized_keys各用户的 SSH authorized_keyskernel_modules已加载的内核模块docker_containersDocker 容器状态file文件元数据、哈希、时间戳在威胁猎杀与合规监控场景中这些表相互关联能回答大量安全问题processes配合on_disk字段可识别无磁盘镜像的文件型fileless进程listening_ports与processes做 JOIN 可定位端口与进程的归属关系file表按mtime筛选能发现近期被改动的系统二进制。这些表正是 agent.py 中SECURITY_QUERIES字典所调用的目标例如suid_binariesSELECT path, username, permissions FROM suid_bincrontab_entriesSELECT command, path, event FROM crontabkernel_modulesSELECT name, size, used_by, status FROM kernel_modules WHERE status Live值得注意的是file表可用于跨平台文件系统查询docker_containers则把容器运行时状态纳入了同一查询平面这也体现了 osquery 在端点 云原生场景下的扩展能力。三、osquery CLIosqueryi 与 osqueryctlapi-reference.md汇总了三个最常用的 CLI 命令osqueryi --json SELECT * FROM processes LIMIT 5 osqueryctl start # 启动 osquery 守护进程 osqueryctl config-check # 校验配置osqueryi以交互式 shell 方式执行 SQL 查询--json参数让输出变为 JSON 行格式便于脚本解析与管道处理。这与 agent.py 中run_osquery()的实现完全一致——它通过subprocess.run([osqueryi, f--{output_format}, query])调用 osqueryi 并把 stdout 解析为 JSON 列表。osqueryctl start启动osqueryd守护进程之后守护进程按照配置文件中的调度计划周期性执行查询并落盘日志。osqueryctl config-check在应用配置前校验 osquery.conf 的合法性是 CI/CD 化部署 osquery 配置时的必备步骤可避免因 JSON 语法或非法配置项导致的启动失败。四、Fleet API集中管理端点的 REST 接口当 osquery 以 Fleet 模式运行大规模企业部署时api-reference.md给出了核心 REST 端点方法端点说明GET/api/v1/fleet/hosts列出已注册主机GET/api/v1/fleet/hosts/{id}查看单个主机详情POST/api/v1/fleet/queries创建调度查询GET/api/v1/fleet/queries列出查询这些端点与 agent.py 中check_fleet_status()的调用逻辑一一对应它以Authorization: Bearer api_token请求{fleet_url}/api/v1/fleet/hosts并从响应中提取hostname、platform、osquery_version、status、seen_time字段来评估各端点的注册与在线状态。换言之Fleet API 允许将查询下发与状态收集编程化是实现大规模端点资产管理自动化的基础。五、守护进程配置调度查询与 Packs来自 SKILL.md在 SKILL.md 中给出了一个生产可用的/etc/osquery/osquery.conf完整示例核心分为三部分。5.1 options守护进程行为控制options: { config_plugin: filesystem, logger_plugin: filesystem, logger_path: /var/log/osquery, disable_logging: false, schedule_splay_percent: 10, events_expiry: 3600, verbose: false, worker_threads: 2, enable_monitor: true, disable_events: false, disable_audit: false, audit_allow_config: true, host_identifier: hostname, enable_syslog: true }关键参数含义config_plugin/logger_plugin配置与日志的插件类型这里均为filesystem即从本地文件读取配置、向本地目录写日志logger_path日志输出目录/var/log/osqueryschedule_splay_percent调度抖动百分比10%用于打散各端点的查询执行时刻避免大批端点同时发起查询造成服务器与网络峰值events_expiry事件过期时间秒控制事件表中陈旧事件的保留disable_events/disable_audit事件框架与 Linux audit 审计是否禁用需保持false以启用process_events、socket_events等事件表host_identifier主机标识方式hostname用于在日志中区分端点enable_syslog启用 syslog 采集把日志转发到集中式 syslog 管道。5.2 schedule按需执行的调度查询schedule: { process_monitor: { query: SELECT pid, name, path, cmdline, uid, parent FROM processes WHERE on_disk 0;, interval: 300, description: Detect processes running without on-disk binary (fileless) }, listening_ports: { query: SELECT DISTINCT p.name, p.path, lp.port, lp.protocol, lp.address FROM listening_ports lp JOIN processes p ON lp.pid p.pid WHERE lp.port ! 0;, interval: 600, description: Monitor listening network ports }, persistence_check: { query: SELECT name, path, source FROM startup_items;, interval: 3600, description: Monitor persistence mechanisms }, installed_packages: { query: SELECT name, version, source FROM deb_packages;, interval: 86400, description: Daily software inventory }, users_and_groups: { query: SELECT u.username, u.uid, u.gid, u.shell, u.directory FROM users u WHERE u.uid 1000;, interval: 3600 }, crontab_monitor: { query: SELECT * FROM crontab;, interval: 3600, description: Monitor scheduled tasks }, suid_binaries: { query: SELECT path, username, permissions FROM suid_bin;, interval: 86400, description: Detect SUID binaries } }调度间隔的选择遵循查询成本越高、间隔越长的原则轻量查询如process_monitor每 300 秒执行更频繁重量查询如软件清单、SUID 扫描每天执行一次。5.3 packs按场景打包的查询集合packs: { incident-response: /usr/share/osquery/packs/incident-response.conf, ossec-rootkit: /usr/share/osquery/packs/ossec-rootkit.conf, vuln-management: /usr/share/osquery/packs/vuln-management.conf }Pack 是一组针对特定场景应急响应、rootkit 检测、漏洞管理预打包的查询集合通过路径引用即可整体加载便于按需启用与复用。六、威胁猎杀 SQL可直接复用的检测查询SKILL.md 给出了 6 条生产级威胁猎杀查询此处完整保留并逐条说明其检测意图1. 检测无磁盘镜像的文件型进程潜在 fileless 恶意软件SELECT pid, name, path, cmdline FROM processes WHERE on_disk 0;2. 查找非已知服务监听端口SELECT lp.port, lp.protocol, p.name, p.path FROM listening_ports lp JOIN processes p ON lp.pid p.pid WHERE lp.port NOT IN (22, 80, 443, 3306, 5432);3. 检测未授权 SSH 密钥SELECT * FROM authorized_keys WHERE NOT key LIKE %admin-team%;4. 查找最近 24 小时被修改的系统二进制SELECT path, mtime, size FROM file WHERE path LIKE /usr/bin/% AND mtime (strftime(%s, now) - 86400);5. 检测连接外网 IP 的进程排除 RFC1918 私网地址SELECT DISTINCT p.name, p.path, pn.remote_address, pn.remote_port FROM process_open_sockets pn JOIN processes p ON pn.pid p.pid WHERE pn.remote_address NOT LIKE 10.% AND pn.remote_address NOT LIKE 172.16.% AND pn.remote_address NOT LIKE 192.168.% AND pn.remote_address ! 127.0.0.1 AND pn.remote_address ! 0.0.0.0;6. Windows检测未签名运行的可执行文件SELECT p.name, p.path, a.result AS signature_status FROM processes p JOIN authenticode a ON p.path a.path WHERE a.result ! trusted;需要说明的是第 5 条中的process_open_sockets与第 6 条中的authenticode均属于事件/扩展表需按 SKILL.md 中Common Pitfalls所述确保事件框架处于启用状态--disable_eventsfalse才能正常返回数据。七、FleetDM 集中管理与 agent 注册参数在 SKILL.md 中FleetDM 部署模式下agent 侧通过以下参数注册到 Fleet 服务器--tls_hostnamefleet.corp.com --tls_server_certs/etc/osquery/fleet.pem --enroll_secret_path/etc/osquery/enroll_secret--tls_hostnameFleet 服务器地址agent 的注册与配置拉取均经 TLS 通道完成--tls_server_certsTLS 服务端证书用于验证 Fleet 服务器身份、防止中间人--enroll_secret_path注册密钥文件路径agent 凭此完成首次注册enrollment。结合 workflows.md 中的Workflow 1: Osquery Fleet Deployment完整的企业级部署路径为[Install FleetDM server] → [Generate enrollment secret] → [Package osquery with fleet config] → [Deploy to pilot group] → [Verify enrollment and scheduled queries] → [Deploy to production] → [Create dashboards from query results] → [Ongoing monitoring]即先在小规模试点组验证注册与调度查询正常再推广到生产并在落地后基于查询结果建设监控大盘。八、威胁猎杀工作流从假设到检测规则同样来自 workflows.md 的Workflow 2: Threat Hunt with Osquery把威胁猎杀规范化为可重复的闭环[Define hypothesis] → [Write SQL query targeting hypothesis] → [Execute via FleetDM live query across fleet] → [Analyze results] → [Investigate anomalies] → [Document findings] → [Create scheduled detection if recurrent]核心思想是先提出假设如是否存在主机在被攻破后对外回连再编写针对性的 SQL通过 FleetDM 的 live query 对全舰队执行分析结果、调查异常最后把反复出现的告警固化为调度检测规则实现从一次性的猎杀到持续检测的演进。九、配套脚本结果解析与自动化审计仓库为该技能提供了两个可直接运行的 Python 脚本是理解 osquery 数据消费链路的最佳代码佐证。9.1 process.py差分日志解析器该脚本解析 osquery 的结果日志JSON lines 格式parse_osquery_results()逐行读取日志文件解析每条 JSON 记录analyze_results()统计各查询执行次数、上报主机数并区分action added新增条目与action removed消失条目generate_report()输出包含total_entries、queries_executed、hosts_reporting、new_items_detected、recent_additions的 JSON 报告。运行方式python3 process.py osqueryd.results.log输出示例Entries: 120 | New items: 3。这正是差分结果Differential Results机制的消费端实现——osquery 默认只记录两次查询之间的变化因此added/removed两个动作就构成了变更检测的核心信号。9.2 agent.py端点审计代理该脚本内置 10 条安全查询SECURITY_QUERIES覆盖监听端口、SUID 二进制、crontab、SSH 密钥、登录用户、内核模块、高 CPU 进程、Docker 容器、浏览器扩展、启动项等维度并支持# 运行全部审计查询 python3 agent.py # 仅运行指定查询并保存报告 python3 agent.py --queries suid_binaries crontab_entries --output audit.json # 关联 Fleet 服务器检查主机注册状态 python3 agent.py --fleet-url https://fleet.corp.com --api-token TOKEN其中run_osquery()与check_fleet_status()分别封装了本文第三节与第四节的 CLI 调用与 Fleet API 调用两者组合即构成本地采集 集中管理的完整链路。十、常见坑与性能建议SKILL.md 汇总了四条部署中最常踩的坑查询性能涉及大表全扫描的复杂查询会拖累端点性能。应善用 WHERE 子句缩小扫描范围并用EXPLAIN评估查询成本后再上线。调度间隔过激进重查询若每 60 秒执行一次会造成 CPU 尖峰。大多数查询应使用 3003600 秒的间隔。未启用差分模式不用差分日志时osquery 每个周期都会输出全部结果数据量巨大差分模式只记录两次执行之间的变化显著降低日志体积与存储成本。缺少事件表process_events、socket_events等事件表依赖事件框架需通过--disable_eventsfalse显式开启否则相关猎杀查询会返回空结果。十一、关键概念速查表术语定义Osquery开源端点代理将操作系统状态以 SQL 表的形式暴露供查询Schedule按设定间隔周期性执行并记录结果的查询Pack面向特定场景应急响应、合规分组的查询集合FleetDM开源的 osquery 舰队集中管理平台差分结果Differential Resultsosquery 仅记录两次查询执行间的变化从而降低数据量十二、合规与标准映射standards.md 将该技能与主流合规框架关联起来NIST SP 800-53 SI-4System Monitoringosquery 提供端点可见性能力支撑系统监控控制项落地CIS Control 1Enterprise Asset Inventoryosquery 的软件/硬件清单查询支撑企业资产盘点CIS Control 2Software Inventoryosquery 的包/进程查询支撑软件清单管理。同时SKILL.md 的 front-matter 将该技能映射到 MITRE ATTCK 的 T1547.001启动项、T1053.005计划任务、T1543.003服务、T1057进程发现、T1071.001应用层协议等技术以及 NIST CSF 的 PR.PS-01、PR.PS-02、DE.CM-01、PR.IR-01 控制项可作为落地检测覆盖度评审的依据。十三、从 API 参考到完整部署的落地路径综合以上内容一个从零到可运营的 osquery 端点监控体系可按下述顺序落地按第三节的表格在 macOS/Ubuntu/Windows 端点安装 osquery参考第五节编写并校验osquery.confosqueryctl config-check先让守护进程按 schedule 落盘日志将osqueryd.results.log交给 process.py 验证差分日志解析确认变更检测可用引入 FleetDM生成 enrollment secret按第七节参数配置 agent 完成注册通过 Fleet API第四节实现主机状态编程化巡检并可借助 agent.py 的--fleet-url参数快速获取全舰队健康快照基于第六节的猎杀 SQL 开展假设驱动的威胁狩猎并按第八节工作流把高价值检测固化为调度查询最后按 template.md 中的部署模板记录版本、Fleet 服务器、目标端点与签名信息沉淀为可审计的运维资产。需要强调的是osquery 属于周期性与按需查询机制不适用于实时告警场景——实时检测应交给 EDR 等专用方案这也是 SKILL.md 中明确的使用边界。将 osquery 定位为高性价比的端点状态可见性层与 EDR、SIEM 形成互补才能最大化其价值。【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价