本页内容
- 先决条件
- 安装 MySQL Server
- 安装 Redis Server
- 设置 MySQL 数据库和用户
- 下载 Fleet Osquery Manager
- 配置 Fleet Osquery Manager
- 配置 UFW 防火墙
- 配置 Fleet Osquery Manager
- 通过 Orbit Osquery Runtime 添加主机
- 设置 Fleetctl 以管理 Fleet
- 结论
Fleet 是一个开源的 osquery 管理器,可用于维护安全的工作站和服务器,并保持所有设备的准确清单。Fleet 支持可编程的实时查询、流式日志,以及对服务器、容器以及笔记本电脑和本地计算机等设备的实时可见性。
借助 fleet,你可以识别设备上的漏洞。这意味着 fleet 会自动识别过时、易受攻击或已被入侵的软件、应用程序和软件包。此外,fleet 还能识别设备的错误配置以及 MDM 注册问题。Fleet 可用于 IT 行业、安全领域或任何合规性监控设备。
Fleet 还能在单一应用程序中启用并自动化安全工作流。你可以使用 osquery/agent 从多个服务器和设备收集事件,然后将收集到的数据存储在单一位置,可通过 Fleet 仪表板或使用终端通过 fleetctl 进行访问。
在本教程中,你将在 Ubuntu 22.04 服务器上安装 Fleet Osquery Manager。此过程包括在 Ubuntu 系统上安装 MySQL 和 Redis 服务器。最后,你还将学习如何通过 Orbit 将主机添加到 fleet,Orbit 是一个 osquery 运行时和自动更新器,可让你轻松部署 osquery 并管理配置。
先决条件
要开始本教程,你必须具备以下要求:
- 运行 Ubuntu 22.04 的服务器 —— 本示例使用主机名为 ' fleet ' 的 Ubuntu 服务器。
- 具有 sudo/root 管理员权限的非 root 用户。
- 指向服务器 IP 地址的域名 —— 本示例使用域名 ' fleet.howtoforge.local '。
就这样;现在让我们开始 fleet osquery manager 的安装。
安装 MySQL Server
在基本架构中,fleet osquery manager 使用 MySQL 服务器作为后端数据库并存储数据。本指南首先要做的事情是安装 MySQL 服务器、加固 MySQL 安装并设置 MySQL root 密码。
首先,运行以下 apt 命令来更新并刷新你的 Ubuntu 软件包索引。
sudo apt update
然后通过以下 apt 命令安装 MySQL server 软件包。出现提示时,输入 y 确认并按 ENTER 继续。
sudo apt install mysql-server

MySQL 安装完成后,运行以下 systemctl 命令来验证 MySQL 服务器,并确保该服务已启用且正在运行。
sudo systemctl is-enabled mysql
sudo systemctl status mysql
你应该收到类似如下的输出 —— MySQL 服务器已启用,并将在系统启动时自动启动。MySQL 服务器的状态为 running。

接下来,通过以下 'mysql' 命令登录到 MySQL shell。
sudo mysql
运行以下查询来更改 MySQL ' root ' 用户的密码。同时,请务必更改查询中的密码。然后,输入 ' exit ' 退出 MySQL shell。
ALTER USER "root"@"localhost" IDENTIFIED WITH mysql_native_password BY "toor?p4ssw0rd";
exit

接下来,你可以通过以下的 ' mysql_secure_installation ' 命令开始加固 MySQL 服务器。
sudo mysql_secure_installation
当提示输入 MySQL root 密码时,输入你已配置的新密码。然后,你将被问及以下 MySQL 服务器配置:
- 在 MySQL 上设置 VALIDATE PASSWORD 组件?输入 Y 确认。
- 输入你想要使用的密码策略编号。为你的 MySQL 服务器选择你偏好的策略。
- 更改 MySQL root 密码?输入 n 表示否。
- 移除默认的 MySQL 匿名用户?输入 Y。
- 禁用 MySQL root 用户的远程登录?输入 Y。
- 从 MySQL 服务器移除默认的 test 数据库?输入 Y。
- 重新加载表权限以应用更改?输入 Y 确认。
至此,MySQL 服务器已安装,root 密码已配置,并且 MySQL 服务器也已通过 ' mysql_secure_installation ' 命令进行了加固。
安装 Redis Server
默认情况下,fleet osquery manager 使用 Redis 来接收和排队分布式查询的结果、缓存数据等。在此步骤中,你将在 Ubuntu 服务器上安装 Redis。
运行以下 apt 命令开始 Redis 安装。出现提示时,输入 y 确认并按 ENTER 继续。
sudo apt install redis

Redis 安装完成后,运行以下 systemctl 命令来验证 Redis 服务,并确保该服务已启用且正在运行。
sudo systemctl is-enabled redis-server
sudo systemctl status redis-server
你应该收到类似如下的输出 —— ' enabled ' 的输出确认 Redis 服务已启用,并将在系统启动时自动运行。Redis 服务默认状态为 running 。

设置 MySQL 数据库和用户
安装完成 MySQL 服务器和 Redis 后,你现在将创建一个供 fleet 使用的新数据库和用户。
通过以下 'mysql' 命令登录到 MySQL shell。
mysql -u root -p
运行以下查询来创建一个新的 MySQL 数据库和用户。在此示例中,你将创建数据库 fleetdb,用户为 fleetadmin,该用户将用于 flee osquery manager 安装。同时,请务必更改以下查询中的密码。
CREATE DATABASE fleetdb;
CREATE USER fleetadmin@localhost IDENTIFIED BY 'S3curep4ssw0rd--=';
GRANT ALL PRIVILEGES ON fleetdb.* TO fleetadmin@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;

接下来,运行以下查询来验证 MySQL 服务器上的用户列表。你应该收到输出,显示 fleetadmin 用户已添加到 MySQL。
SELECT USER,host FROM mysql.user;

运行以下查询来检查 MySQL 用户 fleetadmin 的权限。你应该收到输出,显示 fleetadmin 拥有访问 fleetdb 数据库的权限。
SHOW GRANTS FOR fleetadmin@localhost;

现在输入 ' quit ' 退出 MySQL shell。至此,你已完成 MySQL 服务器配置,可以开始安装 fleet osquery manager 了。
下载 Fleet Osquery Manager
Fleet osquery manager 以一个单一二进制文件的形式提供,该文件包含以下内容:
- Fleet TLS web 服务器(无需外部 web 服务器,但如需要可支持代理)
- Fleet web 界面
- Fleet 应用管理 REST API
- Fleet osquery API 端点
至于 fleetctl,它是 fleet 的命令行界面,允许你从命令行管理 fleet 部署、配置、集成和报告。
在此步骤中,你将从严方 GitHub 页面下载 fleet 和 fleetctl 二进制软件包。在撰写本文时,fleet 和 fleetctl 的最新版本为 v4.26。
在开始之前,使用以下命令创建一个新系统用户 ' fleet '。
sudo useradd -r -d /opt/fleet -s /usr/sbin/nologin fleet
通过以下 curl 命令下载 fleet 二进制软件包和 fleetctl —— fleet 的命令行界面。
curl -LO https://github.com/fleetdm/fleet/releases/download/fleet-v4.26.0/fleet_v4.26.0_linux.tar.gz
curl -LO https://github.com/fleetdm/fleet/releases/download/fleet-v4.26.0/fleetctl_v4.26.0_linux.tar.gz

下载完成后,通过以下 tar 命令解压 fleet 和 fleetctl 软件包。
tar xf fleet_v4.26.0_linux.tar.gz
tar xf fleetctl_v4.26.0_linux.tar.gz
现在将 ' fleet ' 和 ' fleetctl ' 的二进制文件移动到 ' /usr/local/bin ' 目录。
cp fleet_v4.26.0_linux/fleet /usr/local/bin/
cp fleetctl_v4.26.0_linux/fleetctl /usr/local/bin/

检查系统上当前的 PATH 环境变量。如果 ' /usr/local/bin ' 目录在 PATH 环境变量中可用,你就可以运行 'fleet' 和 'fleetctl' 命令。
echo $PATH
使用以下命令验证 'fleet' 和 'fleetctl' 命令的完整路径。两个二进制文件应该都在 '/usr/local/bin' 目录中可用。
which fleet
which fleetctl
使用以下命令验证 ' fleet ' 和 ' fleetctl ' 的版本。在此示例中,你已安装 fleet 和 fleetctl v4.26 。
fleet version
fleetctl --version

最后,运行以下 ' fleet ' 命令来为你的安装初始化数据库。同时,请务必更改数据库名称、用户和密码等详细信息。这样,你将为 fleet osquery manager 创建必要的表。
fleet prepare db --mysql_address=127.0.0.1:3306 --mysql_database=fleetdb --mysql_username=fleetadmin --mysql_password=S3curep4ssw0rd--=
以下是 fleet 数据库初始化/迁移过程中的输出。

初始化完成后,你应该得到诸如 ' Migrations completed ' 之类的输出。

现在 fleet osquery manager 的数据库已迁移完成。在下一步中,你将配置 fleet 部署。
配置 Fleet Osquery Manager
要部署 fleet,你必须确保拥有经过验证的 SSL/TLS 证书。因此,在开始之前,请确保你拥有一个指向服务器 IP 地址的域名或本地域名,并已生成 SSL/TLS 证书。你可以在本地环境中使用 letsencrypt 或任何证书管理器。
在本示例中,将使用从 Letsencryopt 生成的 SSL/TLS 证书来进行 Fleet Osquery Manager 安装。
运行以下命令创建新目录 '/etc/fleet '、'/etc/fleet/certs' 以及新配置文件 '/etc/fleet/fleet.yml' 和新的服务文件 '/etc/systemd/system/fleet.service' 。
mkdir -p /etc/fleet/certs
touch /etc/fleet/fleet.yml
touch /etc/systemd/system/fleet.service
将你的 SSL/TLS 证书复制到 ' /etc/fleet/certs' 目录。
cp /etc/letsencrypt/live/fleet.howtoforge.local/fullchain.pem /etc/fleet/certs/
cp /etc/letsencrypt/live/fleet.howtoforge.local/privkey.pem /etc/fleet/certs/
将 fleet 配置目录 ' /etc/fleet/certs ' 的所有权更改为用户和用户组 'fleet'。
sudo chown -R fleet:fleet /etc/fleet
接下来,使用以下 nano 编辑器命令打开 fleet 配置文件 '/etc/fleet/fleet.yml'。
nano /etc/fleet/fleet.yml
将以下行添加到文件中。同时,请务必更改以下行中的数据库详细信息(dbname、user 和 password)。
mysql:
address: 127.0.0.1:3306
database: fleetdb
username: fleetadmin
password: S3curep4ssw0rd--=
redis:
address: 127.0.0.1:6379
server:
cert: /etc/fleet/certs/fullchain.pem
key: /etc/fleet/certs/privkey.pem
logging:
json: true
# auth:
# jwt_key: 0iXLJRKhB77puDm13G6ehgkClK0kff6N
完成后保存并退出文件 '/etc/fleet/fleet.yml'。
现在使用以下 nano 编辑器命令打开 fleet 服务文件 '/etc/systemd/system/fleet.service'。
sudo nano /etc/systemd/system/fleet.service
将以下行添加到文件中。这样,你将把 fleet 作为 systemd 服务运行,从而可以通过 systemctl 命令工具轻松管理 fleet。
[Unit]
Description=Fleet Osquery Fleet Manager
After=network.target
[Service]
User=fleet
Group=fleet
LimitNOFILE=8192
ExecStart=/usr/local/bin/fleet serve -c /etc/fleet/fleet.yml
ExecStop=/bin/kill -15 $(ps aux | grep "fleet serve" | grep -v grep | awk '{print$2}')
[Install]
WantedBy=multi-user.target
完成后保存并退出文件。
接下来,运行以下 systemctl 命令重新加载 systemd 管理器并应用更改。
sudo systemctl daemon-reload
之后,使用以下 systemctl 命令工具启动并启用 fleet 服务。fleet 服务将会处于运行并已启用状态。
sudo systemctl start fleet
sudo systemctl enable fleet

运行以下 systemctl 命令工具来验证 fleet 服务。
sudo systemctl status fleet
输出 'active (running)' 确认 fleet 服务正在运行,而输出 ' ...; enabled;. .' 确认 fleet 服务将在系统启动时自动启动。此外,你可以看到 fleet 的启动命令,它是使用配置文件 ' /etc/fleet/fleet.yml ' 运行的。

配置 UFW 防火墙
在此步骤中,你将在 Ubuntu 上设置并运行 UFW 防火墙。你将开放 OpenSSH 服务端口以及 fleet osquery manager 使用的 TCP 端口 8080,然后你将启动并启用 UFW。
运行以下 ufw 命令将 OpenSSH 服务和 TCP 端口 8080 添加到 UFW。输出 'Rules update' 确认新配置已添加到 UFW。
sudo ufw allow OpenSSH
sudo ufw allow 8080/tcp
接下来,运行以下命令启动并启用 UFW 防火墙。出现提示时,输入 y 并按 ENTER 继续。这样,UFW 防火墙应该处于运行并已启用状态。
sudo ufw enable
输出:

使用以下命令验证 UFW 防火墙的状态。你应该看到诸如 'Status: active' 之类的输出,确认 UFW 正在运行且已启用。此外,你会看到 OpenSSH 服务端口 8080/tcp 可用并已添加到 UFW 防火墙。
sudo ufw status
输出:

配置 Fleet Osquery Manager
在此步骤中,你将设置 fleet osquery manager 部署。你将设置第一个用户,并通过 web 浏览器完成部署设置。
打开你的 web 浏览器,并访问你的 fleet osquery manager 安装所在的域名,使用 TCP 端口 8080(例如:https://fleet.howtoforge.local:8080/ )。
在第一步中,系统会要求你为 fleet 部署设置第一个用户。输入你的全名、电子邮件地址和密码,然后点击 Next 。

输入组织详细信息,然后再次点击 Next 。

对于 fleet URL,你可以保持其默认设置并点击 Next 。

重新检查你的 fleet 配置,然后点击 Confirm 完成部署。

成功后,你应该会看到 fleet 管理仪表板。

现在 fleet osquery manager 安装已完成。至此,你可以通过多种方式将新主机添加到 fleet,例如使用 Orbit(osquery 运行时)、用于带桌面环境主机(包括 Windows 和 macOS)的 fleet Desktop,或通过生成 fleet secret 和 TLS 证书手动添加。
通过 Orbit Osquery Runtime 添加主机
Orbit 是一个 osquery 运行时和自动更新器,可让你轻松部署 osquery 并管理配置。Orbit 是 fleet 的一个 agent,它可以与 Fleet 配合使用,也可以单独使用,而 Fleet 也可以在有或没有 Orbit 的情况下使用。
在此步骤中,你将学习如何为基于 Debian 的发行版生成 Orbit 软件包安装程序。然后,你将学习如何通过 Orbit 将新主机添加到 fleet。
首先,返回 fleet 仪表板并点击 ' Add Hosts '。

选择 ' Advanced ' 选项卡,下载 fleet 证书 ' fleet.pem' ,然后复制将用于为特定发行版创建 orbit 软件包的命令。你可以为 RPM、DEB 和 pkg(用于 macOS)生成 orbit 安装程序。

接下来,将你下载的 fleet 证书上传到 fleet 服务器。在此示例中,你将使用 ' scp ' 将 'fleet.pem ' 文件上传到 fleet 服务器。
scp fleet.pem
[email protected]
:/opt/
上传 fleet.pem 证书后,运行将用于生成 orbit 安装程序软件包的命令行。请务必将参数 '--type' 更改为你偏好的软件包类型。
在此示例中,你将为基于 Debian 的发行版生成 orbit 软件包。对于基于 RPM 的发行版,你可以将参数 ' --type ' 更改为 ' rpm ',而 ' pkg ' 软件包可用于为 macOS 生成 orbit 安装程序。
fleetctl package --type=deb --fleet-url=https://fleet.howtoforge.local:8080 \
--enroll-secret=TSSnHvy350wlo1HmIeLcxRS3DrQO+Vah \
--fleet-certificate=/opt/fleet.pem
输出:

过程完成后,你可以在当前工作目录中看到文件 'fleet-osquery_version.deb'。
接下来,通过以下 dpkg 命令安装生成的 orbit 软件包。安装完成后,orbit 软件包将创建一个新的服务文件 ' orbit.service ',使你能够通过 systemctl 管理 orbit。
sudo dpkg -i fleet-osquery_version.deb
输出:

orbit 安装完成后,运行以下 systemctl 命令启动 orbit 服务。然后,验证状态以确保 orbit 服务正在运行。
sudo systemctl start orbit
sudo systemctl status orbit
你应该收到类似如下的输出 —— orbit 服务为 ' active (running) ',并且已启用,将在系统启动时自动运行。

现在返回 fleet 仪表板,你应该会看到新主机 ' fleet.howtoforge.local ' 已添加到 fleet osquery manager。

点击主机名 ' fleet.howtoforge.local ' 以获取有关该主机的详细信息。

至此,你已通过 Orbit osquery runtime 将一台主机添加到 fleet osquery manager。你还为基于 Debian 的发行版生成了 orbit 安装程序。
设置 Fleetctl 以管理 Fleet
Fleetctl 或 Fleet control 是一个用于从终端管理 fleet 部署的命令行工具。Fleetctl 允许你管理配置和查询,生成 osquery 安装程序,并与 fleet 一起启用 GitOps 工作流。
在此步骤中,你将设置 fleetctl 并连接到你已安装的 fleet osquery manager。
首先,运行以下命令设置默认的 fleet URL。请务必更改域名,并确保你使用的是 HTTPS 安全连接。这样,你将在 ' default ' 上下文/配置文件中设置 fleet 连接。
fleetctl config set --address https://fleet.howtoforge.local:8080
使用以下命令登录到你的 fleet osquery manager。请务必更改以下命令中的电子邮件地址。
fleetctl login --email
[email protected]
现在输入你用于登录 fleet 仪表板的密码。成功后,你应该收到诸如 ' Fleet login successful and context configured! ' 之类的输出。

登录 fleet 后,运行以下 fleetctl 命令来验证你的配置。
检查 fleet 上可用主机的列表。
fleetctl get hosts
输出 —— 你应该看到主机 'fleet.howtoforge.local ' 在 fleet 上可用,其 osquery 版本为 v5.7.0。

检查 fleet 上可用用户的列表。
fleetctl get ur
输出 —— 你应该看到你创建的 fleet 用户。

至此,你已配置 fleetctl 并连接到你的 fleet 部署。你现在可以从终端服务器设置主机和查询、管理更新、运行实时查询。
结论
在本教程中,你已在 Ubuntu 220.04 服务器上安装了 Fleet Osquery Manager。你已将 Fleet 与 MySQL 作为数据库后端以及 Redis 用于接收队列和缓存数据一同安装。此外,你已使用 SSL/TLS 证书加固了 Fleet,并将 Fleet 作为 systemd 服务运行,使你能够通过 systemctl 命令工具轻松管理 Fleet。
最后,你已通过 Orbit(osquery 运行时)将一台主机添加到 Fleet,并为基于 Debian 的发行版生成了软件包安装程序。此外,你已配置 fleetctl 并登录到 Fleet,以便从终端服务器管理和配置主机。
考虑到这一点,你现在可以通过 orbit 或手动通过普通的 osqueryd 服务将新主机添加到 Fleet osquery manager。此外,你可以定义新的查询来监控你的主机,设置漏洞处理以允许你通过 Fleet 检测 CVE,等等。从 Fleet 的官方文档中了解更多关于 Fleet 的信息。