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

osquery:用 SQL 查询你的操作系统 文章目录osquery用 SQL 查询你的操作系统怎么用为什么值得看扩展性生态适合谁osquery用 SQL 查询你的操作系统Facebook 早年开源的 osquery 项目到现在累计了 2.3 万 Star。这工具做的事情很直接把操作系统的各种信息变成数据库表让你用 SQL 来查。我第一次看到这想法的时候觉得有点奇怪操作系统跟 SQL 有什么关系用了之后才发现确实好用。进程列表、网络连接、内核模块、浏览器插件这些平时要用不同命令才能查到的东西现在一条 SELECT 搞定。怎么用osquery 有两种用法。第一种是交互式查询。装好之后直接运行 osqueryi进入一个 SQL 终端想查什么就写什么 SQL。比如列出所有用户SELECT*FROMusers;看看哪些进程的可执行文件已经被删了SELECT*FROMprocessesWHEREon_disk0;查监听在所有网卡上的进程SELECTDISTINCTprocesses.name,listening_ports.port,processes.pidFROMlistening_portsJOINprocessesUSING(pid)WHERElistening_ports.address0.0.0.0;第二种是定时监控。用 osqueryd 设定查询计划定期执行把结果存下来。适合做安全审计和异常检测。比如定时检查 ARP 缓存有没有异常就能发现局域网内的 ARP 欺骗。两种方式覆盖了日常运维和安全监控的需求。还可以通过 Thrift API 集成到自己的工具里。为什么值得看做安全的人应该对这工具不陌生。Facebook 当初开源它就是为了帮运维和安全团队快速摸清系统状态。传统的做法是查进程用 ps查网络用 netstat查用户看 /etc/passwd每个信息都要记不同的命令。osquery 把这些全统一成了 SQL 接口学一次就够了。而且它跨平台。Linux、macOS、Windows 都支持表结构一致。如果你管的机器跑了不同系统用 osquery 可以写一套查询覆盖所有平台不用每种系统单独适配。扩展性osquery 的表是通过插件机制实现的。官方已经提供了覆盖进程、文件、网络、硬件等方面的表社区还在持续添加新表。如果你需要查某个官方没覆盖的信息可以自己写插件扩展。这个设计让 osquery 不只是个查询工具而是一个可扩展的系统信息平台。生态围绕 osquery 已经形成了一套生态。Fleet、Kolide、OSCTRL 这些项目都是基于它做的设备管理平台可以集中管理大量主机的安全状态。这说明 osquery 作为底层引擎是经得起考验的。大公司在用开源社区也在用。适合谁如果你做安全运维、系统监控或者经常需要批量检查机器状态值得花时间学一下。SQL 语法本身门槛不高osquery 的文档也齐全。对于个人用户来说偶尔用 osqueryi 查查自己机器上跑了什么进程、有没有异常连接也比翻各种系统工具方便。项目支持从源码构建也可以直接下载安装包。三个主流系统都有对应的安装方式上手不难。没有异常连接也比翻各种系统工具方便。项目支持从源码构建也可以直接下载安装包。三个主流系统都有对应的安装方式上手不难。