在 Linux 上使用 SQL 和 osquery 检查硬件在 Linux 上使用 SQL 和 osquery 检查硬件在 Linux 上使用 SQL 和 osquery 检查硬件在 Linux 上使用 SQL 和 osquery 检查硬件
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

在 Linux 上使用 SQL 和 osquery 检查硬件

您是否一直忘记您几乎不使用的晦涩硬件命令的语法? osquery 应用程序允许您使用标准 SQL 命令查询 Linux 计算机的硬件、用户和性能。

osquery应用程序

osquery 应用程序是 osquery 基金会的免费开源程序。它收集有关您的 Linux 计算机的大量信息,并使其可以作为伪数据库访问。该数据库包含许多包含不同类别信息的表。可以使用简单的结构化查询语言 (SQL) 命令检索表中的数据。

osquery可以交互使用,也可以通过配置文件进行控制,作为守护进程运行。作为守护进程运行它允许您安排查询。 osquery 是一个非常灵活、复杂的应用程序。它包含的内容远远超过一篇介绍性文章所能涵盖的内容。如果您想研究它的许多其他选项,那么优秀的文档是第一个转向的地方。

我们将看看交互式地使用 osquery。

安装 osquery

大多数 Linux 发行版在其官方存储库中不包含 osquery。这不存在问题,我们可以从osquery下载页面下载安装包。

对于 Ubuntu,下载“.deb”包。这很可能会下载到您的“下载”目录。将目录更改为“下载”目录,然后使用 dpkg 命令安装“.deb”文件。将示例中的文件名替换为您下载的文件名。

cd Downloads
sudo dpkg -i osquery_4.6.0-1.linux_amd64.deb

对于 Fedora,下载“.rpm”文件。在您的硬盘上找到该文件并使用 rpm 包进行安装。我们正在使用 -U(更新选项。如果您的系统上尚未安装应用程序,则安装该应用程序,如果已安装,则对其进行升级。

sudo rpm -U osquery-4.6.0-1.linux.x86_64.rpm

在 Manjaro 上,osquery 在默认存储库中。我们可以使用 pacman 安装它。

sudo pacman -Sy osquery

您可以通过使用 --version 选项启动 osquery 来测试 osquery 是否已正确安装并找出您正在使用的版本。请注意,命令末尾有一个“i”。它是“osqueryi”而不是“osquery”。 “i”代表互动。

osqueryi --version

osquery 交互式 Shell

要以交互模式启动 osquery,请使用 osqueryi 命令。

osqueryi

osquery 交互式 shell 启动并出现“osquery>”提示符。

您将在此处键入 SQL 和点命令。点命令是您发出的与 osquery shell 交互的命令。除了一两个例外,点命令不会返回有关您的计算机的信息。他们的名字来自点或句点“。”出现在所有点命令的开头。

您可以使用“向上箭头”键滚动浏览以前使用过的命令,表格名称可以使用制表符完成。

要获取点命令列表和每个命令的快速描述,请在“osquery>”提示符下使用 .help 命令。

.help

要关闭 osquery 会话,您可以使用 .exit 或 .quit。

.quit

使用 SQL 命令

osquery 将它可以报告的系统信息呈现为数据库中的表。为了能够查询该数据库,您需要知道表的名称以及它们各自包含的字段。 .tables 命令将为您列出表格。

.tables

有很多桌子。您可以前后滚动列表并查找您感兴趣的内容。假设我们想了解更多关于 uptime 表的信息。 .schema 命令将列出表的字段名称和每个字段包含的数据类型。

.schema uptime

现在我们知道的足够多了,可以发出我们的第一个 SQL 语句。我们将从 uptime 表的 days、hours 和 minutes 列中选择数据。请记住这是 SQL,因此请使用分号“;”来终止您的命令。

select days, hours, minutes from uptime;

如果我们想查看所有列,我们可以使用星号“*”作为代表所有列名称的快捷方式。但是有一个更快的点命令。键入 .all 后跟表名以获得相同的结果。 (请记住,点 命令 末尾没有分号“;”。)

select * from uptime;
.all uptime

从表中选择数据

用户表

要查看所有用户名的列表,我们可以查询 users 表。

select username from users;

您可以按结果中的任何列对数据进行排序。在这个例子中,我们只有一列,但我们仍然可以对数据进行排序。

select username from users order by username;

如果我们想要查看用户名的一个子集——可能是特定长度的子集——我们可以在 SQL 语句中添加更多的子句。

select username, directory from users where length(username)=4 order by username;

也许我们只对一个用户名感兴趣。

select username, directory, shell from users where username="mary";

进程表

我们可以将相同的原则应用于任何表中的数据。如果我们想找出一个gedit进程的详细信息,我们可以这样搜索它:

select pid, name, state, start_time from processes where name="gedit";

state 列中的“S”表示可中断睡眠。

logged_in_users 表

与其像以前那样查看已配置用户的列表,也许我们对现在登录的用户更感兴趣。

select user, host, time from logged_in_users;

要排除非人类用户,请使用“not like”SQL 子句。 tty 列包含用户 tty 的详细信息或波浪号“~”(如果未使用 tty)。

select user, host, time from logged_in_users where tty not like "~";

我们可以看到用户名为“dave”的用户登录了两次。

host 列中的“:0”表示连接到计算机的屏幕和键盘。因此,该用户应该身在现场。使用该用户名的另一个登录会话来自另一个 IP 地址。

这可能需要调查。如果他们在大楼里,他们怎么能远程访问计算机呢?其中一个会话可能是欺诈性的。

os_version 表

要了解有关 Linux 版本的详细信息,请查询 os_version 表。

select name, major, minor, codename from os_version;

interface_addresses 表

interface_addresses 表包含有关您的网络接口的信息。

select interface, address from interface_addresses order by interface;

memory_info 表

memory_info 表包含有关计算机内存量及其使用方式的信息。

select memory_total, memory_free, cached from memory_info;

组表

要快速查看系统上配置的组,请在 groups 表上使用 .all 点命令。

.所有团体

要查看与用户关联的组的详细信息,请过滤掉组 ID 大于或等于 1000 的组。

select * from groups where gid>=1000;

usb_devices 表

如果无法识别通用串行总线设备,您可以检查此表以查看操作系统是否正在检测它。

select usb_address, usb_port, version, model from usb_devices;

deb_packages 表

deb_packages 表包含已安装在您的计算机上的所有“.deb”软件包的详细信息。还有一个用于 Fedora 和其他 Red Hat 衍生产品的 rpm_packages 表。没有报告其他包管理系统。

这个测试机上有很多包。结果限制为 10 条记录。

select name, version, source from deb_packages limit 10;

system_info 表

system_info 表中包含大量信息。我们只是要验证此计算机中安装的中央处理器 (CPU) 的品牌。

select cpu_brand from system_info;

冰山一角

osquery 将 150 多个表中的信息置于您的指尖。即使您对 SQL 了解不多,您也会发现很容易掌握高效使用这个优秀应用程序所需的少量知识。

©2015-2025 艾丽卡 support@alaica.com