在Ubuntu 18.04上安装和设置Kolide Fleet

在本指南中,我们将学习如何在Ubuntu 18.04上安装和设置Kolide Fleet。 科力德舰队 是开源的Osquery管理器,可将Osquery功能从一台机器扩展到整个机队。它查询动态的主机集,并观察数据流以立即进行分析和调查。

在Ubuntu 18.04上安装和设置Kolide Fleet

运行系统更新

将系统软件包重新同步到其最新版本。

apt update

下载Kolide Fleet Binary安装程序

Kolide Fleet应用程序以单个静态二进制文件的形式分发,该二进制文件为Fleet Web界面,Fleet应用程序API端点和osquery TLS服务器API端点提供服务。

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

wget https://github.com/kolide/fleet/releases/latest/download/fleet.zip

在Ubuntu 18.04上安装和设置Kolide Fleet

下载Fleet二进制文件后,提取适用于Linux平台的Kolide Fleet二进制文件。

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

上面的命令提取Kolide Fleet二进制文件, 舰队舰队 二进制到 舰队/ Linux 目录。

ls fleet/linux/
fleet  fleetctl

因此,Kolide Fleet二进制文件的安装就像将它们复制到二进制目录一样容易 /usr/bin

cp fleet/linux/* /usr/bin/

现在已安装Kolide Fleet;

ls /usr/bin/fleet*
/usr/bin/fleet /usr/bin/fleetctl

在Ubuntu 18.04上安装和设置Kolide Fleet依赖项

Kolide Fleet需要MySQL / MariaDB用于其数据库,而Redis服务器则用于摄取和排队分布式查询,缓存数据等的结果。

在Ubuntu 18.04上安装MariaDB 10.4数据库

创建MariaDB 10.4 APT存储库

apt install software-properties-common
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.4/ubuntu bionic main'

更新您的程序包缓存。

apt update

运行命令install MariaDB服务器。

apt install mariadb-server mariadb-client

运行MariaDB

MariaDB服务器已启动,并已启用,可在安装后在系统引导中运行。您可以检查状态;

systemctl status mariadb
systemctl is-enabled mariadb

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

mysql_secure_installation

创建Kolide舰队数据库和数据库用户

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

mysql -u root -p

接下来,创建Kolide数据库。

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

create database kolide;

使用上面创建的Kolide DB上的所有赠款创建Kollide Fleet数据库用户。

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

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

flush privileges;exit

在Ubuntu 18.04上安装Redis

运行以下命令以在Ubuntu 18.04上安装Redis。

apt install redis

安装后,Redis设置为启动并在系统引导时启用。

在Ubuntu 18.04上运行Kolide Fleet Server

初始化Kolide舰队数据库

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

fleet prepare db --mysql_address=127.0.0.1:3306 --mysql_database=kolide --mysql_username=kolideadmin [email protected]

如果初始化完成,则应获取输出,

Migrations completed.

生成SSL / TLS证书

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

注意: 如果您如本演示中所述使用“自签名证书”,请不要使用通配符,否则主机注册将无法进行。

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/kolide.key -out /etc/ssl/certs/kolide.cert -subj "/CN=kolide.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=kolide --mysql_username=kolideadmin [email protected] 
--server_cert=/etc/ssl/certs/kolide.cert --server_key=/etc/ssl/private/kolide.key 
--logging_json

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

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

测试科立德舰队

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

Kolide Fleet已安装完毕,因此您需要运行以下命令以验证它可以使用以下命令成功运行 机队服务 命令如下所示。

fleet serve --mysql_address=127.0.0.1:3306 
--mysql_database=kolide --mysql_username=kolideadmin [email protected] 
--server_cert=/etc/ssl/certs/kolide.cert --server_key=/etc/ssl/private/kolide.key 
--logging_json --auth_jwt_key=WS+Q2v6RyJdZgJDCHFWgak5HtxzPDhH8

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

{"component":"service","err":null,"method":"ListUsers","took":"921.991µs","ts":"2020-04-12T07:06:41.184166743Z","user":"none"}
{"address":"0.0.0.0:8080","msg":"listening","transport":"https","ts":"2020-04-12T07:06:41.185827799Z"}

按Ctrl + c停止Kolide Fleet服务器。

在Ubuntu 18.04上创建Kolide Fleet Systemd服务单元

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

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

[Service]
LimitNOFILE=8192
ExecStart=/usr/bin/fleet serve 
  --mysql_address=127.0.0.1:3306 
  --mysql_database=kolide 
  --mysql_username=kolideadmin 
  [email protected] 
  --redis_address=127.0.0.1:6379 
  --server_cert=/etc/ssl/certs/kolide.cert 
  --server_key=/etc/ssl/private/kolide.key 
  --auth_jwt_key=WS+Q2v6RyJdZgJDCHFWgak5HtxzPDhH8 
  --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

启动并启用Kolide Fleet服务。

systemctl enable --now kolide-fleet

检查状态;

systemctl status kolide-fleet
● kolide-fleet.service - Kolide Fleet Osquery Fleet Manager
   Loaded: loaded (/etc/systemd/system/kolide-fleet.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-04-12 10:23:44 EAT; 3s ago
 Main PID: 6777 (fleet)
    Tasks: 6 (limit: 1108)
   CGroup: /system.slice/kolide-fleet.service
           └─6777 /usr/bin/fleet serve --mysql_address=127.0.0.1:3306 --mysql_database=kolide --mysql_username=kolideadmin [email protected] 

Apr 12 10:23:44 u18 systemd[1]: Started Kolide Fleet Osquery Fleet Manager.
Apr 12 10:23:44 u18 fleet[6777]: {"component":"service","err":null,"method":"ListUsers","took":"218.912µs","ts":"2020-04-12T07:23:44.414494933Z","user"
Apr 12 10:23:44 u18 fleet[6777]: {"address":"0.0.0.0:8080","msg":"listening","transport":"https","ts":"2020-04-12T07:23:44.418368662Z"}

访问Kolide Fleet Web界面

可以使用URL在浏览器上访问Kolide Fleet https://:8080

设置您的用户名,密码,电子邮件,组织详细信息,然后进入Kollide Web界面。

向Kolide Fleet添加新主机

接下来,在要注册的主机服务器上安装osquery。我们在先前的指南中已经介绍了在Debian 10和Ubuntu 18.04上安装osquery的方法,请参见下面的链接;

如何在Ubuntu 18.04上安装Osquery

在Debian 10 Buster上安装Osquery

安装osquery后,通过导航到将主机添加到Kolide 主机>添加新主机

当您单击 添加新主机,则会弹出如下所示的向导,其中包含有关如何将主机添加到舰队实例的说明。

添加Kolide Fleet实例Ubuntu 18.04

要注册osquery主机,您需要密钥和TLS证书。因此,复制密钥并单击 Fetch Fleet Certificate 去下载。

在要注册Kolide舰队的主机上,按以下步骤安装密钥和证书;

echo "qzAJao+jKVsoZi6Ck1OgheS5VPhfqPRc" > /var/osquery/secret

将TLS证书复制到正在Kolide Fleet上注册的主机。用主机IP /地址替换主机地址。

scp kolide.kifarunix-demo.com_8080.pem [email protected]host-address:kolide.kifarunix-demo.com.pem
sudo cp kolide.kifarunix-demo.com.pem /var/osquery/

在正在注册的主机上,验证TLS服务器证书;

openssl s_client -connect kolide.kifarunix-demo.com:8080 -CAfile /var/osquery/kolide.kifarunix-demo.com.pem
---
SSL handshake has read 1353 bytes and written 391 bytes
Verification: OK
---

接下来,停止 osqueryd 如果正在运行;

systemctl stop osqueryd

在要注册的主机上使用以下选项运行osqueryd,以替换 –enroll_secret_path–tls_server_certs 相应地。

/usr/bin/osqueryd --enroll_secret_path=/var/osquery/secret 
--tls_server_certs=/var/osquery/kolide.kifarunix-demo.com.pem 
--tls_hostname=kolide.kifarunix-demo.com:8080 
--host_identifier=uuid 
--enroll_tls_endpoint=/api/v1/osquery/enroll 
--config_plugin=tls 
--config_tls_endpoint=/api/v1/osquery/config 
--config_refresh=10 
--disable_distributed=false 
--distributed_plugin=tls 
--distributed_interval=3 
--distributed_tls_max_attempts=3 
--distributed_tls_read_endpoint=/api/v1/osquery/distributed/read 
--distributed_tls_write_endpoint=/api/v1/osquery/distributed/write 
-logger_plugin=tls 
--logger_tls_endpoint=/api/v1/osquery/log 
--logger_tls_period=10

如果一切顺利,您应该会看到类似以下的输出:

I0412 12:13:40.467630 15162 events.cpp:863] Event publisher not enabled: auditeventpublisher: Publisher disabled via configuration
I0412 12:13:40.467813 15162 events.cpp:863] Event publisher not enabled: syslog: Publisher disabled via configuration
I0412 12:13:40.498387 15175 distributed.cpp:117] Executing distributed query: kolide_detail_query_network_interface: select ia.interface, address, mask, broadcast, point_to_point,
                               id.interface, mac, id.type, mtu, metric, ipackets, opackets,
                               ibytes, obytes, ierrors, oerrors, idrops, odrops, last_change
                        from interface_details id join interface_addresses ia
                               on ia.interface = id.interface where length(mac) > 0
                               order by (ibytes + obytes) desc
I0412 12:13:40.501811 15175 distributed.cpp:117] Executing distributed query: kolide_detail_query_os_version: select * from os_version limit 1
I0412 12:13:40.503866 15175 distributed.cpp:117] Executing distributed query: kolide_detail_query_osquery_flags: select name, value from osquery_flags where name in ("distributed_interval", "config_tls_refresh", "config_refresh", "logger_tls_period")
I0412 12:13:40.506964 15175 distributed.cpp:117] Executing distributed query: kolide_detail_query_osquery_info: select * from osquery_info limit 1
I0412 12:13:40.509542 15175 distributed.cpp:117] Executing distributed query: kolide_detail_query_system_info: select * from system_info limit 1
I0412 12:13:40.518357 15175 distributed.cpp:117] Executing distributed query: kolide_detail_query_uptime: select * from uptime limit 1
I0412 12:13:40.522809 15175 distributed.cpp:117] Executing distributed query: kolide_label_query_6: select 1;
I0412 12:13:40.526031 15175 distributed.cpp:117] Executing distributed query: kolide_label_query_8: select 1 from os_version where platform = 'ubuntu';
I0412 12:13:40.528300 15175 distributed.cpp:117] Executing distributed query: kolide_label_query_9: select 1 from os_version where platform = 'centos' or name like '%centos%'

现在,您的主机应已注册到Kolide Fleet Server上。

在Kolide Fleet Manager上注册Ubuntu 18.04 osquery

要使用上面的详细信息注册详细信息运行Osquery,请编辑其服务文件,使其外观如下所示;

vim /etc/systemd/system/osqueryd.service
[Unit]
Description=The osquery Daemon
After=network.service syslog.service

[Service]
TimeoutStartSec=0
EnvironmentFile=/etc/default/osqueryd
ExecStartPre=/bin/sh -c "if [ ! -f $FLAG_FILE ]; then touch $FLAG_FILE; fi"
ExecStartPre=/bin/sh -c "if [ -f $LOCAL_PIDFILE ]; then mv $LOCAL_PIDFILE $PIDFILE; fi"
ExecStart=/usr/bin/osqueryd 
  --flagfile $FLAG_FILE 
  --config_path $CONFIG_FILE 
  --enroll_secret_path=/var/osquery/secret 
  --tls_server_certs=/var/osquery/server.pem 
  --tls_hostname=kolide.kifarunix-demo.com:8080 
  --host_identifier=uuid 
  --enroll_tls_endpoint=/api/v1/osquery/enroll 
  --config_plugin=tls 
  --config_tls_endpoint=/api/v1/osquery/config 
  --config_refresh=10 
  --disable_distributed=false 
  --distributed_plugin=tls 
  --distributed_interval=3 
  --distributed_tls_max_attempts=3 
  --distributed_tls_read_endpoint=/api/v1/osquery/distributed/read 
  --distributed_tls_write_endpoint=/api/v1/osquery/distributed/write 
  -logger_plugin=tls 
  --logger_tls_endpoint=/api/v1/osquery/log 
  --logger_tls_period=10
Restart=on-failure
KillMode=process
KillSignal=SIGTERM

[Install]
WantedBy=multi-user.target

重新加载系统守护程序。

systemctl daemon-reload

启动osqueryd。

systemctl start osqueryd

检查状态;

systemctl status osqueryd
● osqueryd.service - The osquery Daemon
   Loaded: loaded (/etc/systemd/system/osqueryd.service; disabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-04-12 12:31:14 EAT; 9s ago
  Process: 15281 ExecStartPre=/bin/sh -c if [ -f $LOCAL_PIDFILE ]; then mv $LOCAL_PIDFILE $PIDFILE; fi (code=exited, status=0/SUCCESS)
  Process: 15279 ExecStartPre=/bin/sh -c if [ ! -f $FLAG_FILE ]; then touch $FLAG_FILE; fi (code=exited, status=0/SUCCESS)
 Main PID: 15282 (osqueryd)
    Tasks: 18 (limit: 2315)
   CGroup: /system.slice/osqueryd.service
           ├─15282 /usr/bin/osqueryd --flagfile /etc/osquery/osquery.flags --config_path /etc/osquery/osquery.conf --enroll_secret_path=/var/osquery/se
           └─15284 /usr/bin/osqueryd
...

从Kolide Fleet Osquery Manager查询主机

主机注册后,您可以直接从Kolide Fleet查询它们。

例如,要使用查询查询非系统用户:

select username,directory,uid,gid,shell from users where uid >= 1000;

单击左侧面板上的查询>创建新查询。定义查询的名称,查询本身,描述,目标主机。

在Ubuntu 18.04上安装和设置Kolide Fleet

单击运行以执行查询。您可以根据需要保存查询。

在Ubuntu 18.04上安装和设置Kolide Fleet

和繁荣!您已使Kolide Fleet在Ubuntu 18.04上工作,并且能够查询运行Osquery的远程主机。这标志着指南的结尾,说明了如何在Ubuntu 18.04上安装和设置Kolide Fleet。

Sidebar