deploying-osquery-for-endpoint-monitoring
部署和配置 osquery,使用基于 SQL 的查询对运行进程、开放端口、已安装软件和系统配置进行实时端点监控。 适用于构建端点状态可见性、跨部署范围进行威胁狩猎或实施合规监控的场景。
Best use case
deploying-osquery-for-endpoint-monitoring is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
部署和配置 osquery,使用基于 SQL 的查询对运行进程、开放端口、已安装软件和系统配置进行实时端点监控。 适用于构建端点状态可见性、跨部署范围进行威胁狩猎或实施合规监控的场景。
Teams using deploying-osquery-for-endpoint-monitoring should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/deploying-osquery-for-endpoint-monitoring/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How deploying-osquery-for-endpoint-monitoring Compares
| Feature / Agent | deploying-osquery-for-endpoint-monitoring | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
部署和配置 osquery,使用基于 SQL 的查询对运行进程、开放端口、已安装软件和系统配置进行实时端点监控。 适用于构建端点状态可见性、跨部署范围进行威胁狩猎或实施合规监控的场景。
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 部署 osquery 进行端点监控
## 使用场景
在以下情况下使用本技能:
- 在 Windows、macOS 和 Linux 端点上部署 osquery 以实现全部署范围的可见性
- 使用 osquery 的 SQL 接口构建威胁狩猎查询
- 监控端点合规性(已安装软件、开放端口、运行服务)
- 将 osquery 数据与 SIEM 或 Kolide/Fleet 集成以进行集中管理
**不适用于**实时告警(osquery 是周期性/按需查询;实时检测请使用 EDR)。
## 前置条件
- 适用于目标操作系统的 osquery 包(https://osquery.io/downloads)
- 用于企业部署的 Fleet 管理服务器(Kolide Fleet 或 FleetDM)
- 用于代理到服务器安全通信的 TLS 证书
- 用于 osquery 结果日志的日志聚合管道(Filebeat、Fluentd)
## 操作流程
### 步骤 1:安装 osquery
```bash
# Ubuntu/Debian
export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $OSQUERY_KEY
add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
apt-get update && apt-get install osquery -y
# Windows(MSI)
# 从 https://osquery.io/downloads/official 下载
msiexec /i osquery-5.12.1.msi /quiet
# macOS
brew install osquery
```
### 步骤 2:配置 osquery
```json
// /etc/osquery/osquery.conf(Linux/macOS)或 C:\ProgramData\osquery\osquery.conf
{
"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"
},
"schedule": {
"process_monitor": {
"query": "SELECT pid, name, path, cmdline, uid, parent FROM processes WHERE on_disk = 0;",
"interval": 300,
"description": "检测无磁盘二进制文件运行的进程(无文件恶意软件)"
},
"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": "监控监听的网络端口"
},
"persistence_check": {
"query": "SELECT name, path, source FROM startup_items;",
"interval": 3600,
"description": "监控持久化机制"
},
"installed_packages": {
"query": "SELECT name, version, source FROM deb_packages;",
"interval": 86400,
"description": "每日软件清单"
},
"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": "监控计划任务"
},
"suid_binaries": {
"query": "SELECT path, username, permissions FROM suid_bin;",
"interval": 86400,
"description": "检测 SUID 二进制文件"
}
},
"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"
}
}
```
### 步骤 3:威胁狩猎查询
```sql
-- 检测无磁盘二进制文件运行的进程(潜在的无文件恶意软件)
SELECT pid, name, path, cmdline FROM processes WHERE on_disk = 0;
-- 查找与已知服务无关的监听端口
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);
-- 检测未经授权的 SSH 密钥
SELECT * FROM authorized_keys WHERE NOT key LIKE '%admin-team%';
-- 查找最近修改的系统二进制文件
SELECT path, mtime, size FROM file
WHERE path LIKE '/usr/bin/%' AND mtime > (strftime('%s', 'now') - 86400);
-- 检测连接到外部 IP 的进程
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';
-- 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';
```
### 步骤 4:部署 FleetDM 进行集中管理
```bash
# FleetDM 提供集中化的 osquery 管理
# 部署 FleetDM 服务器,配置代理向其上报
# 代理使用 TLS 注册并从 Fleet 获取配置
# 代理连接 Fleet 的配置:
# --tls_hostname=fleet.corp.com
# --tls_server_certs=/etc/osquery/fleet.pem
# --enroll_secret_path=/etc/osquery/enroll_secret
```
## 关键概念
| 术语 | 定义 |
|------|------|
| **osquery** | 开源端点代理,将操作系统状态暴露为可查询的 SQL 数据表 |
| **Schedule(计划)** | 按定义间隔运行并记录结果的周期性查询 |
| **Pack(包)** | 为特定使用场景(IR、合规)分组的相关查询集合 |
| **FleetDM** | 开源 osquery 部署管理平台 |
| **差异结果** | osquery 只记录查询执行之间的变更,减少数据量 |
## 工具与系统
- **osquery**:https://osquery.io/ - 端点可见性代理
- **FleetDM**:https://fleetdm.com/ - 集中化部署管理
- **Kolide**:基于云的 osquery 管理,带 Slack 集成
- **osquery-go**:用于 osquery 扩展的 Go 客户端库
## 常见误区
- **查询性能问题**:包含大型表扫描的复杂查询会影响端点性能。使用 WHERE 子句并用 `EXPLAIN` 测试查询开销。
- **计划间隔太激进**:每 60 秒运行繁重查询会导致 CPU 峰值。大多数查询使用 300-3600 秒间隔。
- **未使用差异模式**:不使用差异日志记录时,osquery 每次间隔都会记录所有结果。差异模式只记录变更。
- **缺少事件数据表**:某些 osquery 数据表需要启用事件框架(process_events、socket_events)。使用 `--disable_events=false` 启用。Related Skills
performing-paste-site-monitoring-for-credentials
使用自动化抓取和关键词匹配技术,监控 Pastebin 和 GitHub Gists 等粘贴站点上的泄露凭证、API 密钥和敏感数据转储,实现早期泄露检测
performing-endpoint-vulnerability-remediation
通过基于风险评分对 CVE 进行优先级排序、部署补丁、应用配置变更和验证修复 来执行端点漏洞修复。适用于修复漏洞扫描发现的问题、响应严重 CVE 公告 或维护端点合规性与补丁管理 SLA 的场景。适用于涉及漏洞修复、CVE 补丁、 端点漏洞管理或安全修复部署的请求。
performing-endpoint-forensics-investigation
对受损端点执行数字取证调查,包括内存获取、磁盘镜像、工件分析和时间线重建。 适用于调查安全事件、为法律诉讼收集证据或分析端点受损范围的场景。 适用于涉及端点取证、内存分析、磁盘取证或事件调查的请求。
performing-dark-web-monitoring-for-threats
暗网威胁监控涉及系统性扫描 Tor 隐藏服务、地下论坛、粘贴站点和暗网市场,以识别针对组织的威胁,包括泄露凭据、数据泄露、威胁行为者讨论、漏洞利用工具和预谋攻击。
performing-brand-monitoring-for-impersonation
监控域名、社交媒体、移动应用和暗网渠道中的品牌仿冒攻击,检测针对组织的网络钓鱼活动、虚假站点和未授权品牌使用行为。
monitoring-darkweb-sources
监控暗网论坛、市场、粘贴站点和勒索软件泄露站点,寻找组织资产提及、泄露凭据、威胁攻击和威胁行为者通信,提供早期预警情报。当建立暗网监控覆盖、调查特定数据泄露声明,或用暗网背景丰富事件调查时使用。适用于涉及暗网 OSINT、泄露站点监控、凭据暴露、Recorded Future 暗网或 Tor 隐藏服务情报的请求。
implementing-security-monitoring-with-datadog
使用 Datadog 的云安全信息和事件管理(Cloud SIEM)、日志分析和威胁检测能力实施安全监控,识别并响应整个云基础设施中的安全事件。
implementing-privileged-session-monitoring
监控和审计特权用户会话,包括 SSH、RDP 和数据库访问。 跟踪会话元数据、记录命令执行、检测异常活动, 并为 PAM 合规性执行会话策略。
implementing-osquery-for-endpoint-monitoring
部署 osquery 计划查询进行持续终端监控,涵盖进程清单、网络连接、文件完整性和持久化机制。 生成包含查询包的 osquery.conf,配置差异结果日志记录,并分析查询结果以检测 可疑进程、未授权监听端口和系统目录中的文件修改。
implementing-file-integrity-monitoring-with-aide
配置 AIDE(高级入侵检测环境)进行文件完整性监控,包括基线创建、定期完整性检查、变更检测和告警
implementing-endpoint-dlp-controls
实施端点数据丢失防护(DLP)控制,检测并防止敏感数据通过电子邮件、USB、 云存储和打印进行泄露。适用于部署 DLP 代理、创建内容检查策略或防止 端点上未授权数据移动的场景。适用于涉及 DLP、数据泄露防护、内容检查 或端点敏感数据保护的请求。
implementing-endpoint-detection-with-wazuh
部署并配置 Wazuh SIEM/XDR 进行终端检测,包括 Agent 管理、自定义解码器和规则 XML 创建、通过 Wazuh REST API 查询告警,以及自动化响应动作。