osquery:用 SQL 查询你的操作系统

安全运维圈子里有个经典痛点:想知道一台机器上跑了什么进程、开了哪些端口、装了什么内核模块,得一个一个命令敲,不同系统还不一样。osquery 把这个问题解决得很彻底,它把整个操作系统暴露成一个 SQL 数据库,你写查询语句就行

项目拿下 2.3 万 Star,最早由 Facebook 发起,现在是 Linux 基金会下的开源项目,支持 Linux、macOS 和 Windows。

正文顶部截图

怎么用?

装好之后打开 osqueryi 命令行 shell,直接写 SQL:

SELECT * FROM processes WHERE on_disk = 0;

这条语句查出所有可执行文件不在磁盘上的进程,安全分析里经常用。再比如查所有监听 0.0.0.0 的进程:

SELECT DISTINCT processes.name, listening_ports.port, processes.pid
  FROM listening_ports JOIN processes USING (pid)
  WHERE listening_ports.address = '0.0.0.0';

对有 SQL 基础的人来说,上手成本几乎为零。操作系统里的进程、用户、网络连接、硬件事件、文件哈希,全部映射成 SQL 表,可以直接 JOIN、过滤、聚合。

不只是命令行工具

osquery 支持三种使用方式:交互式查询、定时调度(osqueryd)、以及通过 Thrift API 集成到自研系统。很多安全团队用它做端点监控,配合 Fleet 或 Zentral 这类集群管理工具,可以对成百上千台机器做统一查询和策略下发。

SQL 表通过插件和扩展 API 实现,社区已经贡献了大量表,覆盖了操作系统大部分关键信息。想自己加表也可以,接口设计得比较清晰。

README区域截图

适合谁用

做安全运维的,这是刚需工具。资产盘点、入侵检测、合规审计,都绕不开它。普通开发者如果想了解自己机器的运行状态,用 osquery 也比翻各种系统命令方便得多。

项目用 C++ 写的,性能好,资源占用低。想从源码编译,官方有详细文档。不想折腾的话,官网直接下安装包就行。

2.3 万 Star 不是白来的,osquery 在安全工具链里的位置已经很稳固了。

.3 万 Star 不是白来的,osquery 在安全工具链里的位置已经很稳固了。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐