Гид по технологиям

Развёртывание Fleet Osquery Manager на Rocky Linux 9

• 10 min read • DevOps • Обновлено 19 Nov 2025
Установка Fleet Osquery Manager на Rocky Linux 9
Установка Fleet Osquery Manager на Rocky Linux 9

В этом пошаговом руководстве показано, как установить и настроить Fleet (osquery manager) на сервере Rocky Linux 9 с MySQL в качестве бэкенда и Redis для очередей/кэша. Вы научитесь устанавливать MySQL и Redis, инициализировать базу Fleet, настроить systemd‑сервис, открыть порт в firewalld, добавить хост через Orbit и управлять установкой через fleetctl. В конце — чеклисты, рекомендации по безопасности, отладка и критерии приёмки.

Иллюстрация Fleet Osquery Manager

Fleet — open‑source менеджер для osquery, который позволяет поддерживать безопасные рабочие станции и серверы и вести точный инвентарь устройств. Fleet обеспечивает выполнение живых запросов, сбор логов, потоковую обработку событий и оперативную видимость серверов, контейнеров и конечных устройств (например, ноутбуков и настольных машин).

Fleet автоматически помогает выявлять устаревшее или уязвимое ПО, ошибки конфигурации и проблемы с MDM. Он полезен для команд IT, безопасности и соответствия требованиям (compliance). Fleet собирает события через osquery/агент с множества хостов и сохраняет данные в едином месте — доступном через веб‑интерфейс Fleet или через командную строку fleetctl.

В этом руководстве целевая платформа — Rocky Linux 9 (используются пакетный менеджер dnf и systemd). Команды и примеры ориентированы на Rocky Linux 9; при использовании другой ОС (например, Debian/Ubuntu) пакеты и менеджер пакетов отличаются.

Кому пригодится это руководство

  • Системным администраторам, разворачивающим Fleet в корпоративной сети.
  • Инженерам информационной безопасности, которые хотят централизованно собирать события osquery и обрабатывать уязвимости.
  • DevOps‑командам, которые хотят включить Fleet в GitOps‑процессы и автоматизировать живые запросы.

Важно: это руководство предполагает, что у вас есть доменное имя и действительные TLS сертификаты (Let’s Encrypt или другие).

Что будет установлено

  • MySQL (сервер баз данных) — хранение данных Fleet.
  • Redis — очередь результатов распределённых запросов и кэш.
  • Fleet (бинарный файл) и fleetctl (CLI).
  • Orbit (osquery runtime) — пример добавления хоста.

Основные обозначения

  • osquery — движок, который выполняет SQL‑подобные запросы к ОС и возвращает результаты.
  • Fleet — сервер/управляющий слой, предоставляющий UI и API для управления агентами.
  • Orbit — дистрибутивный агент/рантайм для osquery.

Важные требования (Prerequisites)

  • Сервер с Rocky Linux 9 (root или non‑root пользователь с sudo‑правами).
  • SELinux в permissive или правильно настроенный в enforcing (см. раздел о SELinux ниже).
  • Доменное имя, указывающее на IP сервера.
  • Сгенерированные и проверенные SSL/TLS сертификаты (PEM‑файлы).
  • Доступ в Интернет для загрузки бинарников и пакетов.

Критерии приёмки

  • Fleet запущен как systemd‑сервис и доступен по HTTPS:8080.
  • База данных Fleet успешно инициализирована (Migrations completed).
  • Минимум один хост подключён через Orbit и отображается в UI и в fleetctl.
  • Резервная копия конфигурации и базы данных настроена.

План действий (коротко)

  1. Установить MySQL, настроить root‑пароль и запустить mysql_secure_installation.
  2. Установить Redis и запустить сервис.
  3. Создать базу fleetdb и пользователя fleetadmin.
  4. Скачать Fleet и fleetctl, распаковать и поместить бинарники в /usr/bin.
  5. Инициализировать базу Fleet и выполнить миграции.
  6. Создать /etc/fleet/fleet.yml с настройками MySQL, Redis и TLS.
  7. Создать systemd‑юнит для fleet, запустить и включить сервис.
  8. Открыть порт 8080 в firewalld.
  9. Завершить первоначальную настройку через веб‑интерфейс и добавить хост через Orbit.

1. Установка MySQL

В этом разделе мы установим MySQL, запустим сервис, зададим root‑пароль и запустим mysql_secure_installation.

Установка:

sudo dnf install mysql-server

Подтвердите установку, введя y.

Установка MySQL

Запуск и добавление в автозагрузку:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Проверка статуса:

sudo systemctl status mysqld

Проверка статуса MySQL

Задание пароля root (войдите в mysql shell):

sudo mysql

В MySQL выполните (замените пароль на безопасный):

ALTER USER "root"@"localhost" IDENTIFIED WITH mysql_native_password BY "toor?p4ssw0rd";
exit

Установка пароля root MySQL

Запустите скрипт безопасности:

sudo mysql_secure_installation

Рекомендуемые ответы:

  • Set up VALIDATE PASSWORD component? — Y (по желанию)
  • Change root password? — n (если вы уже установили)
  • Remove anonymous users? — Y
  • Disallow root login remotely? — Y (если сервер не требует удалённого доступа)
  • Remove test database and access? — Y
  • Reload privilege tables? — Y

Note: Если у вас строгие политики паролей, выберите соответствующий уровень в VALIDATE PASSWORD.

2. Установка Redis

Redis используется для очередей распределённых запросов и кэша. Установка простая:

sudo dnf install redis

Запуск и автозапуск:

sudo systemctl start redis
sudo systemctl enable redis

Проверка статуса:

sudo systemctl status redis

Проверка Redis

3. Создание базы и пользователя MySQL для Fleet

Войдите в MySQL как root:

sudo mysql -u root -p

Создайте базу и пользователя (примеры имён и паролей — замените на свои):

CREATE DATABASE fleetdb;
CREATE USER fleetadmin@localhost IDENTIFIED BY 'S3curep4ssw0rd--=';
GRANT ALL PRIVILEGES ON fleetdb.* TO fleetadmin@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;

Создание базы и пользователя

Проверка пользователей:

SELECT USER,host FROM mysql.user;

Список пользователей MySQL

Проверка привилегий пользователя fleetadmin:

SHOW GRANTS FOR fleetadmin@localhost;

Проверка привилегий

Затем выход:

quit

4. Загрузка и установка Fleet и fleetctl

Fleet поставляется единым бинарным файлом; fleetctl — CLI для управления Fleet.

Создайте системного пользователя для работы сервиса:

sudo useradd -r -d /opt/fleet -s /usr/sbin/nologin fleet

Скачайте релизы (в примерах используется v4.26.0 — замените на актуальную версию если нужно):

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

Загрузка Fleet

Распаковка:

tar xf fleet_v4.26.0_linux.tar.gz
tar xf fleetctl_v4.26.0_linux.tar.gz

Копирование бинарников в PATH:

cp fleet_v4.26.0_linux/fleet /usr/bin/
cp fleetctl_v4.26.0_linux/fleetctl /usr/bin/

Проверьте, что /usr/bin в PATH:

echo $PATH

Проверка размещения бинарников и версий:

which fleet
which fleetctl
fleet version
fleetctl --version

Проверка версий Fleet

5. Инициализация базы Fleet

Инициализируйте базу данных Fleet, указав параметры MySQL (адрес, имя бд, пользователя, пароль). Замените параметры на ваши.

fleet prepare db \
--mysql_address=127.0.0.1:3306 --mysql_database=fleetdb --mysql_username=fleetadmin --mysql_password=S3curep4ssw0rd--=

Во время инициализации вы увидите процесс миграций: “Migrations completed” при успешном завершении.

Инициализация Fleet

Миграции Fleet завершены

6. Конфигурация Fleet (fleet.yml) и systemd‑сервис

Создайте директорию конфигурации и файлы:

sudo mkdir -p /etc/fleet/certs
sudo touch /etc/fleet/fleet.yml /etc/systemd/system/fleet.service

Скопируйте TLS сертификаты в /etc/fleet/certs и смените владельца:

sudo cp /etc/letsencrypt/live/fleet.howtoforge.local/fullchain.pem /etc/fleet/certs/
sudo cp /etc/letsencrypt/live/fleet.howtoforge.local/privkey.pem /etc/fleet/certs/
sudo chown -R fleet:fleet /etc/fleet

Откройте /etc/fleet/fleet.yml и укажите параметры подключения к MySQL, Redis и пути до TLS сертификатов:

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

Сохраните файл. Убедитесь, что права и владелец директории и файлов — fleet:fleet.

Создайте systemd‑юнит /etc/systemd/system/fleet.service со следующим содержимым:

[Unit]
Description=Fleet Osquery Fleet Manager
After=network.target

[Service]
User=fleet
Group=fleet
LimitNOFILE=8192
ExecStart=/usr/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

Перезагрузите менеджер systemd и включите сервис:

sudo systemctl daemon-reload
sudo systemctl start fleet
sudo systemctl enable fleet

Проверка статуса:

sudo systemctl status fleet

Запуск Fleet сервисом systemd

7. Настройка firewalld (порт Fleet)

Откройте порт 8080, используемый Fleet (если ваш конфиг использует другой порт, откройте его):

sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

В выводе в разделе ports должен появиться 8080/tcp.

Настройка firewalld

8. Первичная настройка через веб‑интерфейс Fleet

Откройте браузер и перейдите по адресу вашего домена с портом 8080, например:

https://fleet-rock.howtoforge.local:8080/

Через UI вы создаёте первого администратора (имя, e‑mail, пароль), указываете данные организации и подтверждаете настройки. После успешной настройки появится админская панель.

Настройка первого пользователя

Панель управления Fleet

9. Добавление хостов через Orbit

Orbit — runtime‑агент для osquery, автоматизирующий обновления и регистрацию хоста в Fleet. Пример для RHEL‑совместимых систем.

Во Fleet Dashboard: Add Hosts → Advanced. Скачайте fleet.pem (сертификат) и скопируйте команду генерации пакета.

Добавление хостов — секция Advanced

Скопируйте fleet.pem на сервер (scp пример):

scp fleet.pem [email protected]:/opt/

Сгенерируйте пакет Orbit (пример для rpm):

fleetctl package --type=rpm --fleet-url=https://fleet-rock.howtoforge.local:8080 \
--enroll-secret=ewQBXuvBJ70ZiFFkjOLFLp3V4POe+KTu \
--fleet-certificate=/opt/fleet.pem

Создание RPM пакета Orbit

Установите пакет:

sudo rpm -Uvh fleet-osquery_version.rpm

Запустите и проверьте сервис orbit:

sudo systemctl start orbit
sudo systemctl status orbit

После успешного запуска хост появится в списке Fleet Hosts.

Список хостов в Fleet

Просмотр деталей хоста в UI:

Детали хоста

10. Настройка fleetctl (CLI)

Настройте адрес Fleet по умолчанию и войдите от имени администратора:

fleetctl config set --address https://fleet-rock.howtoforge.local:8080
fleetctl login --email [email protected]

Введите пароль администратора. После успешного входа увидите сообщение о настройке контекста.

Проверка хостов и пользователей через CLI:

fleetctl get hosts
fleetctl get ur

Проверка через fleetctl

Рекомендации по безопасности и hardening

  • Храните секреты (пароли БД, enrol secret) в защищённом хранилище (Vault, секретный менеджер) и никогда не сохраняйте в открытом виде в /etc в репозитории.
  • Используйте сильные пароли и двухфакторную аутентификацию для админов Fleet, если поддерживается.
  • Ограничьте доступ к порту 8080 через firewall и/или обратный прокси с аутентификацией (nginx/traefik) и WAF, если необходимо.
  • Регулярно обновляйте Fleet, fleetctl и Orbit; проверяйте релиз‑ноты на предмет исправлений безопасности.
  • Разграничьте права в MySQL: дайте пользователю Fleet только необходимые привилегии и не используйте root для работы Fleet.
  • Настройте мониторинг состояния сервисов (systemd, MySQL, Redis) и алертинг.

Дополнительные советы для TLS:

  • Используйте сертификаты с правильным CN/SAN для домена Fleet.
  • Настройте автоматическое обновление сертификатов (certbot renew) и перезапуск сервиса при обновлении.

SELinux и AppArmor

Для Rocky Linux 9 SELinux обычно включён. В простом варианте можно временно перевести SELinux в permissive для установки и отладки:

sudo setenforce 0

Однако в продакшене рекомендуется настроить политики SELinux так, чтобы процессы fleet, mysql и redis имели необходимые контексты доступа. Если SELinux вызывает проблемы (permission denied в логах), проанализируйте audit.log и создайте локальные политики через audit2allow.

Резервное копирование и восстановление (бэкап)

  • Бэкап базы данных MySQL:
mysqldump -u fleetadmin -p fleetdb > fleetdb-$(date +%F).sql
  • Резервирование каталога /etc/fleet (конфиг и сертификаты).
  • Проверяйте восстановление на тестовом стенде.

Отладка и распространённые проблемы

  1. Fleet не запускается (systemctl status показывает ошибку): проверьте журналы:
sudo journalctl -u fleet -b --no-pager
  1. Ошибка миграций / доступ к БД: проверьте доступность MySQL (telnet 3306) и правильность учётных данных в /etc/fleet/fleet.yml.

  2. Сертификат не загружается: проверьте права на /etc/fleet/certs и отсутствие лишних символов в PEM файлах.

  3. Host не регистрируется: проверьте enroll secret и корректность fleet URL в команде генерации пакета.

  4. SELinux блокирует доступ: проверьте /var/log/audit/audit.log и создайте локальную политику.

Таблица распространённых ошибок и решений

  • Ошибка: “permission denied” при чтении сертификата. Решение: chown fleet:fleet /etc/fleet/certs/* и chmod 640.
  • Ошибка: “connection refused” к Redis. Решение: sudo systemctl status redis; проверить bind/port в /etc/redis.conf.
  • Ошибка: “access denied” при инициализации БД. Решение: проверить пароль и host у пользователя fleetadmin (localhost vs %).

Чеклисты по ролям

Администратор системы:

  • Установить и настроить MySQL и Redis.
  • Создать пользователя fleet и настроить права на /etc/fleet.
  • Запустить и включить systemd‑сервисы (fleet, redis, mysql).
  • Настроить резервное копирование базы и конфигов.

Инженер безопасности:

  • Проверить TLS (сертификаты, цепочку доверия).
  • Оценить политику паролей MySQL и VALIDATE PASSWORD.
  • Настроить ограничение доступа к порту 8080 и WAF/обратный прокси.
  • Провести аудит логов Fleet и osquery на предмет избытка прав или утечек.

Операционный инженер (DevOps):

  • Интегрировать fleetctl в CI/CD для генерации пакетов и секретов.
  • Автоматизировать обновление Orbit на хостах.
  • Настроить мониторинг статуса сервисов и алерты.

Mini‑методология развёртывания (короткий SOP)

  1. Подготовить сервер, домен и TLS сертификаты.
  2. Установить БД, Redis и проверить работоспособность.
  3. Сконфигурировать Fleet и выполнить миграции в тестовой среде.
  4. Настроить бэкап и мониторинг.
  5. Развернуть Fleet в production и подключить первые хосты через Orbit.
  6. Мониторить производительность и регулярно обновлять.

Тест‑кейсы и критерии приёмки

  • Тест 1: Fleet отвечает по HTTPS:8080 и возвращает UI. Критерий: HTTP 200 и отображение панели.
  • Тест 2: Инициализация БД завершена успешно. Критерий: вывод “Migrations completed”.
  • Тест 3: Host регистрируется через Orbit и отображается в UI и в fleetctl get hosts. Критерий: hostname в списке хостов.
  • Тест 4: Резервное восстановление базы. Критерий: восстановленная БД содержит таблицы Fleet.

Практические советы и альтернативы

  • Альтернатива MySQL: Fleet поддерживает PostgreSQL; если у вас уже есть корпоративный кластер Postgres, используйте его.
  • Обратный прокси: полезно ставить nginx/traefik перед Fleet, чтобы централизовать TLS, логирование и rate limiting.
  • GitOps: Fleet можно интегрировать с репозиториями для управления конфигурациями и запросами — используйте fleetctl для экспорта/импорта.

Совместимость и миграция

  • Если вы переходите с SQLite в MySQL/Postgres — используйте команды миграции fleet для перевода schema.
  • При обновлении версии Fleet проверьте release notes на предмет изменений API и миграций БД.

Edge cases (особые случаи)

  • Если вы используете приватный регистр пакетов или оффлайн‑окружение, загрузите бинарники Fleet заранее и перенесите их на сервер.
  • Если породовые шаблоны SELinux запрещают запуск, рассмотрите создание локальных политик через audit2allow вместо отключения SELinux.

Краткий глоссарий (1‑строчный)

  • Fleet — сервер управления osquery.
  • osquery — SQL‑интерфейс к состоянию ОС.
  • Orbit — runtime/агент osquery с автообновлением.
  • fleetctl — CLI для управления Fleet.
  • Redis — in‑memory data store, используется как очередь и кэш.

Быстрый сценарий отката (Incident runbook)

  1. Отключите подключение пользователей: firewall/cors.
  2. Остановите сервис fleet: sudo systemctl stop fleet.
  3. Восстановите БД из последнего дампа: mysql -u root -p fleetdb < dump.sql.
  4. Перезапустите сервис fleet и проверьте логи.
  5. Если проблема в сертификате — замените на резервный и перезапустите.

Пример decision‑flow (Mermaid)

flowchart TD
  A[Начало установки] --> B{MySQL установлен?}
  B -- Да --> C{Redis установлен?}
  B -- Нет --> B1[Установить MySQL]
  B1 --> B
  C -- Нет --> C1[Установить Redis]
  C1 --> C
  C -- Да --> D[Создать базу fleetdb и user]
  D --> E[Скачать Fleet, инициализировать DB]
  E --> F{Migrations completed?}
  F -- Да --> G[Создать /etc/fleet/fleet.yml и systemd]
  F -- Нет --> H[Проверить лог и учётные данные]
  H --> E
  G --> I[Открыть 8080 и зайти в UI]
  I --> J[Добавить хост через Orbit]
  J --> K[Готово]

Заключение

Вы успешно установили Fleet Osquery Manager на Rocky Linux 9, настроили MySQL и Redis, инициализировали базу, настроили systemd‑сервис, открыли порт в firewalld, добавили хост через Orbit и настроили fleetctl. Далее рекомендую:

  • Перенести секреты в безопасное хранилище;
  • Настроить автоматическое обновление сертификатов и мониторинг сервисов;
  • Внедрить регулярные проверки работоспособности и резервного копирования.

Удачной эксплуатации Fleet. Для подробной информации и передовых практик обратитесь к официальной документации Fleet.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро