如何在 Debian 10 上安装 Osquery
在本 Osquery 教程中,我们将首先讨论 Osquery 是什么、它是如何工作的、如何在 Debian 上安装它、快速介绍 SQL,最后构建一个详细说明如何将 Osquery 与 ELK Stack 集成的项目。
为了使本教程简洁,我们不会深入探讨 ELK 堆栈的“内容”和“如何”。相反,我们将快速、直接地讨论如何将它与 Osquery 一起使用。我们还将假设您具有 SQL 的应用知识——尽管提供了指南)。
什么是 Osquery?
Osquery 由 Facebook 开发,是一款跨平台开源工具,用于使用基于 SQL 的查询来查询和监控系统。
Osquery 可以与系统交互并收集详细信息,例如内存使用情况、运行进程、加载的内核模块、硬件事件、网络连接等。该工具可以在所有系统上运行,包括 Windows、Linux、Mac 和 BSD。
使用 Osquery,您可以创建显示有关系统的信息的 SQL 查询,并使用此信息来监视和分析收集的数据。
如何在 Debian 系统上安装 Osquery
在 Debian 系统上安装 Osquery 非常简单,尽管它在主 Debian 存储库中不可用,但添加它非常简单。
让我们看一下在 Debian 上安装 Osquery 的第一种方法:
第一步也是最简单的一步是从主页下载 deb 安装程序:
https://pkg.osquery.io/deb/osquery_4.6.0-1.linux_amd64.deb
sudo dpkg -i osquery_4.6.0-1.linux_amd64.deb
我们推荐上述方法,因为 deb 软件包对大多数 Debian 发行版几乎没有依赖性。但是,如果您想添加到 apt,请使用下一个方法。
输入以下命令从存储库安装 Osquery。
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $OSQUERY_KEY
sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
sudo apt-get update
sudo apt-get install osquery
如何在 Debian 10 上使用 Osquery
在深入构建自动化脚本和使用 ELK 堆栈之前,让我们讨论一下本地系统上的一些简单的 Osquery 用法。
Osquery 具有三个主要组件,可用于与 API 交互。
Osquery:第一个组件是 osqueryi,一个交互式 shell 会话。 osqueryi 模式是完全独立的,不需要与 Osquery — Osquery 守护进程交互。使用 osqueryi 模式,您可以交互式地执行 SQL 查询并类似于 SQL shell 来探索当前系统。
注意: Osquery 尊重用户空间,如果您以常规用户模式运行 shell,您将无法访问特权表。
Osqueryd:另一个组件是osqueryd,它是Osquery 守护进程,用于在后台安排查询并记录状态更改。该守护进程的工作原理是聚合在特定时间范围内执行的查询结果,并生成用于比较每个查询的状态更改的日志。
Osqueryctl: 第三个组件是 Osqueryctl,一个用于测试部署配置的帮助程序脚本。您还可以将其用作 Osquery 服务管理器,允许您启动和停止服务。
Osquery 开箱即用,只不过是一个查询系统信息的简单工具。但是,当您组合查询来构建排序良好且聚合的数据时,它就不仅仅是一个查询工具了。
为了开始滚动,让我们从基础知识开始了解它是如何工作的:
第一步是获取命令帮助:
此命令将显示 Osquery 守护程序帮助,以及您可以在 shell 中使用的参数列表。
与 Osquery 交互的下一个也是最简单的方法是使用 osqueryi 会话。例如,如果您执行不带参数的命令 osqueryi,您将进入类似 SQL 的 shell:
在 osqueryi shell 内,您可以执行命令和 SQL 语法来选择有关系统的特定信息。
要查看 osqueryi shell 内的帮助模式,请使用以下命令:
执行此命令应显示有关 Osquery 会话的帮助。
由于 Osquery 是系统的关系数据库映射器,因此它有一个表列表,您可以使用 SQLite 查询来选择信息。
注意: Osquery 查询是基于 SQLite 的。如果 Osquery 没有提供足够的信息,您可以参考其文档:
https://www.sqlite.org/index.html
在 osqueryi shell 中,使用以下命令:
此命令列出包含系统信息的可用表。
从那里,您可以从可用模式中选择信息。例如,查看DNS解析器的信息。
根据您查询的模式,您将获得大量信息,并且可能需要使用 SQL 查询组合来理解它。
您可以从以下资源了解有关 Osquery 表和架构的更多信息:
基本 SQL 指南
Osquery 通过使用 SQLite 语法查询来收集有关系统的信息。我不知道 Facebook 为什么选择这条路线,但它确实有效。
这个简单的教程将讨论 SQLite 基础知识,以解释如何使用它与 Osquery 交互。
注意:这绝不是 SQL 或相关语言的指南。有关更多特定于语言的指南,请参阅主要文档。
从表中选择特定条目
使用基本的 SQLite 语法,我们可以使用 SELECT 语句从表中选择特定信息,如下所示:
添加 SQL 函数
Osquery 还支持 SQL 函数,允许您使用从查询收集的数据执行各种操作。
例如,计数功能可以让您查看系统中的用户数量。
该命令将返回系统中的用户总数。
Osquery 使用 SQL 语法的能力是一个巨大的优势,可以帮助您构建复杂的数据集,从而对系统进行更深入的分析。它还创建了一个桥梁,使用 PostgreSQL、MySQL 等引擎的 SQL 开发人员可以轻松适应。
https://osquery.readthedocs.io/en/stable/introduction/sql/
一个有趣的副业项目
当您进一步探索 Osquery 并尝试它时,您会发现它是一个全面而强大的工具,可以轻松创建专门用于监视系统的项目。
由于本教程的范围,并且为了避免让初学者感到困惑,我们不会深入研究复杂的项目。话虽如此,以下是您可以使用 Osquery 构建的一些工具:
使用 Logstash 收集日志
使用 Elasticsearch、Logstash 和 Kibana 构建系统监控仪表板。
使用 Kolide 构建 Osquery 舰队
https://osquery.readthedocs.io/en/stable/deployment/log-aggregation/https://www.elastic.co/guide/en/beats/filebeat/7.10/filebeat-module-osquery.html https:// github.com/fleetdm/fleet
结论
在本教程中,我们了解了 Osquery 的基础知识,包括如何使用它来收集系统信息。
虽然并不全面,但本指南旨在为您提供 Osquery 的快速、简单的介绍;它绝不是一个参考指南。
请随意使用其他资源来更深入地了解我们在本教程中讨论的各种概念。