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

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.
- Резервная копия конфигурации и базы данных настроена.
План действий (коротко)
- Установить MySQL, настроить root‑пароль и запустить mysql_secure_installation.
- Установить Redis и запустить сервис.
- Создать базу fleetdb и пользователя fleetadmin.
- Скачать Fleet и fleetctl, распаковать и поместить бинарники в /usr/bin.
- Инициализировать базу Fleet и выполнить миграции.
- Создать /etc/fleet/fleet.yml с настройками MySQL, Redis и TLS.
- Создать systemd‑юнит для fleet, запустить и включить сервис.
- Открыть порт 8080 в firewalld.
- Завершить первоначальную настройку через веб‑интерфейс и добавить хост через Orbit.
1. Установка MySQL
В этом разделе мы установим MySQL, запустим сервис, зададим root‑пароль и запустим mysql_secure_installation.
Установка:
sudo dnf install mysql-serverПодтвердите установку, введя y.

Запуск и добавление в автозагрузку:
sudo systemctl start mysqld
sudo systemctl enable mysqldПроверка статуса:
sudo systemctl status mysqld
Задание пароля root (войдите в mysql shell):
sudo mysqlВ MySQL выполните (замените пароль на безопасный):
ALTER USER "root"@"localhost" IDENTIFIED WITH mysql_native_password BY "toor?p4ssw0rd";
exit
Запустите скрипт безопасности:
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
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;
Проверка привилегий пользователя fleetadmin:
SHOW GRANTS FOR fleetadmin@localhost;
Затем выход:
quit4. Загрузка и установка 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
Распаковка:
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
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” при успешном завершении.


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
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.

8. Первичная настройка через веб‑интерфейс Fleet
Откройте браузер и перейдите по адресу вашего домена с портом 8080, например:
https://fleet-rock.howtoforge.local:8080/
Через UI вы создаёте первого администратора (имя, e‑mail, пароль), указываете данные организации и подтверждаете настройки. После успешной настройки появится админская панель.


9. Добавление хостов через Orbit
Orbit — runtime‑агент для osquery, автоматизирующий обновления и регистрацию хоста в Fleet. Пример для RHEL‑совместимых систем.
Во Fleet Dashboard: Add Hosts → Advanced. Скачайте fleet.pem (сертификат) и скопируйте команду генерации пакета.

Скопируйте 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
Установите пакет:
sudo rpm -Uvh fleet-osquery_version.rpmЗапустите и проверьте сервис orbit:
sudo systemctl start orbit
sudo systemctl status orbitПосле успешного запуска хост появится в списке Fleet Hosts.

Просмотр деталей хоста в 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
Рекомендации по безопасности и 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 (конфиг и сертификаты).
- Проверяйте восстановление на тестовом стенде.
Отладка и распространённые проблемы
- Fleet не запускается (systemctl status показывает ошибку): проверьте журналы:
sudo journalctl -u fleet -b --no-pagerОшибка миграций / доступ к БД: проверьте доступность MySQL (telnet 3306) и правильность учётных данных в /etc/fleet/fleet.yml.
Сертификат не загружается: проверьте права на /etc/fleet/certs и отсутствие лишних символов в PEM файлах.
Host не регистрируется: проверьте enroll secret и корректность fleet URL в команде генерации пакета.
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)
- Подготовить сервер, домен и TLS сертификаты.
- Установить БД, Redis и проверить работоспособность.
- Сконфигурировать Fleet и выполнить миграции в тестовой среде.
- Настроить бэкап и мониторинг.
- Развернуть Fleet в production и подключить первые хосты через Orbit.
- Мониторить производительность и регулярно обновлять.
Тест‑кейсы и критерии приёмки
- Тест 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)
- Отключите подключение пользователей: firewall/cors.
- Остановите сервис fleet: sudo systemctl stop fleet.
- Восстановите БД из последнего дампа: mysql -u root -p fleetdb < dump.sql.
- Перезапустите сервис fleet и проверьте логи.
- Если проблема в сертификате — замените на резервный и перезапустите.
Пример 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.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента