在Ubuntu 20.04上安装Fleet Osquery Manager

在本教程中,您将学习如何安装 舰队 Ubuntu 20.04上的osquery管理器。随着2020年11月4日Kolide舰队的正式退役, 舰队 提供与Kolide Fleet相同的功能。根据其 Github仓库,“ Fleet是使用最广泛的开源osquery管理器。 通过Fleet部署osquery可以进行可编程实时查询,流日志,并可以有效管理50,000多个服务器,容器和笔记本电脑中的osquery。 这对于同时与多个设备通话非常有用。”

在Ubuntu上安装Fleet Osquery Manager

先决条件

为了在Ubuntu上安装Fleet osquery manager,有一些要求。在我们的设置中,我们将使用Ubuntu 20.04作为基本操作系统。

安装MySQL数据库

Fleet使用MySQL作为其主要数据库

在此设置中,我们将使用MariaDB数据库。因此,创建最新的MariaDB(当前为v10.5)APT存储库

apt install software-properties-common
apt-key adv --fetch-keys https://mariadb.org/mariadb_release_signing_key.asc
echo "deb [arch=amd64,arm64,ppc64el] http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.5/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/mariadb-10.5.list

如果需要,可以选择 其他MariaDB镜像已关闭到您所在的区域

更新您的程序包缓存。

apt update

在Ubuntu 20.04上运行命令install MariaDB server 10.5

apt install mariadb-server

MariaDB已启动,并已启用,可在安装后在系统启动时运行。

systemctl status mariadb.service
● mariadb.service - MariaDB 10.5.9 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/mariadb.service.d
             └─migrated-from-my.cnf-settings.conf
     Active: active (running) since Sat 2021-03-20 07:22:04 UTC; 6min ago
       Docs: man:mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
   Main PID: 6859 (mariadbd)
     Status: "Taking your SQL requests now..."
      Tasks: 9 (limit: 4620)
     Memory: 69.9M
     CGroup: /system.slice/mariadb.service
             └─6859 /usr/sbin/mariadbd

Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[6880]: mysql
Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[6880]: performance_schema
Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[6880]: Phase 6/7: Checking and upgrading tables
Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[6880]: Processing databases
Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[6880]: information_schema
Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[6880]: performance_schema
Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[6880]: Phase 7/7: Running 'FLUSH PRIVILEGES'
Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[6880]: OK
Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[8111]: Checking for insecure root accounts.
Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[8115]: Triggering myisam-recover for all MyISAM tables and aria-recover for all Aria tables

创建车队数据库和数据库用户

运行初始的MySQL安全脚本, mysql_secure_installation,以删除匿名数据库用户,测试表,禁用远程root登录。

mysql_secure_installation

默认情况下,MariaDB 10.5默认使用unix_socket进行身份验证,因此,只需运行即可登录, mysql -u root。但是,如果启用了密码认证,则只需运行即可;

mysql -u root -p

接下来,创建Fleet数据库。

笔记: 此处使用的数据库数据库名称不是标准的。选择您喜欢的任何名称。

create database fleetdb;

使用上面创建的Fleet DB上的所有授权来创建Fleet数据库用户。

grant all on fleetdb.* to [email protected] identified by '[email protected]';

重新加载特权表并退出数据库;

flush privileges;
exit

在Ubuntu 20.04上安装Redis

Fleet使用Redis提取并排队分布式查询,缓存数据等的结果。

要安装Redis的最新稳定版本,您需要安装 redislabs/redis 通过运行以下命令来打包存储库;

add-apt-repository ppa:redislabs/redis --yes

接下来,更新程序包缓存;

apt update

在Ubuntu 20.04上安装Redis;

apt install redis

同样,Redis服务器也已启动并可以在系统引导时运行。

systemctl status redis-server.service
● redis-server.service - Advanced key-value store
     Loaded: loaded (/lib/systemd/system/redis-server.service; disabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-03-20 07:34:27 UTC; 5min ago
       Docs: http://redis.io/documentation,
             man:redis-server(1)
   Main PID: 10391 (redis-server)
     Status: "Ready to accept connections"
      Tasks: 5 (limit: 4620)
     Memory: 2.4M
     CGroup: /system.slice/redis-server.service
             └─10391 /usr/bin/redis-server 127.0.0.1:6379

Mar 20 07:34:27 ubuntu20 systemd[1]: Starting Advanced key-value store...
Mar 20 07:34:27 ubuntu20 systemd[1]: Started Advanced key-value store.

在Ubuntu 20.04上安装Fleet Osquery Manager

在Ubuntu 20.04上安装Fleet二进制文件

Fleet应用程序作为单个静态二进制文件分发。此二进制文件具有以下功能:

  • Fleet Web界面
  • Fleet应用程序API端点
  • osquery TLS服务器API端点

要下载最新的Fleet二进制文件,只需执行以下命令即可;

curl -LO https://github.com/fleetdm/fleet/releases/latest/download/fleet.zip

解压缩Linux平台的二进制文件:

unzip fleet.zip 'linux/*' -d ~/fleet

cp ~/fleet/linux/* /usr/local/bin/

将Fleet二进制文件复制到二进制文件目录;

cp ~/fleet/linux/* /usr/local/bin/

验证二进制文件是否到位;

which fleet fleetctl
/usr/local/bin/fleet
/usr/local/bin/fleetctl

在Ubuntu 20.04上运行Fleet Server初始化Fleet数据库

要在安装和设置以上所有要求后初始化Fleet基础架构,请使用 fleet prepare db 如下;

fleet prepare db --mysql_address=127.0.0.1:3306 --mysql_database=fleetdb --mysql_username=fleetadmin [email protected]

如果初始化成功完成,则应该获得输出,

Migrations completed.

生成SSL / TLS证书

Fleet服务器用于运行主HTTPS服务器。因此,运行以下命令以生成自签名证书。

笔记: 如果您如本演示中所述使用“自签名证书”,请不要使用通配符,以免主机注册无效。

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/fleet.key -out /etc/ssl/certs/fleet.cert -subj "/CN=osquery.kifarunix-demo.com/"

如果可以,请使用来自首选受信任CA的商业TLS证书。

生成Json Web令牌

产生随机 Json Web Token (JWT) 用于签名和验证会话令牌的密钥。运行 机队服务 用于命令 –auth_jwt_key 选项。 没有此选项,舰队服务器将无法启动

为了帮助自动生成令牌,只需运行不带此选项的Fleet Server命令即可。

fleet serve --mysql_address=127.0.0.1:3306 
--mysql_database=fleetdb --mysql_username=fleetadmin [email protected] 
--server_cert=/etc/ssl/certs/fleet.cert --server_key=/etc/ssl/private/fleet.key 
--logging_json

该命令将失败,并为您自动生成一个随机密钥。

################################################################################
# ERROR:
#   A value must be supplied for --auth_jwt_key or --auth_jwt_key_path. This value is used to create
#   session tokens for users.
#
#   Consider using the following randomly generated key:
#   cw1h9ww06XwWDOwDDBpi9pxwNqEVf6Ig
################################################################################

测试Fleet Osquery Manager

一旦获得随机密钥,请使用提供的选项和密钥重新运行命令。

舰队已设置完毕,因此您需要运行以下命令以验证其是否可以成功运行 机队服务 命令如下所示。

fleet serve --mysql_address=127.0.0.1:3306 
--mysql_database=fleetdb --mysql_username=fleetadmin [email protected] 
--server_cert=/etc/ssl/certs/fleet.cert --server_key=/etc/ssl/private/fleet.key 
--logging_json  --auth_jwt_key=cw1h9ww06XwWDOwDDBpi9pxwNqEVf6Ig

如果一切顺利,您应该看到Fleet服务器现在正在运行 0.0.0.0:8080 因此可以在 https:// <服務器IP>:8080

{"component":"service","err":null,"level":"info","method":"ListUsers","took":"651.223µs","ts":"2021-03-20T08:12:04.045682218Z","user":"none"}
{"address":"0.0.0.0:8080","msg":"listening","transport":"https","ts":"2021-03-20T08:12:04.046253256Z"}

按Ctrl + c停止Fleet服务器。

在Ubuntu 20.04上创建Fleet Systemd服务单元

确认Fleet运行正常后,创建一个systemd服务文件。

vim /etc/systemd/system/fleet.service
[Unit]
Description=Fleet Osquery Fleet Manager
After=network.target

[Service]
LimitNOFILE=8192
ExecStart=/usr/local/bin/fleet serve 
  --mysql_address=127.0.0.1:3306 
  --mysql_database=fleetdb 
  --mysql_username=fleetadmin 
  [email protected] 
  --redis_address=127.0.0.1:6379 
  --server_cert=/etc/ssl/certs/fleet.cert 
  --server_key=/etc/ssl/private/fleet.key 
  --auth_jwt_key=cw1h9ww06XwWDOwDDBpi9pxwNqEVf6Ig 
  --logging_json
ExecStop=/bin/kill -15 $(ps aux | grep "fleet serve" | grep -v grep | awk '{print$2}')

[Install]
WantedBy=multi-user.target

保存并退出文件。

重新加载systemd配置。

systemctl daemon-reload

启动并启用Fleet服务。

systemctl enable --now fleet

检查状态;

systemctl status fleet
● fleet.service - Fleet Osquery Fleet Manager
     Loaded: loaded (/etc/systemd/system/fleet.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-03-20 08:19:12 UTC; 4s ago
   Main PID: 11844 (fleet)
      Tasks: 8 (limit: 4620)
     Memory: 14.1M
     CGroup: /system.slice/fleet.service
             └─11844 /usr/local/bin/fleet serve --mysql_address=127.0.0.1:3306 --mysql_database=fleetdb --mysql_username=fleetadmin [email protected] --redis_address>

Mar 20 08:19:12 ubuntu20 systemd[1]: Started Fleet Osquery Fleet Manager.
Mar 20 08:19:12 ubuntu20 fleet[11844]: {"component":"service","err":null,"level":"info","method":"ListUsers","took":"378.122µs","ts":"2021-03-20T08:19:12.73338155Z","user">
Mar 20 08:19:12 ubuntu20 fleet[11844]: {"address":"0.0.0.0:8080","msg":"listening","transport":"https","ts":"2021-03-20T08:19:12.733806227Z"}

访问Fleet Web界面

可以使用URL在浏览器上访问车队 https:// <服務器IP_OR_主機名>:8080

如果防火墙正在运行,请打开此端口以允许外部访问。

ufw allow 8080/tcp

然后从浏览器访问Fleet Web界面。并继续完成在Ubuntu 20.04上的Fleet Osquery管理器的设置;

创建管理员用户;

输入您的组织详细信息,名称和徽标网址。

设置Fleet服务器URL。

在Ubuntu 20.04上安装Fleet osquery Manager

提交详细信息,然后转到Fleet Web界面。

在Ubuntu 20.04上安装Fleet osquery Manager

到此为止,我们的教程结束了如何在Ubuntu 20.04上安装Fleet Osquery Manager。在下一个教程中,我们将学习如何将Osquery代理注册到Fleet Manager。

参考

安装车队

Sidebar